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.
Sample questions
Section titled “Sample questions”- “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”
How to call it
Section titled “How to call it”- Dynamic, the default surface: call
gitlab_execute_actionwithactionset to the action’s ID, such asgroup.analytics_issues_count, and its parameters inparams.gitlab_find_actionfinds an ID from a description of the task. - Meta (
GITLAB_MCP_TOOL_SURFACE=meta): callgitlab_groupwithactionset to the action’s name, such asanalytics_issues_count, and its parameters inparams. - Individual (
GITLAB_MCP_TOOL_SURFACE=individual): call the action’s own tool, such asgitlab_get_recently_created_issues_count, with its parameters as the arguments.
Availability
Section titled “Availability”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.
Actions
Section titled “Actions”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.
| Action | Tier | Individual |
|---|---|---|
group.analytics_issues_count | Premium | gitlab_get_recently_created_issues_count |
group.analytics_members_count | Premium | gitlab_get_recently_added_members_count |
group.analytics_mr_count | Premium | gitlab_get_recently_created_mr_count |
group.archive | Free | gitlab_group_archive |
group.badge_add | Free | gitlab_add_group_badge |
group.badge_delete | Free | gitlab_delete_group_badge |
group.badge_edit | Free | gitlab_edit_group_badge |
group.badge_get | Free | gitlab_get_group_badge |
group.badge_list | Free | gitlab_list_group_badges |
group.badge_preview | Free | gitlab_preview_group_badge |
group.create | Free | gitlab_group_create |
group.credential_delete_ssh_key | Ultimate | gitlab_delete_group_ssh_key |
group.credential_list_pats | Ultimate | gitlab_list_group_personal_access_tokens |
group.credential_list_ssh_keys | Ultimate | gitlab_list_group_ssh_keys |
group.credential_revoke_pat | Ultimate | gitlab_revoke_group_personal_access_token |
group.delete | Free | gitlab_group_delete |
group.epic_board_get | Premium | gitlab_group_epic_board_get |
group.epic_board_list | Premium | gitlab_group_epic_board_list |
group.epic_create | Premium | gitlab_epic_create |
group.epic_delete | Premium | gitlab_epic_delete |
group.epic_discussion_add_note | Premium | gitlab_add_epic_discussion_note |
group.epic_discussion_create | Premium | gitlab_create_epic_discussion |
group.epic_discussion_delete_note | Premium | gitlab_delete_epic_discussion_note |
group.epic_discussion_get | Premium | gitlab_get_epic_discussion |
group.epic_discussion_list | Premium | gitlab_list_epic_discussions |
group.epic_discussion_update_note | Premium | gitlab_update_epic_discussion_note |
group.epic_get | Premium | gitlab_epic_get |
group.epic_get_links | Premium | gitlab_epic_get_links |
group.epic_issue_assign | Premium | gitlab_epic_issue_assign |
group.epic_issue_list | Premium | gitlab_epic_issue_list |
group.epic_issue_remove | Premium | gitlab_epic_issue_remove |
group.epic_issue_update | Premium | gitlab_epic_issue_update |
group.epic_list | Premium | gitlab_epic_list |
group.epic_note_create | Premium | gitlab_epic_note_create |
group.epic_note_delete | Premium | gitlab_epic_note_delete |
group.epic_note_get | Premium | gitlab_epic_note_get |
group.epic_note_list | Premium | gitlab_epic_note_list |
group.epic_note_update | Premium | gitlab_epic_note_update |
group.epic_update | Premium | gitlab_epic_update |
group.event_epic_label_get | Premium | gitlab_get_group_epic_label_event |
group.event_epic_label_list | Premium | gitlab_list_group_epic_label_events |
group.get | Free | gitlab_group_get |
group.group_billable_member_memberships_list | Premium | gitlab_list_billable_member_memberships |
group.group_billable_member_remove | Premium | gitlab_remove_billable_group_member |
group.group_billable_members_list | Premium | gitlab_list_billable_group_members |
group.group_board_create | Premium | gitlab_group_board_create |
group.group_board_create_list | Free | gitlab_group_board_list_create |
group.group_board_delete | Premium | gitlab_group_board_delete |
group.group_board_delete_list | Free | gitlab_group_board_list_delete |
group.group_board_get | Free | gitlab_group_board_get |
group.group_board_get_list | Free | gitlab_group_board_list_get |
group.group_board_list | Free | gitlab_group_board_list |
group.group_board_list_lists | Free | gitlab_group_board_list_lists |
group.group_board_update | Free | gitlab_group_board_update |
group.group_board_update_list | Free | gitlab_group_board_list_update |
group.group_export_download | Free | gitlab_download_group_export |
group.group_export_schedule | Free | gitlab_schedule_group_export |
group.group_import_file | Free | gitlab_import_group_from_file |
group.group_label_create | Free | gitlab_group_label_create |
group.group_label_delete | Free | gitlab_group_label_delete |
group.group_label_get | Free | gitlab_group_label_get |
group.group_label_list | Free | gitlab_group_label_list |
group.group_label_subscribe | Free | gitlab_group_label_subscribe |
group.group_label_unsubscribe | Free | gitlab_group_label_unsubscribe |
group.group_label_update | Free | gitlab_group_label_update |
group.group_member_add | Free | gitlab_group_member_add |
group.group_member_edit | Free | gitlab_group_member_edit |
group.group_member_get | Free | gitlab_group_member_get |
group.group_member_get_inherited | Free | gitlab_group_member_get_inherited |
group.group_member_remove | Free | gitlab_group_member_remove |
group.group_member_share | Free | gitlab_group_share |
group.group_member_unshare | Free | gitlab_group_unshare |
group.group_milestone_burndown | Premium | gitlab_group_milestone_burndown_events |
group.group_milestone_create | Free | gitlab_group_milestone_create |
group.group_milestone_delete | Free | gitlab_group_milestone_delete |
group.group_milestone_get | Free | gitlab_group_milestone_get |
group.group_milestone_issues | Free | gitlab_group_milestone_issues |
group.group_milestone_list | Free | gitlab_group_milestone_list |
group.group_milestone_merge_requests | Free | gitlab_group_milestone_merge_requests |
group.group_milestone_update | Free | gitlab_group_milestone_update |
group.group_relations_list_status | Free | gitlab_list_group_relations_export_status |
group.group_relations_schedule | Free | gitlab_schedule_group_relations_export |
group.group_upload_delete_by_id | Free | gitlab_delete_group_markdown_upload_by_id |
group.group_upload_delete_by_secret | Free | gitlab_delete_group_markdown_upload_by_secret |
group.group_upload_list | Free | gitlab_list_group_markdown_uploads |
group.hook_add | Premium | gitlab_group_hook_add |
group.hook_delete | Premium | gitlab_group_hook_delete |
group.hook_delete_custom_header | Premium | gitlab_group_hook_delete_custom_header |
group.hook_delete_url_variable | Premium | gitlab_group_hook_delete_url_variable |
group.hook_edit | Premium | gitlab_group_hook_edit |
group.hook_get | Premium | gitlab_group_hook_get |
group.hook_list | Premium | gitlab_group_hook_list |
group.hook_resend_event | Premium | gitlab_group_hook_resend_event |
group.hook_set_custom_header | Premium | gitlab_group_hook_set_custom_header |
group.hook_set_url_variable | Premium | gitlab_group_hook_set_url_variable |
group.hook_test | Premium | gitlab_group_hook_test |
group.invited_groups | Free | gitlab_group_invited_list |
group.issues | Free | gitlab_issue_list_group |
group.ldap_link_add | Premium | gitlab_group_ldap_link_add |
group.ldap_link_delete | Premium | gitlab_group_ldap_link_delete |
group.ldap_link_delete_for_provider | Premium | gitlab_group_ldap_link_delete_for_provider |
group.ldap_link_list | Premium | gitlab_group_ldap_link_list |
group.ldap_sync | Premium | gitlab_group_ldap_sync |
group.list | Free | gitlab_group_list |
group.list_provisioned_users | Premium | gitlab_group_list_provisioned_users |
group.members | Free | gitlab_group_members_list |
group.projects | Free | gitlab_group_projects |
group.protected_branch_get | Premium | gitlab_group_protected_branch_get |
group.protected_branch_list | Premium | gitlab_group_protected_branch_list |
group.protected_branch_protect | Premium | gitlab_group_protected_branch_protect |
group.protected_branch_unprotect | Premium | gitlab_group_protected_branch_unprotect |
group.protected_branch_update | Premium | gitlab_group_protected_branch_update |
group.protected_env_get | Premium | gitlab_group_protected_environment_get |
group.protected_env_list | Premium | gitlab_group_protected_environment_list |
group.protected_env_protect | Premium | gitlab_group_protected_environment_protect |
group.protected_env_unprotect | Premium | gitlab_group_protected_environment_unprotect |
group.protected_env_update | Premium | gitlab_group_protected_environment_update |
group.push_rule_add | Premium | gitlab_group_add_push_rule |
group.push_rule_delete | Premium | gitlab_group_delete_push_rule |
group.push_rule_edit | Premium | gitlab_group_edit_push_rule |
group.push_rule_get | Premium | gitlab_group_get_push_rules |
group.release_list | Free | gitlab_group_release_list |
group.restore | Free | gitlab_group_restore |
group.saml_link_add | Premium | gitlab_group_saml_link_add |
group.saml_link_delete | Premium | gitlab_group_saml_link_delete |
group.saml_link_get | Premium | gitlab_group_saml_link_get |
group.saml_link_list | Premium | gitlab_group_saml_link_list |
group.saml_users_list | Premium | gitlab_group_saml_users_list |
group.search | Free | gitlab_group_search |
group.security_settings_update | Ultimate | gitlab_update_group_secret_push_protection |
group.service_account_create | Free | gitlab_group_service_account_create |
group.service_account_delete | Free | gitlab_group_service_account_delete |
group.service_account_get | Free | gitlab_group_service_account_get |
group.service_account_list | Free | gitlab_group_service_account_list |
group.service_account_pat_create | Free | gitlab_group_service_account_pat_create |
group.service_account_pat_list | Free | gitlab_group_service_account_pat_list |
group.service_account_pat_revoke | Free | gitlab_group_service_account_pat_revoke |
group.service_account_pat_rotate | Free | gitlab_group_service_account_pat_rotate |
group.service_account_update | Free | gitlab_group_service_account_update |
group.share_with_group | Free | gitlab_group_share_with_group |
group.shared_projects | Free | gitlab_group_shared_projects_list |
group.shared_with | Free | gitlab_group_shared_with_list |
group.ssh_cert_create | Premium | gitlab_create_group_ssh_certificate |
group.ssh_cert_delete | Premium | gitlab_delete_group_ssh_certificate |
group.ssh_cert_list | Premium | gitlab_list_group_ssh_certificates |
group.subgroups | Free | gitlab_subgroups_list |
group.transfer | Free | gitlab_group_transfer |
group.transfer_locations | Free | gitlab_group_transfer_locations |
group.transfer_project | Free | gitlab_group_transfer_project |
group.unarchive | Free | gitlab_group_unarchive |
group.unshare_from_group | Free | gitlab_group_unshare_from_group |
group.update | Free | gitlab_group_update |
group.upload_avatar | Free | gitlab_group_upload_avatar |
group.wiki_create | Premium | gitlab_group_wiki_create |
group.wiki_delete | Premium | gitlab_group_wiki_delete |
group.wiki_edit | Premium | gitlab_group_wiki_edit |
group.wiki_get | Premium | gitlab_group_wiki_get |
group.wiki_list | Premium | gitlab_group_wiki_list |
group.analytics_issues_count
Section titled “group.analytics_issues_count”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, actionanalytics_issues_count - Individual tool:
gitlab_get_recently_created_issues_count - Tier: Premium
- Behavior: read-only, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_path | string | yes | Full path of the group (e.g. my-group or parent/child) |
group.analytics_members_count
Section titled “group.analytics_members_count”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, actionanalytics_members_count - Individual tool:
gitlab_get_recently_added_members_count - Tier: Premium
- Behavior: read-only, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_path | string | yes | Full path of the group (e.g. my-group or parent/child) |
group.analytics_mr_count
Section titled “group.analytics_mr_count”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, actionanalytics_mr_count - Individual tool:
gitlab_get_recently_created_mr_count - Tier: Premium
- Behavior: read-only, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_path | string | yes | Full path of the group (e.g. my-group or parent/child) |
group.archive
Section titled “group.archive”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, actionarchive - Individual tool:
gitlab_group_archive - Tier: Free
- Behavior: writes, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string/integer | yes | Group ID or URL-encoded path |
group.badge_add
Section titled “group.badge_add”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, actionbadge_add - Individual tool:
gitlab_add_group_badge - Tier: Free
- Behavior: writes, not idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string/integer | yes | Group ID or URL-encoded path |
image_url | string | yes | Badge image URL (supports placeholders) |
link_url | string | yes | Badge link URL (supports placeholders) |
name | string | no | Badge name |
group.badge_delete
Section titled “group.badge_delete”Delete a group badge by badge_id. Returns: a success confirmation. See also:
group.badge_list,group.badge_get.
- Meta-tool:
gitlab_group, actionbadge_delete - Individual tool:
gitlab_delete_group_badge - Tier: Free
- Behavior: writes, destructive (needs confirmation), idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
badge_id | integer | yes | Badge ID |
group_id | string/integer | yes | Group ID or URL-encoded path |
group.badge_edit
Section titled “group.badge_edit”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, actionbadge_edit - Individual tool:
gitlab_edit_group_badge - Tier: Free
- Behavior: writes, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
badge_id | integer | yes | Badge ID |
group_id | string/integer | yes | Group ID or URL-encoded path |
image_url | string | no | New badge image URL |
link_url | string | no | New badge link URL |
name | string | no | New badge name. Use name, not new_name |
group.badge_get
Section titled “group.badge_get”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, actionbadge_get - Individual tool:
gitlab_get_group_badge - Tier: Free
- Behavior: read-only, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
badge_id | integer | yes | Badge ID |
group_id | string/integer | yes | Group ID or URL-encoded path |
group.badge_list
Section titled “group.badge_list”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, actionbadge_list - Individual tool:
gitlab_list_group_badges - Tier: Free
- Behavior: read-only, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string/integer | yes | Group ID or URL-encoded path |
name | string | no | Filter by badge name |
order_by | string | no | Column to order results by for keyset pagination (e.g. id, name) |
page | integer | no | Page number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward. |
page_token | string | no | Keyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’. |
pagination | string | no | Pagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost. |
per_page | integer | no | Items per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large. |
sort | string (asc, desc) | no | Sort direction (asc, desc) |
group.badge_preview
Section titled “group.badge_preview”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, actionbadge_preview - Individual tool:
gitlab_preview_group_badge - Tier: Free
- Behavior: read-only, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string/integer | yes | Group ID or URL-encoded path |
image_url | string | yes | Badge image URL with placeholders |
link_url | string | yes | Badge link URL with placeholders |
name | string | no | Badge name |
group.create
Section titled “group.create”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, actioncreate - Individual tool:
gitlab_group_create - Tier: Free
- Behavior: writes, not idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
name | string | yes | Group name |
allow_personal_snippets | boolean | no | Allow members to create personal snippets |
auto_ban_user_on_excessive_projects_download (Ultimate) | boolean | no | Automatically ban users who exceed the unique project download limit (Ultimate) |
auto_devops_enabled | boolean | no | Enable Auto DevOps for projects in this group |
crm_enabled | boolean | no | Enable Customer Relations Management (CRM) for the group |
default_branch | string | no | Default branch name |
default_branch_protection | integer | no | Deprecated: default branch protection level (0=none,1=partial,2=full,3=initial push,4=fully protected). Prefer default_branch_protection_defaults |
default_branch_protection_defaults | object | no | Default branch protection settings object |
description | string | no | Group description |
duo_availability | string (default_on, default_off, never_on) | no | GitLab Duo availability (default_on, default_off, never_on) |
emails_disabled | boolean | no | Deprecated: disable email notifications. Prefer emails_enabled |
emails_enabled | boolean | no | Enable email notifications |
enabled_git_access_protocol | string (ssh, http, all) | no | Allowed Git access protocol (ssh, http, all) |
experiment_features_enabled | boolean | no | Enable experimental features |
extra_shared_runners_minutes_limit | integer | no | Extra shared runner compute-minutes (administrators only) |
lfs_enabled | boolean | no | Enable Git LFS |
math_rendering_limits_enabled | boolean | no | Enable math rendering limits |
membership_lock | boolean | no | Prevent members from being added to projects in this group |
mentions_disabled | boolean | no | Disable @-mention notifications |
organization_id | integer | no | Organization ID to create the group in (GitLab.com multi-organization. Defaults to the default organization) |
parent_id | integer | no | Parent group ID (creates a subgroup) |
path | string | no | Group URL path (defaults to kebab-case of name) |
project_creation_level | string (noone, maintainer, developer, administrator) | no | Who can create projects (noone, maintainer, developer) |
request_access_enabled | boolean | no | Allow users to request access |
require_two_factor_authentication | boolean | no | Require two-factor authentication for members |
share_with_group_lock | boolean | no | Prevent sharing projects in this group with other groups |
shared_runners_minutes_limit | integer | no | Shared runner compute-minutes limit (administrators only) |
subgroup_creation_level | string (owner, maintainer) | no | Who can create subgroups (owner, maintainer) |
two_factor_grace_period | integer | no | Grace period in hours before two-factor authentication is enforced |
unique_project_download_limit (Ultimate) | integer | no | Max number of unique projects a user can download before being banned (Ultimate) |
unique_project_download_limit_alertlist (Ultimate) | integer[] | no | User IDs notified when the unique project download limit is exceeded (Ultimate) |
unique_project_download_limit_allowlist (Ultimate) | string[] | no | Usernames excluded from the unique project download limit (Ultimate) |
unique_project_download_limit_interval_in_seconds (Ultimate) | integer | no | Time window in seconds for the unique project download limit (Ultimate) |
visibility | string (private, internal, public) | no | Visibility level (private, internal, public) |
web_based_commit_signing_enabled | boolean | no | Enable web-based commit signing for projects in this group |
wiki_access_level | string (disabled, private, enabled) | no | Wiki access level (disabled, private, enabled) |
group.credential_delete_ssh_key
Section titled “group.credential_delete_ssh_key”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, actioncredential_delete_ssh_key - Individual tool:
gitlab_delete_group_ssh_key - Tier: Ultimate
- Behavior: writes, destructive (needs confirmation), idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string/integer | yes | Group ID or URL-encoded path |
key_id | integer | yes | SSH key ID |
group.credential_list_pats
Section titled “group.credential_list_pats”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, actioncredential_list_pats - Individual tool:
gitlab_list_group_personal_access_tokens - Tier: Ultimate
- Behavior: read-only, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string/integer | yes | Group ID or URL-encoded path |
created_after | string | no | Return tokens created on or after this date (YYYY-MM-DD) |
created_before | string | no | Return tokens created on or before this date (YYYY-MM-DD) |
last_used_after | string | no | Return tokens last used on or after this date (YYYY-MM-DD) |
last_used_before | string | no | Return tokens last used on or before this date (YYYY-MM-DD) |
order_by | string | no | Column to order keyset-paginated results by |
page | integer | no | Page number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward. |
page_token | string | no | Keyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’. |
pagination | string | no | Pagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost. |
per_page | integer | no | Items per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large. |
revoked | boolean | no | Filter by revoked status |
search | string | no | Filter tokens by name |
sort | string (asc, desc) | no | Sort order for keyset pagination: ‘asc’ or ‘desc’ |
state | string (active, inactive) | no | Filter by token state: active or inactive |
group.credential_list_ssh_keys
Section titled “group.credential_list_ssh_keys”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, actioncredential_list_ssh_keys - Individual tool:
gitlab_list_group_ssh_keys - Tier: Ultimate
- Behavior: read-only, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string/integer | yes | Group ID or URL-encoded path |
created_after | string | no | Return keys created on or after this date (YYYY-MM-DD) |
created_before | string | no | Return keys created on or before this date (YYYY-MM-DD) |
expires_after | string | no | Return keys expiring on or after this date (YYYY-MM-DD) |
expires_before | string | no | Return keys expiring on or before this date (YYYY-MM-DD) |
order_by | string | no | Column to order keyset-paginated results by |
page | integer | no | Page number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward. |
page_token | string | no | Keyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’. |
pagination | string | no | Pagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost. |
per_page | integer | no | Items per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large. |
sort | string (asc, desc) | no | Sort order for keyset pagination: ‘asc’ or ‘desc’ |
group.credential_revoke_pat
Section titled “group.credential_revoke_pat”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, actioncredential_revoke_pat - Individual tool:
gitlab_revoke_group_personal_access_token - Tier: Ultimate
- Behavior: writes, destructive (needs confirmation), idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string/integer | yes | Group ID or URL-encoded path |
token_id | integer | yes | Personal access token ID |
group.delete
Section titled “group.delete”Delete a GitLab group and its projects. Returns: a success confirmation. See also:
group.restore,group.get,group.update.
- Meta-tool:
gitlab_group, actiondelete - Individual tool:
gitlab_group_delete - Tier: Free
- Behavior: writes, destructive (needs confirmation), idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string/integer | yes | Group ID or URL-encoded path |
full_path | string | no | Full path (required when permanently_remove=true) |
permanently_remove | boolean | no | Permanently remove instead of marking for deletion |
group.epic_board_get
Section titled “group.epic_board_get”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, actionepic_board_get - Individual tool:
gitlab_group_epic_board_get - Tier: Premium
- Behavior: read-only, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
board_id | integer | yes | Epic board ID |
group_id | string/integer | yes | Group ID or URL-encoded path |
group.epic_board_list
Section titled “group.epic_board_list”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, actionepic_board_list - Individual tool:
gitlab_group_epic_board_list - Tier: Premium
- Behavior: read-only, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string/integer | yes | Group ID or URL-encoded path |
order_by | string | no | Column by which to order results (keyset pagination) |
page | integer | no | Page number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward. |
page_token | string | no | Keyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’. |
pagination | string | no | Pagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost. |
per_page | integer | no | Items per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large. |
sort | string (asc, desc) | no | Sort direction (asc, desc) |
group.epic_create
Section titled “group.epic_create”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, actionepic_create - Individual tool:
gitlab_epic_create - Tier: Premium
- Behavior: writes, not idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
full_path | string | yes | Full path of the group (e.g. my-group) |
title | string | yes | Epic title |
assignee_ids | integer[] | no | Global IDs of assignees |
color | string | no | Epic color (hex format, e.g. #FF0000) |
confidential | boolean | no | Whether the epic is confidential |
create_source | string | no | Free-text label recording what triggered the creation. Used by GitLab for tracking only and never shown on the epic |
created_at | string | no | Creation 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 |
description | string | no | Epic description (Markdown supported) |
due_date | string | no | Due date (YYYY-MM-DD) |
health_status (Ultimate) | string (onTrack, needsAttention, atRisk) | no | Health status (onTrack/needsAttention/atRisk) |
label_ids | integer[] | no | Global IDs of labels |
linked_items (Ultimate) | object | no | Epics to link to the new one, all with the same link type |
milestone_id | integer | no | Global ID of the milestone to assign to the epic |
parent_id (Ultimate) | integer | no | Global ID of the parent epic, which makes this one a sub-epic in the same call |
start_date | string | no | Start date (YYYY-MM-DD) |
weight | integer | no | Weight of the epic |
group.epic_delete
Section titled “group.epic_delete”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, actionepic_delete - Individual tool:
gitlab_epic_delete - Tier: Premium
- Behavior: writes, destructive (needs confirmation), idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
epic_iid | integer | yes | Epic IID within the group |
full_path | string | yes | Full path of the group (e.g. my-group) |
group.epic_discussion_add_note
Section titled “group.epic_discussion_add_note”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, actionepic_discussion_add_note - Individual tool:
gitlab_add_epic_discussion_note - Tier: Premium
- Behavior: writes, not idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
body | string | yes | Note body (Markdown supported) |
discussion_id | string | yes | Discussion ID to reply to |
epic_iid | integer | yes | Epic IID within the group |
full_path | string | yes | Full path of the group (e.g. my-group) |
group.epic_discussion_create
Section titled “group.epic_discussion_create”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, actionepic_discussion_create - Individual tool:
gitlab_create_epic_discussion - Tier: Premium
- Behavior: writes, not idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
body | string | yes | Discussion body (Markdown supported) |
epic_iid | integer | yes | Epic IID within the group |
full_path | string | yes | Full path of the group (e.g. my-group) |
group.epic_discussion_delete_note
Section titled “group.epic_discussion_delete_note”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, actionepic_discussion_delete_note - Individual tool:
gitlab_delete_epic_discussion_note - Tier: Premium
- Behavior: writes, destructive (needs confirmation), idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
epic_iid | integer | yes | Epic IID within the group |
full_path | string | yes | Full path of the group (e.g. my-group) |
note_id | integer | yes | Note ID to delete |
group.epic_discussion_get
Section titled “group.epic_discussion_get”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, actionepic_discussion_get - Individual tool:
gitlab_get_epic_discussion - Tier: Premium
- Behavior: read-only, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
discussion_id | string | yes | Discussion ID |
epic_iid | integer | yes | Epic IID within the group |
full_path | string | yes | Full path of the group (e.g. my-group) |
group.epic_discussion_list
Section titled “group.epic_discussion_list”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, actionepic_discussion_list - Individual tool:
gitlab_list_epic_discussions - Tier: Premium
- Behavior: read-only, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
epic_iid | integer | yes | Epic IID within the group |
full_path | string | yes | Full path of the group (e.g. my-group or my-group/sub-group) |
after | string | no | Cursor for forward pagination (from previous response end_cursor) |
first | integer | no | Number of items to return (default 20, max 100) |
group.epic_discussion_update_note
Section titled “group.epic_discussion_update_note”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, actionepic_discussion_update_note - Individual tool:
gitlab_update_epic_discussion_note - Tier: Premium
- Behavior: writes, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
body | string | yes | Updated note body |
epic_iid | integer | yes | Epic IID within the group |
full_path | string | yes | Full path of the group (e.g. my-group) |
note_id | integer | yes | Note ID to update |
group.epic_get
Section titled “group.epic_get”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, actionepic_get - Individual tool:
gitlab_epic_get - Tier: Premium
- Behavior: read-only, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
epic_iid | integer | yes | Epic IID within the group |
full_path | string | yes | Full path of the group (e.g. my-group) |
group.epic_get_links
Section titled “group.epic_get_links”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, actionepic_get_links - Individual tool:
gitlab_epic_get_links - Tier: Premium
- Behavior: read-only, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
epic_iid | integer | yes | Epic IID within the group |
full_path | string | yes | Full path of the group (e.g. my-group) |
group.epic_issue_assign
Section titled “group.epic_issue_assign”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, actionepic_issue_assign - Individual tool:
gitlab_epic_issue_assign - Tier: Premium
- Behavior: writes, not idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
child_iid | integer | yes | IID of the issue to assign to the epic |
child_project_path | string | yes | Full project path of the issue to assign (e.g. my-group/my-project) |
epic_iid | integer | yes | Epic IID within the group |
full_path | string | yes | Full path of the group that contains the epic |
group.epic_issue_list
Section titled “group.epic_issue_list”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, actionepic_issue_list - Individual tool:
gitlab_epic_issue_list - Tier: Premium
- Behavior: read-only, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
epic_iid | integer | yes | Epic IID within the group |
full_path | string | yes | Full path of the group (e.g. my-group or my-group/sub-group) |
after | string | no | Cursor for forward pagination (from previous response end_cursor) |
before | string | no | Cursor for backward pagination (from previous response start_cursor). The page size comes from last, or from first when last is omitted |
first | integer | no | Number of items to return (default 20, max 100) |
last | integer | no | Number of items to return from the end of the range (backward pagination). Cannot be combined with first |
group.epic_issue_remove
Section titled “group.epic_issue_remove”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, actionepic_issue_remove - Individual tool:
gitlab_epic_issue_remove - Tier: Premium
- Behavior: writes, destructive (needs confirmation), idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
child_iid | integer | yes | IID of the issue to remove from the epic |
child_project_path | string | yes | Full project path of the issue to remove |
epic_iid | integer | yes | Epic IID within the group |
full_path | string | yes | Full path of the group that contains the epic |
group.epic_issue_update
Section titled “group.epic_issue_update”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, actionepic_issue_update - Individual tool:
gitlab_epic_issue_update - Tier: Premium
- Behavior: writes, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
child_id | string | yes | Work item GID of the issue to reorder (from list output id field) |
epic_iid | integer | yes | Epic IID within the group |
full_path | string | yes | Full path of the group that contains the epic |
adjacent_id | string | no | Work item GID of the reference issue to position relative to |
relative_position | string (BEFORE, AFTER) | no | Position relative to adjacent item: BEFORE or AFTER |
group.epic_list
Section titled “group.epic_list”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, actionepic_list - Individual tool:
gitlab_epic_list - Tier: Premium
- Behavior: read-only, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
full_path | string | yes | Full path of the group (e.g. my-group or my-group/sub-group) |
after | string | no | Cursor for forward pagination (from previous response end_cursor) |
assignee_usernames | string[] | no | Filter by assignee usernames |
assignee_wildcard_id | string (ANY, ME, NONE) | no | Filter by assignment state rather than by user: ANY, ME, or NONE |
author_id | integer | no | Filter 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_username | string | no | Filter by author username |
before | string | no | Cursor for backward pagination (from previous response start_cursor). The page size comes from last, or from first when last is omitted |
closed_after | string | no | Return epics closed on or after date (ISO 8601, e.g. 2025-01-01T00:00:00Z) |
closed_before | string | no | Return epics closed on or before date (ISO 8601, e.g. 2025-12-31T23:59:59Z) |
confidential | boolean | no | Filter by confidentiality |
created_after | string | no | Return epics created after date (ISO 8601, e.g. 2025-01-01T00:00:00Z) |
created_before | string | no | Return epics created before date (ISO 8601, e.g. 2025-12-31T23:59:59Z) |
due_after | string | no | Return epics due on or after date (ISO 8601, e.g. 2025-01-01T00:00:00Z) |
due_before | string | no | Return epics due on or before date (ISO 8601, e.g. 2025-12-31T23:59:59Z) |
first | integer | no | Number of items to return (default 20, max 100) |
health_status_filter (Ultimate) | string (ANY, NONE, atRisk, needsAttention, onTrack) | no | Filter by health status: onTrack, needsAttention, atRisk, or the wildcards ANY and NONE |
ids | string[] | no | Fetch 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 |
iids | string[] | no | Fetch only these epic IIDs, each as a decimal string (e.g. [“12”, “34”]) |
in | string[] (TITLE, DESCRIPTION) | no | Fields the search term is matched against: TITLE, DESCRIPTION, or both. Both are searched when omitted |
include_ancestors | boolean | no | Include epics from ancestor groups |
include_descendants | boolean | no | Include epics from descendant groups |
label_name | string[] | no | Filter by label names |
last | integer | no | Number of items to return from the end of the range (backward pagination). Cannot be combined with first |
milestone_title | string[] | no | Filter by the titles of the milestones assigned to the epic |
milestone_wildcard_id | string (ANY, NONE, STARTED, UPCOMING) | no | Filter by milestone assignment rather than by title: ANY, NONE, STARTED, or UPCOMING |
my_reaction_emoji | string | no | Filter by reaction emoji the authenticated user awarded (e.g. thumbsup or None/Any) |
order_by | string (created_at, updated_at, title) | no | Order epics by field (created_at, updated_at, title). Defaults to created_at |
page | integer | no | Page number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward. |
page_token | string | no | Keyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’. |
pagination | string | no | Pagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost. |
parent_ids (Ultimate) | string[] | no | Return only epics whose parent is one of these global IDs, in full gid://gitlab/WorkItem/123 form |
per_page | integer | no | Items per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large. |
search | string | no | Search in title and description |
sort | string (asc, desc) | no | Sort order (asc or desc). Defaults to desc |
state | string (opened, closed, all) | no | Filter by state (opened/closed/all) |
subscribed | string (EXPLICITLY_SUBSCRIBED, EXPLICITLY_UNSUBSCRIBED) | no | Filter by the authenticated user’s subscription: EXPLICITLY_SUBSCRIBED or EXPLICITLY_UNSUBSCRIBED |
updated_after | string | no | Return epics updated on or after date (ISO 8601, e.g. 2025-01-01T00:00:00Z) |
updated_before | string | no | Return epics updated on or before date (ISO 8601, e.g. 2025-12-31T23:59:59Z) |
weight | string | no | Filter by weight, as a decimal string (e.g. “5”) |
weight_wildcard_id | string (ANY, NONE) | no | Filter by whether a weight is set rather than by its value: ANY or NONE |
with_labels_details | boolean | no | If 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 |
group.epic_note_create
Section titled “group.epic_note_create”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, actionepic_note_create - Individual tool:
gitlab_epic_note_create - Tier: Premium
- Behavior: writes, not idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
body | string | yes | Note body (Markdown supported) |
epic_iid | integer | yes | Epic IID within the group |
full_path | string | yes | Full path of the group (e.g. my-group) |
group.epic_note_delete
Section titled “group.epic_note_delete”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, actionepic_note_delete - Individual tool:
gitlab_epic_note_delete - Tier: Premium
- Behavior: writes, destructive (needs confirmation), idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
epic_iid | integer | yes | Epic IID within the group |
full_path | string | yes | Full path of the group (e.g. my-group) |
note_id | integer | yes | ID of the note to delete |
group.epic_note_get
Section titled “group.epic_note_get”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, actionepic_note_get - Individual tool:
gitlab_epic_note_get - Tier: Premium
- Behavior: read-only, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
epic_iid | integer | yes | Epic IID within the group |
full_path | string | yes | Full path of the group (e.g. my-group) |
note_id | integer | yes | ID of the note to retrieve |
group.epic_note_list
Section titled “group.epic_note_list”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, actionepic_note_list - Individual tool:
gitlab_epic_note_list - Tier: Premium
- Behavior: read-only, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
epic_iid | integer | yes | Epic IID within the group |
full_path | string | yes | Full path of the group (e.g. my-group or my-group/sub-group) |
after | string | no | Cursor for forward pagination (from previous response end_cursor) |
first | integer | no | Number of items to return (default 20, max 100) |
group.epic_note_update
Section titled “group.epic_note_update”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, actionepic_note_update - Individual tool:
gitlab_epic_note_update - Tier: Premium
- Behavior: writes, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
body | string | yes | Updated note body (Markdown supported) |
epic_iid | integer | yes | Epic IID within the group |
full_path | string | yes | Full path of the group (e.g. my-group) |
note_id | integer | yes | ID of the note to update |
group.epic_update
Section titled “group.epic_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, actionepic_update - Individual tool:
gitlab_epic_update - Tier: Premium
- Behavior: writes, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
epic_iid | integer | yes | Epic IID within the group |
full_path | string | yes | Full path of the group (e.g. my-group) |
add_label_ids | integer[] | no | Global IDs of labels to add |
assignee_ids | integer[] | no | Global IDs of assignees (empty array to remove all) |
color | string | no | Epic color (hex format) |
description | string | no | Updated description (Markdown supported) |
due_date | string | no | Due date (YYYY-MM-DD) |
health_status (Ultimate) | string (onTrack, needsAttention, atRisk) | no | Health status (onTrack/needsAttention/atRisk) |
milestone_id | integer | no | Global ID of the milestone to assign to the epic |
parent_id (Ultimate) | integer | no | Global ID of the parent epic work item |
remove_label_ids | integer[] | no | Global IDs of labels to remove |
start_date | string | no | Start date (YYYY-MM-DD) |
state_event | string (CLOSE, REOPEN) | no | State event: CLOSE or REOPEN |
title | string | no | Updated epic title |
weight | integer | no | Weight of the epic |
group.event_epic_label_get
Section titled “group.event_epic_label_get”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, actionevent_epic_label_get - Individual tool:
gitlab_get_group_epic_label_event - Tier: Premium
- Behavior: read-only, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
epic_iid | integer | yes | Epic internal ID (IID) within the group |
group_id | string/integer | yes | Group ID or URL-encoded path |
label_event_id | integer | yes | Label event ID |
group.event_epic_label_list
Section titled “group.event_epic_label_list”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, actionevent_epic_label_list - Individual tool:
gitlab_list_group_epic_label_events - Tier: Premium
- Behavior: read-only, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
epic_iid | integer | yes | Epic internal ID (IID) within the group |
group_id | string/integer | yes | Group ID or URL-encoded path |
order_by | string | no | Column to order keyset-paginated results by (e.g. id) |
page | integer | no | Page number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward. |
page_token | string | no | Keyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’. |
pagination | string | no | Pagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost. |
per_page | integer | no | Items per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large. |
sort | string (asc, desc) | no | Sort direction for keyset pagination: asc or desc |
group.get
Section titled “group.get”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, actionget - Individual tool:
gitlab_group_get - Tier: Free
- Behavior: read-only, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string/integer | yes | Group ID or URL-encoded path |
order_by | string | no | Order embedded projects by field (only applies with with_projects) |
page | integer | no | Page number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward. |
page_token | string | no | Keyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’. |
pagination | string | no | Pagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost. |
per_page | integer | no | Items per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large. |
sort | string (asc, desc) | no | Sort direction for embedded projects (asc, desc) |
with_custom_attributes | boolean | no | Include custom attributes in the response |
with_projects | boolean | no | Include 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, actiongroup_billable_member_memberships_list - Individual tool:
gitlab_list_billable_member_memberships - Tier: Premium
- Behavior: read-only, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string/integer | yes | Group ID or URL-encoded path |
user_id | integer | yes | User ID of the billable member |
order_by | string | no | Column to order memberships by (e.g. id, name) |
page | integer | no | Page number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward. |
page_token | string | no | Keyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’. |
pagination | string | no | Pagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost. |
per_page | integer | no | Items per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large. |
sort | string (asc, desc) | no | Sort direction: asc or desc |
group.group_billable_member_remove
Section titled “group.group_billable_member_remove”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, actiongroup_billable_member_remove - Individual tool:
gitlab_remove_billable_group_member - Tier: Premium
- Behavior: writes, destructive (needs confirmation), idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string/integer | yes | Group ID or URL-encoded path |
user_id | integer | yes | User ID of the billable member to remove |
group.group_billable_members_list
Section titled “group.group_billable_members_list”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, actiongroup_billable_members_list - Individual tool:
gitlab_list_billable_group_members - Tier: Premium
- Behavior: read-only, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string/integer | yes | Group ID or URL-encoded path |
order_by | string | no | Column to order billable members by (e.g. id, name, username, last_activity_on) |
page | integer | no | Page number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward. |
page_token | string | no | Keyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’. |
pagination | string | no | Pagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost. |
per_page | integer | no | Items per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large. |
search | string | no | Filter billable members by name or username |
sort | string (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) | no | Sort order (e.g. name_asc, name_desc, last_activity_on_asc, last_activity_on_desc) |
group.group_board_create
Section titled “group.group_board_create”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, actiongroup_board_create - Individual tool:
gitlab_group_board_create - Tier: Premium
- Behavior: writes, not idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string/integer | yes | Group ID or path |
name | string | yes | Board name |
group.group_board_create_list
Section titled “group.group_board_create_list”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, actiongroup_board_create_list - Individual tool:
gitlab_group_board_list_create - Tier: Free
- Behavior: writes, not idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
board_id | integer | yes | Board ID |
group_id | string/integer | yes | Group ID or path |
label_id | integer | yes | Label ID to create a label list |
group.group_board_delete
Section titled “group.group_board_delete”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, actiongroup_board_delete - Individual tool:
gitlab_group_board_delete - Tier: Premium
- Behavior: writes, destructive (needs confirmation), idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
board_id | integer | yes | Board ID |
group_id | string/integer | yes | Group ID or path |
group.group_board_delete_list
Section titled “group.group_board_delete_list”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, actiongroup_board_delete_list - Individual tool:
gitlab_group_board_list_delete - Tier: Free
- Behavior: writes, destructive (needs confirmation), idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
board_id | integer | yes | Board ID |
group_id | string/integer | yes | Group ID or path |
list_id | integer | yes | Board list ID |
group.group_board_get
Section titled “group.group_board_get”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, actiongroup_board_get - Individual tool:
gitlab_group_board_get - Tier: Free
- Behavior: read-only, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
board_id | integer | yes | Board ID |
group_id | string/integer | yes | Group ID or path |
group.group_board_get_list
Section titled “group.group_board_get_list”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, actiongroup_board_get_list - Individual tool:
gitlab_group_board_list_get - Tier: Free
- Behavior: read-only, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
board_id | integer | yes | Board ID |
group_id | string/integer | yes | Group ID or path |
list_id | integer | yes | Board list ID |
group.group_board_list
Section titled “group.group_board_list”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, actiongroup_board_list - Individual tool:
gitlab_group_board_list - Tier: Free
- Behavior: read-only, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string/integer | yes | Group ID or path |
order_by | string | no | Column to order results by (keyset pagination) |
page | integer | no | Page number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward. |
page_token | string | no | Keyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’. |
pagination | string | no | Pagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost. |
per_page | integer | no | Items per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large. |
sort | string (asc, desc) | no | Sort direction (asc, desc) |
group.group_board_list_lists
Section titled “group.group_board_list_lists”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, actiongroup_board_list_lists - Individual tool:
gitlab_group_board_list_lists - Tier: Free
- Behavior: read-only, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
board_id | integer | yes | Board ID |
group_id | string/integer | yes | Group ID or path |
order_by | string | no | Column to order results by (keyset pagination) |
page | integer | no | Page number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward. |
page_token | string | no | Keyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’. |
pagination | string | no | Pagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost. |
per_page | integer | no | Items per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large. |
sort | string (asc, desc) | no | Sort direction (asc, desc) |
group.group_board_update
Section titled “group.group_board_update”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, actiongroup_board_update - Individual tool:
gitlab_group_board_update - Tier: Free
- Behavior: writes, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
board_id | integer | yes | Board ID |
group_id | string/integer | yes | Group ID or path |
assignee_id | integer | no | Assignee user ID |
labels | string[] | no | Board scope labels |
milestone_id | integer | no | Milestone ID |
name | string | no | Board name |
weight | integer | no | Board scope weight |
group.group_board_update_list
Section titled “group.group_board_update_list”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, actiongroup_board_update_list - Individual tool:
gitlab_group_board_list_update - Tier: Free
- Behavior: writes, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
board_id | integer | yes | Board ID |
group_id | string/integer | yes | Group ID or path |
list_id | integer | yes | Board list ID |
position | integer | yes | New position of the list |
group.group_export_download
Section titled “group.group_export_download”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, actiongroup_export_download - Individual tool:
gitlab_download_group_export - Tier: Free
- Behavior: read-only, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string/integer | yes | Group ID or URL-encoded path |
group.group_export_schedule
Section titled “group.group_export_schedule”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, actiongroup_export_schedule - Individual tool:
gitlab_schedule_group_export - Tier: Free
- Behavior: writes, not idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string/integer | yes | Group ID or URL-encoded path |
group.group_import_file
Section titled “group.group_import_file”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, actiongroup_import_file - Individual tool:
gitlab_import_group_from_file - Tier: Free
- Behavior: writes, not idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
file | string | yes | Canonical 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 |
name | string | yes | Name for the imported group |
path | string | yes | URL path for the imported group |
parent_id | integer | no | ID of the parent group to import into |
group.group_label_create
Section titled “group.group_label_create”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, actiongroup_label_create - Individual tool:
gitlab_group_label_create - Tier: Free
- Behavior: writes, not idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
color | string | yes | Label color in hex format (e.g. #FF0000) |
group_id | string/integer | yes | Group ID or URL-encoded path |
name | string | yes | Label name |
archived | boolean | no | Whether to create the label in archived state |
description | string | no | Label description |
priority | integer | no | Label priority (lower is higher priority, 0 means no priority) |
group.group_label_delete
Section titled “group.group_label_delete”Delete a group label permanently. Returns: a success confirmation. See also:
group.group_label_get,group.group_label_list.
- Meta-tool:
gitlab_group, actiongroup_label_delete - Individual tool:
gitlab_group_label_delete - Tier: Free
- Behavior: writes, destructive (needs confirmation), idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string/integer | yes | Group ID or URL-encoded path |
label_id | string/integer | yes | Label ID or name |
group.group_label_get
Section titled “group.group_label_get”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, actiongroup_label_get - Individual tool:
gitlab_group_label_get - Tier: Free
- Behavior: read-only, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string/integer | yes | Group ID or URL-encoded path |
label_id | string/integer | yes | Label ID or name |
group.group_label_list
Section titled “group.group_label_list”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, actiongroup_label_list - Individual tool:
gitlab_group_label_list - Tier: Free
- Behavior: read-only, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string/integer | yes | Group ID or URL-encoded path |
archived | boolean | no | Filter by archived state: true returns only archived labels, false only active labels. Omit for both |
include_ancestor_groups | boolean | no | Include labels from ancestor groups |
include_descendant_groups | boolean | no | Include labels from descendant groups |
only_group_labels | boolean | no | Only return group-level labels (exclude project labels) |
order_by | string | no | Column to order results by for keyset pagination (e.g. name, created_at, updated_at) |
page | integer | no | Page number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward. |
page_token | string | no | Keyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’. |
pagination | string | no | Pagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost. |
per_page | integer | no | Items per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large. |
search | string | no | Filter labels by keyword search |
sort | string (asc, desc) | no | Sort direction (asc, desc) |
with_counts | boolean | no | Include issue and merge request counts |
group.group_label_subscribe
Section titled “group.group_label_subscribe”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, actiongroup_label_subscribe - Individual tool:
gitlab_group_label_subscribe - Tier: Free
- Behavior: writes, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string/integer | yes | Group ID or URL-encoded path |
label_id | string/integer | yes | Label ID or name |
group.group_label_unsubscribe
Section titled “group.group_label_unsubscribe”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, actiongroup_label_unsubscribe - Individual tool:
gitlab_group_label_unsubscribe - Tier: Free
- Behavior: writes, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string/integer | yes | Group ID or URL-encoded path |
label_id | string/integer | yes | Label ID or name |
group.group_label_update
Section titled “group.group_label_update”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, actiongroup_label_update - Individual tool:
gitlab_group_label_update - Tier: Free
- Behavior: writes, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string/integer | yes | Group ID or URL-encoded path |
label_id | string/integer | yes | Label ID or name |
archived | boolean | no | Set true to archive, false to unarchive |
color | string | no | New label color in hex format |
description | string | no | New label description |
new_name | string | no | New label name |
priority | integer | no | New label priority (0 to remove) |
group.group_member_add
Section titled “group.group_member_add”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, actiongroup_member_add - Individual tool:
gitlab_group_member_add - Tier: Free
- Behavior: writes, not idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string/integer | yes | Group ID or URL-encoded path |
user_id | integer | yes | User ID to add |
access_level | integer | no | Access level (5=Minimal access (Premium/Ultimate), 10=Guest, 15=Planner, 20=Reporter, 25=Security Manager, 30=Developer, 40=Maintainer, 50=Owner) |
expires_at | string | no | Membership expiration date (YYYY-MM-DD) |
member_role_id | integer | no | Custom member role ID to assign. Ultimate only. The role’s base access level must match access_level |
username | string | no | Username to add (alternative to user_id) |
group.group_member_edit
Section titled “group.group_member_edit”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, actiongroup_member_edit - Individual tool:
gitlab_group_member_edit - Tier: Free
- Behavior: writes, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string/integer | yes | Group ID or URL-encoded path |
user_id | integer | yes | User ID |
access_level | integer | no | New 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_at | string | no | New membership expiration date (YYYY-MM-DD) |
member_role_id | integer | no | Custom member role ID to assign. Ultimate only. The role’s base access level must match access_level |
group.group_member_get
Section titled “group.group_member_get”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, actiongroup_member_get - Individual tool:
gitlab_group_member_get - Tier: Free
- Behavior: read-only, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string/integer | yes | Group ID or URL-encoded path |
user_id | integer | yes | User ID |
group.group_member_get_inherited
Section titled “group.group_member_get_inherited”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, actiongroup_member_get_inherited - Individual tool:
gitlab_group_member_get_inherited - Tier: Free
- Behavior: read-only, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string/integer | yes | Group ID or URL-encoded path |
user_id | integer | yes | User ID |
group.group_member_remove
Section titled “group.group_member_remove”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, actiongroup_member_remove - Individual tool:
gitlab_group_member_remove - Tier: Free
- Behavior: writes, destructive (needs confirmation), idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string/integer | yes | Group ID or URL-encoded path |
user_id | integer | yes | User ID to remove |
skip_subresources | boolean | no | Skip removal from subresources |
unassign_issuables | boolean | no | Unassign issues and merge requests |
group.group_member_share
Section titled “group.group_member_share”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, actiongroup_member_share - Individual tool:
gitlab_group_share - Tier: Free
- Behavior: writes, not idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string/integer | yes | Group ID or URL-encoded path to share |
share_group_id | integer | yes | Group ID to share with |
expires_at | string | no | Share expiration date (YYYY-MM-DD) |
group_access | integer | no | Access 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) | integer | no | Custom member role the share grants (Ultimate only). Its base access level must equal group_access |
group.group_member_unshare
Section titled “group.group_member_unshare”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, actiongroup_member_unshare - Individual tool:
gitlab_group_unshare - Tier: Free
- Behavior: writes, destructive (needs confirmation), idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string/integer | yes | Group ID or URL-encoded path |
share_group_id | integer | yes | Group ID to stop sharing with |
group.group_milestone_burndown
Section titled “group.group_milestone_burndown”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, actiongroup_milestone_burndown - Individual tool:
gitlab_group_milestone_burndown_events - Tier: Premium
- Behavior: read-only, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string/integer | yes | Group ID or URL-encoded path |
milestone_iid | integer | yes | Milestone IID (group-scoped). Use group.group_milestone_list to find IIDs |
order_by | string | no | Order results by field (e.g. created_at, updated_at) |
page | integer | no | Page number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward. |
page_token | string | no | Keyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’. |
pagination | string | no | Pagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost. |
per_page | integer | no | Items per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large. |
sort | string (asc, desc) | no | Sort direction (asc, desc) |
group.group_milestone_create
Section titled “group.group_milestone_create”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, actiongroup_milestone_create - Individual tool:
gitlab_group_milestone_create - Tier: Free
- Behavior: writes, not idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string/integer | yes | Group ID or URL-encoded path |
title | string | yes | Milestone title |
description | string | no | Milestone description |
due_date | string | no | Due date (YYYY-MM-DD) |
start_date | string | no | Start date (YYYY-MM-DD) |
group.group_milestone_delete
Section titled “group.group_milestone_delete”Delete a group milestone permanently. Returns: a success confirmation. See also:
group.group_milestone_get,group.group_milestone_update.
- Meta-tool:
gitlab_group, actiongroup_milestone_delete - Individual tool:
gitlab_group_milestone_delete - Tier: Free
- Behavior: writes, destructive (needs confirmation), idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string/integer | yes | Group ID or URL-encoded path |
milestone_iid | integer | yes | Milestone IID (group-scoped). Use group.group_milestone_list to find IIDs |
group.group_milestone_get
Section titled “group.group_milestone_get”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, actiongroup_milestone_get - Individual tool:
gitlab_group_milestone_get - Tier: Free
- Behavior: read-only, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string/integer | yes | Group ID or URL-encoded path |
milestone_iid | integer | yes | Milestone IID (group-scoped). Use group.group_milestone_list to find IIDs |
group.group_milestone_issues
Section titled “group.group_milestone_issues”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, actiongroup_milestone_issues - Individual tool:
gitlab_group_milestone_issues - Tier: Free
- Behavior: read-only, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string/integer | yes | Group ID or URL-encoded path |
milestone_iid | integer | yes | Milestone IID (group-scoped). Use group.group_milestone_list to find IIDs |
order_by | string | no | Order results by field (e.g. created_at, updated_at) |
page | integer | no | Page number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward. |
page_token | string | no | Keyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’. |
pagination | string | no | Pagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost. |
per_page | integer | no | Items per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large. |
sort | string (asc, desc) | no | Sort direction (asc, desc) |
group.group_milestone_list
Section titled “group.group_milestone_list”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, actiongroup_milestone_list - Individual tool:
gitlab_group_milestone_list - Tier: Free
- Behavior: read-only, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string/integer | yes | Group ID or URL-encoded path |
containing_date | string | no | Return milestones containing this date (YYYY-MM-DD) |
end_date | string | no | Return milestones with a due date on or before this date (YYYY-MM-DD) |
iids | integer[] | no | Filter by milestone IIDs |
include_ancestors | boolean | no | Include milestones from ancestor groups |
include_descendants | boolean | no | Include milestones from descendant groups |
include_parent_milestones | boolean | no | Deprecated (GitLab 16.7): use include_ancestors instead. Include milestones from parent groups |
order_by | string | no | Order results by field (e.g. created_at, updated_at, due_date, title) |
page | integer | no | Page number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward. |
page_token | string | no | Keyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’. |
pagination | string | no | Pagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost. |
per_page | integer | no | Items per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large. |
search | string | no | Search milestones by title or description |
search_title | string | no | Search milestones by title only |
sort | string (asc, desc) | no | Sort direction (asc, desc) |
start_date | string | no | Return milestones with a start date on or after this date (YYYY-MM-DD) |
state | string (active, closed) | no | Filter by state (active, closed) |
title | string | no | Filter by exact milestone title |
updated_after | string | no | Return milestones updated after date (YYYY-MM-DD) |
updated_before | string | no | Return milestones updated before date (YYYY-MM-DD) |
group.group_milestone_merge_requests
Section titled “group.group_milestone_merge_requests”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, actiongroup_milestone_merge_requests - Individual tool:
gitlab_group_milestone_merge_requests - Tier: Free
- Behavior: read-only, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string/integer | yes | Group ID or URL-encoded path |
milestone_iid | integer | yes | Milestone IID (group-scoped). Use group.group_milestone_list to find IIDs |
order_by | string | no | Order results by field (e.g. created_at, updated_at) |
page | integer | no | Page number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward. |
page_token | string | no | Keyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’. |
pagination | string | no | Pagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost. |
per_page | integer | no | Items per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large. |
sort | string (asc, desc) | no | Sort direction (asc, desc) |
group.group_milestone_update
Section titled “group.group_milestone_update”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, actiongroup_milestone_update - Individual tool:
gitlab_group_milestone_update - Tier: Free
- Behavior: writes, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string/integer | yes | Group ID or URL-encoded path |
milestone_iid | integer | yes | Milestone IID (group-scoped). Use group.group_milestone_list to find IIDs |
description | string | no | Milestone description |
due_date | string | no | Due date (YYYY-MM-DD) |
start_date | string | no | Start date (YYYY-MM-DD) |
state_event | string (close, activate) | no | State transition: activate or close |
title | string | no | Milestone title |
group.group_relations_list_status
Section titled “group.group_relations_list_status”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, actiongroup_relations_list_status - Individual tool:
gitlab_list_group_relations_export_status - Tier: Free
- Behavior: read-only, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string/integer | yes | The ID or URL-encoded path of the group |
order_by | string | no | Column to order keyset-paginated results by |
page | integer | no | Page number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward. |
page_token | string | no | Keyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’. |
pagination | string | no | Pagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost. |
per_page | integer | no | Items per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large. |
relation | string | no | Filter by relation type (for example labels, milestones, badges) |
sort | string (asc, desc) | no | Sort order for results: ‘asc’ or ‘desc’ |
group.group_relations_schedule
Section titled “group.group_relations_schedule”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, actiongroup_relations_schedule - Individual tool:
gitlab_schedule_group_relations_export - Tier: Free
- Behavior: writes, not idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string/integer | yes | The ID or URL-encoded path of the group |
batched | boolean | no | Whether to batch the export |
group.group_upload_delete_by_id
Section titled “group.group_upload_delete_by_id”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, actiongroup_upload_delete_by_id - Individual tool:
gitlab_delete_group_markdown_upload_by_id - Tier: Free
- Behavior: writes, destructive (needs confirmation), idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string/integer | yes | The ID or URL-encoded path of the group |
upload_id | integer | yes | The ID of the upload to delete |
group.group_upload_delete_by_secret
Section titled “group.group_upload_delete_by_secret”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, actiongroup_upload_delete_by_secret - Individual tool:
gitlab_delete_group_markdown_upload_by_secret - Tier: Free
- Behavior: writes, destructive (needs confirmation), idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
filename | string | yes | The filename of the upload |
group_id | string/integer | yes | The ID or URL-encoded path of the group |
secret | string | yes | The secret of the upload |
group.group_upload_list
Section titled “group.group_upload_list”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, actiongroup_upload_list - Individual tool:
gitlab_list_group_markdown_uploads - Tier: Free
- Behavior: read-only, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string/integer | yes | The ID or URL-encoded path of the group |
order_by | string | no | For keyset pagination, the column to order results by |
page | integer | no | Page number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward. |
page_token | string | no | Keyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’. |
pagination | string | no | Pagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost. |
per_page | integer | no | Items per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large. |
sort | string (asc, desc) | no | Sort order for keyset pagination: ‘asc’ or ‘desc’ |
group.hook_add
Section titled “group.hook_add”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, actionhook_add - Individual tool:
gitlab_group_hook_add - Tier: Premium
- Behavior: writes, not idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string/integer | yes | Group ID or URL-encoded path |
branch_filter_strategy | string (wildcard, regex, all_branches) | no | Branch filter strategy (wildcard, regex, all_branches) |
confidential_issues_events | boolean | no | Trigger on confidential issue events |
confidential_note_events | boolean | no | Trigger on confidential note events |
custom_headers | object[] | no | Custom HTTP headers added to webhook requests |
custom_webhook_template | string | no | Custom payload template (JSON) sent instead of the default webhook body |
deployment_events | boolean | no | Trigger on deployment events |
description | string | no | Hook description |
emoji_events | boolean | no | Trigger on emoji events |
enable_ssl_verification | boolean | no | Enable SSL verification for the hook endpoint |
feature_flag_events | boolean | no | Trigger on feature flag events |
issues_events | boolean | no | Trigger on issue events |
job_events | boolean | no | Trigger on job events |
member_events | boolean | no | Trigger on member events |
merge_requests_events | boolean | no | Trigger on merge request events |
milestone_events | boolean | no | Trigger on milestone events |
name | string | no | Hook name |
note_events | boolean | no | Trigger on comment events |
pipeline_events | boolean | no | Trigger on pipeline events |
project_events | boolean | no | Trigger on project events (group-level) |
push_events | boolean | no | Trigger on push events |
push_events_branch_filter | string | no | Branch filter for push events (e.g. ‘main’) |
releases_events | boolean | no | Trigger on release events |
resource_access_token_events | boolean | no | Trigger on resource access token events |
signing_token | string | no | Write-only signing token for webhook signature validation |
subgroup_events | boolean | no | Trigger on subgroup events |
tag_push_events | boolean | no | Trigger on tag push events |
token | string | no | Secret token for payload validation |
url | string | no | Webhook URL (required for add) |
vulnerability_events | boolean | no | Trigger on vulnerability events |
wiki_page_events | boolean | no | Trigger on wiki page events |
group.hook_delete
Section titled “group.hook_delete”Delete a GitLab group webhook. Returns: a success confirmation. See also:
group.hook_list,group.hook_get,group.hook_add.
- Meta-tool:
gitlab_group, actionhook_delete - Individual tool:
gitlab_group_hook_delete - Tier: Premium
- Behavior: writes, destructive (needs confirmation), idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string/integer | yes | Group ID or URL-encoded path |
hook_id | integer | yes | Hook ID to delete |
group.hook_delete_custom_header
Section titled “group.hook_delete_custom_header”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, actionhook_delete_custom_header - Individual tool:
gitlab_group_hook_delete_custom_header - Tier: Premium
- Behavior: writes, destructive (needs confirmation), idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string/integer | yes | Group ID or URL-encoded path |
hook_id | integer | yes | Webhook ID |
key | string | yes | Custom header key name to delete |
group.hook_delete_url_variable
Section titled “group.hook_delete_url_variable”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, actionhook_delete_url_variable - Individual tool:
gitlab_group_hook_delete_url_variable - Tier: Premium
- Behavior: writes, destructive (needs confirmation), idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string/integer | yes | Group ID or URL-encoded path |
hook_id | integer | yes | Webhook ID |
key | string | yes | URL variable key name to delete |
group.hook_edit
Section titled “group.hook_edit”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, actionhook_edit - Individual tool:
gitlab_group_hook_edit - Tier: Premium
- Behavior: writes, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string/integer | yes | Group ID or URL-encoded path |
hook_id | integer | yes | Hook ID to edit |
branch_filter_strategy | string (wildcard, regex, all_branches) | no | Branch filter strategy (wildcard, regex, all_branches) |
confidential_issues_events | boolean | no | Trigger on confidential issue events |
confidential_note_events | boolean | no | Trigger on confidential note events |
custom_headers | object[] | no | Custom HTTP headers added to webhook requests |
custom_webhook_template | string | no | Custom payload template (JSON) sent instead of the default webhook body |
deployment_events | boolean | no | Trigger on deployment events |
description | string | no | Hook description |
emoji_events | boolean | no | Trigger on emoji events |
enable_ssl_verification | boolean | no | Enable SSL verification for the hook endpoint |
feature_flag_events | boolean | no | Trigger on feature flag events |
issues_events | boolean | no | Trigger on issue events |
job_events | boolean | no | Trigger on job events |
member_events | boolean | no | Trigger on member events |
merge_requests_events | boolean | no | Trigger on merge request events |
milestone_events | boolean | no | Trigger on milestone events |
name | string | no | Hook name |
note_events | boolean | no | Trigger on comment events |
pipeline_events | boolean | no | Trigger on pipeline events |
project_events | boolean | no | Trigger on project events (group-level) |
push_events | boolean | no | Trigger on push events |
push_events_branch_filter | string | no | Branch filter for push events (e.g. ‘main’) |
releases_events | boolean | no | Trigger on release events |
resource_access_token_events | boolean | no | Trigger on resource access token events |
signing_token | string | no | Write-only signing token for webhook signature validation |
subgroup_events | boolean | no | Trigger on subgroup events |
tag_push_events | boolean | no | Trigger on tag push events |
token | string | no | Secret token for payload validation |
url | string | no | Webhook URL (required for add) |
vulnerability_events | boolean | no | Trigger on vulnerability events |
wiki_page_events | boolean | no | Trigger on wiki page events |
group.hook_get
Section titled “group.hook_get”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, actionhook_get - Individual tool:
gitlab_group_hook_get - Tier: Premium
- Behavior: read-only, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string/integer | yes | Group ID or URL-encoded path |
hook_id | integer | yes | Hook ID |
group.hook_list
Section titled “group.hook_list”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, actionhook_list - Individual tool:
gitlab_group_hook_list - Tier: Premium
- Behavior: read-only, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string/integer | yes | Group ID or URL-encoded path |
order_by | string | no | Order hooks by field (id) |
page | integer | no | Page number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward. |
page_token | string | no | Keyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’. |
pagination | string | no | Pagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost. |
per_page | integer | no | Items per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large. |
sort | string (asc, desc) | no | Sort direction (asc, desc) |
group.hook_resend_event
Section titled “group.hook_resend_event”Resend a GitLab group hook event. Returns: a success confirmation. See also:
group.hook_test,group.hook_get.
- Meta-tool:
gitlab_group, actionhook_resend_event - Individual tool:
gitlab_group_hook_resend_event - Tier: Premium
- Behavior: writes, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string/integer | yes | Group ID or URL-encoded path |
hook_event_id | integer | yes | ID of the hook event to resend |
hook_id | integer | yes | Webhook ID |
group.hook_set_custom_header
Section titled “group.hook_set_custom_header”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, actionhook_set_custom_header - Individual tool:
gitlab_group_hook_set_custom_header - Tier: Premium
- Behavior: writes, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string/integer | yes | Group ID or URL-encoded path |
hook_id | integer | yes | Webhook ID |
key | string | yes | Custom header key name |
value | string | yes | Custom header value (write-only) |
group.hook_set_url_variable
Section titled “group.hook_set_url_variable”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, actionhook_set_url_variable - Individual tool:
gitlab_group_hook_set_url_variable - Tier: Premium
- Behavior: writes, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string/integer | yes | Group ID or URL-encoded path |
hook_id | integer | yes | Webhook ID |
key | string | yes | URL variable key name. Letters and underscores only. GitLab rejects keys containing digits |
value | string | yes | URL variable value (write-only). Must be non-empty |
group.hook_test
Section titled “group.hook_test”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, actionhook_test - Individual tool:
gitlab_group_hook_test - Tier: Premium
- Behavior: writes, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string/integer | yes | Group ID or URL-encoded path |
hook_id | integer | yes | Webhook ID |
trigger | string (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) | yes | Event 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 |
group.invited_groups
Section titled “group.invited_groups”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, actioninvited_groups - Individual tool:
gitlab_group_invited_list - Tier: Free
- Behavior: read-only, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string/integer | yes | Group ID or URL-encoded path |
min_access_level | integer | no | Minimum access level the invitation grants (5=Minimal access,10=Guest,15=Planner,20=Reporter,25=Security Manager,30=Developer,40=Maintainer,50=Owner) |
order_by | string | no | Column to order invited groups by. The GitLab API documents no ordering for this endpoint, so the value is forwarded unchanged and may be ignored |
page | integer | no | Page number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward. |
page_token | string | no | Keyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’. |
pagination | string | no | Pagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost. |
per_page | integer | no | Items per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large. |
relation | string[] | no | Filter by relation (direct, inherited) |
search | string | no | Filter invited groups by name or path |
sort | string (asc, desc) | no | Sort direction (asc, desc) |
with_custom_attributes | boolean | no | Include custom attributes in the response |
group.issues
Section titled “group.issues”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, actionissues - Individual tool:
gitlab_issue_list_group - Tier: Free
- Behavior: read-only, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string/integer | yes | Group ID or URL-encoded path |
assignee_id | integer | no | Filter by assignee user ID |
assignee_username | string | no | Filter by assignee username |
author_id | integer | no | Filter by author user ID |
author_username | string | no | Filter by author username |
confidential | boolean | no | Filter by confidential status |
created_after | string | no | Return issues created after date (ISO 8601) |
created_before | string | no | Return issues created before date (ISO 8601) |
due_date | string | no | Filter by due date (0, overdue, week, month, next_month_and_previous_two_weeks) |
iids | integer[] | no | Filter by issue internal IDs |
in | string (title, description, title,description) | no | Fields the search query applies to (title, description, or title,description) |
issue_type | string (issue, incident, test_case, task) | no | Filter by issue type (issue, incident, test_case, task) |
iteration_id (Premium) | integer | no | Filter by iteration ID |
labels | string[] | no | Label names to filter by |
milestone | string | no | Milestone title to filter by |
my_reaction_emoji | string | no | Filter by issues you reacted to with this emoji (or None/Any) |
not_assignee_id | integer | no | Exclude issues assigned to this user ID |
not_assignee_username | string | no | Exclude issues assigned to this username |
not_author_id | integer | no | Exclude issues authored by this user ID |
not_author_username | string | no | Exclude issues authored by this username |
not_in | string (title, description, title,description) | no | Fields the negated search query applies to (title, description) |
not_labels | string[] | no | Label names to exclude |
not_milestone | string | no | Milestone title to exclude |
not_my_reaction_emoji | string | no | Exclude issues you reacted to with this emoji |
not_search | string | no | Exclude issues matching this search text |
order_by | string (created_at, due_date, id, label_priority, milestone_due, popularity, priority, relative_position, title, updated_at, weight) | no | Order by field (created_at, updated_at, priority, due_date, relative_position, label_priority, milestone_due, popularity, weight) |
page | integer | no | Page number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward. |
page_token | string | no | Keyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’. |
pagination | string | no | Pagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost. |
per_page | integer | no | Items per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large. |
scope | string (created_by_me, assigned_to_me, all) | no | Scope (created_by_me, assigned_to_me, all) |
search | string | no | Search in title and description |
sort | string (asc, desc) | no | Sort direction (asc, desc) |
state | string (opened, closed, all) | no | Filter by state (opened, closed, all) |
updated_after | string | no | Return issues updated after date (ISO 8601) |
updated_before | string | no | Return issues updated before date (ISO 8601) |
with_labels_details | boolean | no | Return label objects with full details instead of just names |
group.ldap_link_add
Section titled “group.ldap_link_add”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, actionldap_link_add - Individual tool:
gitlab_group_ldap_link_add - Tier: Premium
- Behavior: writes, not idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_access | integer (0, 5, 10, 15, 20, 25, 30, 40, 50) | yes | Default 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_id | string | yes | Group ID or URL-encoded path |
provider | string | yes | LDAP provider name |
cn | string | no | LDAP Common Name (CN) |
filter | string | no | LDAP filter |
member_role_id | integer | no | Custom member role ID |
group.ldap_link_delete
Section titled “group.ldap_link_delete”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, actionldap_link_delete - Individual tool:
gitlab_group_ldap_link_delete - Tier: Premium
- Behavior: writes, destructive (needs confirmation), idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string | yes | Group ID or URL-encoded path |
cn | string | no | LDAP Common Name to delete |
filter | string | no | LDAP filter to delete |
provider | string | no | LDAP provider name |
group.ldap_link_delete_for_provider
Section titled “group.ldap_link_delete_for_provider”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, actionldap_link_delete_for_provider - Individual tool:
gitlab_group_ldap_link_delete_for_provider - Tier: Premium
- Behavior: writes, destructive (needs confirmation), idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
cn | string | yes | LDAP Common Name |
group_id | string | yes | Group ID or URL-encoded path |
provider | string | yes | LDAP provider name |
group.ldap_link_list
Section titled “group.ldap_link_list”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, actionldap_link_list - Individual tool:
gitlab_group_ldap_link_list - Tier: Premium
- Behavior: read-only, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string | yes | Group ID or URL-encoded path |
group.ldap_sync
Section titled “group.ldap_sync”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, actionldap_sync - Individual tool:
gitlab_group_ldap_sync - Tier: Premium
- Behavior: writes, not idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string | yes | Group ID or URL-encoded path |
group.list
Section titled “group.list”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, actionlist - Individual tool:
gitlab_group_list - Tier: Free
- Behavior: read-only, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
active | boolean | no | Filter by active (true) or inactive/archived (false) groups |
all_available | boolean | no | Show all groups accessible by the authenticated user |
archived | boolean | no | Limit to archived groups (true) or non-archived (false) |
custom_attributes | object | no | Filter groups by custom attribute key/value pairs (administrators only). Distinct from with_custom_attributes, which only includes them in the response |
marked_for_deletion_on | string | no | Filter to groups marked for deletion on this date (YYYY-MM-DD) |
min_access_level | integer | no | Minimum access level (5=Minimal access,10=Guest,15=Planner,20=Reporter,25=Security Manager,30=Developer,40=Maintainer,50=Owner) |
order_by | string (name, path, id, similarity) | no | Order groups by field (name, path, id, similarity) |
owned | boolean | no | Limit to groups explicitly owned by the authenticated user |
page | integer | no | Page number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward. |
page_token | string | no | Keyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’. |
pagination | string | no | Pagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost. |
per_page | integer | no | Items per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large. |
repository_storage | string | no | Filter by repository storage shard (administrators only) |
search | string | no | Filter groups by name or path |
skip_groups | integer[] | no | Group IDs to exclude from results |
sort | string (asc, desc) | no | Sort direction (asc, desc) |
statistics | boolean | no | Include group statistics (storage, counts) |
top_level_only | boolean | no | Limit to top-level groups (exclude subgroups) |
visibility | string (private, internal, public) | no | Filter by visibility (public, internal, private) |
with_custom_attributes | boolean | no | Include custom attributes in the response |
group.list_provisioned_users
Section titled “group.list_provisioned_users”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, actionlist_provisioned_users - Individual tool:
gitlab_group_list_provisioned_users - Tier: Premium
- Behavior: read-only, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string/integer | yes | Group ID or URL-encoded path |
active | boolean | no | Filter to active (true) or inactive (false) users |
blocked | boolean | no | Filter to blocked (true) or unblocked (false) users |
created_after | string | no | Return users created after this RFC3339 timestamp (e.g. 2024-01-02T15:04:05Z) |
created_before | string | no | Return users created before this RFC3339 timestamp (e.g. 2024-12-31T23:59:59Z) |
order_by | string | no | Column to order provisioned users by (e.g. id, name, username, created_at, updated_at) |
page | integer | no | Page number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward. |
page_token | string | no | Keyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’. |
pagination | string | no | Pagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost. |
per_page | integer | no | Items per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large. |
search | string | no | Search provisioned users by name, username, or email |
sort | string (asc, desc) | no | Sort direction: asc or desc |
username | string | no | Filter provisioned users by exact username |
group.members
Section titled “group.members”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, actionmembers - Individual tool:
gitlab_group_members_list - Tier: Free
- Behavior: read-only, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string/integer | yes | Group ID or URL-encoded path |
order_by | string (id, name, username, access_level, last_activity_on) | no | Order members by field (id, name, username, access_level, last_activity_on) |
page | integer | no | Page number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward. |
page_token | string | no | Keyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’. |
pagination | string | no | Pagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost. |
per_page | integer | no | Items per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large. |
query | string | no | Filter members by name or username |
show_seat_info | boolean | no | Include seat information for each member (Premium/Ultimate) |
sort | string (asc, desc) | no | Sort direction (asc, desc) |
user_ids | integer[] | no | Filter the result to the given user IDs |
group.projects
Section titled “group.projects”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, actionprojects - Individual tool:
gitlab_group_projects - Tier: Free
- Behavior: read-only, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string/integer | yes | Group ID or URL-encoded path |
active | boolean | no | Filter by active (true) or inactive/archived (false) projects |
archived | boolean | no | Filter archived projects |
include_subgroups | boolean | no | Include projects in subgroups |
min_access_level | integer | no | Limit 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_by | string (id, name, path, created_at, updated_at, last_activity_at, similarity) | no | Order by field (id, name, path, created_at, updated_at, last_activity_at, similarity) |
owned | boolean | no | Limit to projects owned by current user |
page | integer | no | Page number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward. |
page_token | string | no | Keyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’. |
pagination | string | no | Pagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost. |
per_page | integer | no | Items per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large. |
search | string | no | Filter projects by name |
simple | boolean | no | Return limited fields |
sort | string (asc, desc) | no | Sort direction (asc, desc) |
starred | boolean | no | Limit to starred projects |
topic | string | no | Filter projects by topic |
visibility | string (private, internal, public) | no | Filter by visibility (public, internal, private) |
with_custom_attributes | boolean | no | Include custom attributes in the response |
with_issues_enabled | boolean | no | Limit to projects with issues enabled |
with_merge_requests_enabled | boolean | no | Limit to projects with merge requests enabled |
with_security_reports | boolean | no | Limit to projects with security reports (Ultimate) |
with_shared | boolean | no | Include shared projects |
group.protected_branch_get
Section titled “group.protected_branch_get”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, actionprotected_branch_get - Individual tool:
gitlab_group_protected_branch_get - Tier: Premium
- Behavior: read-only, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
branch | string | yes | Branch name or wildcard |
group_id | string/integer | yes | Group ID or URL-encoded path |
group.protected_branch_list
Section titled “group.protected_branch_list”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, actionprotected_branch_list - Individual tool:
gitlab_group_protected_branch_list - Tier: Premium
- Behavior: read-only, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string/integer | yes | Group ID or URL-encoded path |
order_by | string | no | Column to order results by (e.g. name) |
page | integer | no | Page number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward. |
page_token | string | no | Keyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’. |
pagination | string | no | Pagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost. |
per_page | integer | no | Items per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large. |
search | string | no | Search by branch name |
sort | string (asc, desc) | no | Sort direction (asc, desc) |
group.protected_branch_protect
Section titled “group.protected_branch_protect”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, actionprotected_branch_protect - Individual tool:
gitlab_group_protected_branch_protect - Tier: Premium
- Behavior: writes, not idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string/integer | yes | Group ID or URL-encoded path |
name | string | yes | Branch name or wildcard to protect |
allow_force_push | boolean | no | Allow force push |
allowed_to_merge | object[] | no | Users/groups allowed to merge |
allowed_to_push | object[] | no | Users/groups allowed to push |
allowed_to_unprotect | object[] | no | Users/groups allowed to unprotect |
code_owner_approval_required | boolean | no | Require code owner approval |
merge_access_level | integer | no | Merge access level (0=No access, 30=Developer, 40=Maintainer, 60=Admin) |
push_access_level | integer | no | Push access level (0=No access, 30=Developer, 40=Maintainer, 60=Admin) |
unprotect_access_level | integer | no | Unprotect access level (30=Developer, 40=Maintainer, 60=Admin on GitLab Self-Managed). 0 (No access) is not valid here |
group.protected_branch_unprotect
Section titled “group.protected_branch_unprotect”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, actionprotected_branch_unprotect - Individual tool:
gitlab_group_protected_branch_unprotect - Tier: Premium
- Behavior: writes, destructive (needs confirmation), idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
branch | string | yes | Branch name or wildcard to unprotect |
group_id | string/integer | yes | Group ID or URL-encoded path |
group.protected_branch_update
Section titled “group.protected_branch_update”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, actionprotected_branch_update - Individual tool:
gitlab_group_protected_branch_update - Tier: Premium
- Behavior: writes, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
branch | string | yes | Branch name or wildcard |
group_id | string/integer | yes | Group ID or URL-encoded path |
allow_force_push | boolean | no | Allow force push |
allowed_to_merge | object[] | no | Users/groups allowed to merge |
allowed_to_push | object[] | no | Users/groups allowed to push |
allowed_to_unprotect | object[] | no | Users/groups allowed to unprotect |
code_owner_approval_required | boolean | no | Require code owner approval |
name | string | no | New branch name or wildcard |
group.protected_env_get
Section titled “group.protected_env_get”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, actionprotected_env_get - Individual tool:
gitlab_group_protected_environment_get - Tier: Premium
- Behavior: read-only, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
environment | string (production, staging, testing, development, other) | yes | Environment tier (production, staging, testing, development, other) |
group_id | string/integer | yes | Group ID or URL-encoded path |
group.protected_env_list
Section titled “group.protected_env_list”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, actionprotected_env_list - Individual tool:
gitlab_group_protected_environment_list - Tier: Premium
- Behavior: read-only, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string/integer | yes | Group ID or URL-encoded path |
order_by | string | no | Column to order keyset-paginated results by |
page | integer | no | Page number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward. |
page_token | string | no | Keyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’. |
pagination | string | no | Pagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost. |
per_page | integer | no | Items per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large. |
sort | string (asc, desc) | no | Sort direction (asc, desc) |
group.protected_env_protect
Section titled “group.protected_env_protect”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, actionprotected_env_protect - Individual tool:
gitlab_group_protected_environment_protect - Tier: Premium
- Behavior: writes, not idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
deploy_access_levels | object[] | yes | Deploy access levels |
group_id | string/integer | yes | Group ID or URL-encoded path |
name | string (production, staging, testing, development, other) | yes | Environment tier to protect (production, staging, testing, development, other) |
approval_rules | object[] | no | Approval rules |
required_approval_count | integer | no | Required number of approvals |
group.protected_env_unprotect
Section titled “group.protected_env_unprotect”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, actionprotected_env_unprotect - Individual tool:
gitlab_group_protected_environment_unprotect - Tier: Premium
- Behavior: writes, destructive (needs confirmation), idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
environment | string (production, staging, testing, development, other) | yes | Environment tier to unprotect (production, staging, testing, development, other) |
group_id | string/integer | yes | Group ID or URL-encoded path |
group.protected_env_update
Section titled “group.protected_env_update”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, actionprotected_env_update - Individual tool:
gitlab_group_protected_environment_update - Tier: Premium
- Behavior: writes, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
environment | string (production, staging, testing, development, other) | yes | Environment tier (production, staging, testing, development, other) |
group_id | string/integer | yes | Group ID or URL-encoded path |
approval_rules | object[] | no | Updated approval rules |
deploy_access_levels | object[] | no | Updated deploy access levels |
name | string (production, staging, testing, development, other) | no | New environment tier (production, staging, testing, development, other) |
required_approval_count | integer | no | Required number of approvals |
group.push_rule_add
Section titled “group.push_rule_add”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, actionpush_rule_add - Individual tool:
gitlab_group_add_push_rule - Tier: Premium
- Behavior: writes, not idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string/integer | yes | Group ID or URL-encoded path |
author_email_regex | string | no | Regex to validate author email addresses |
branch_name_regex | string | no | Regex to validate branch names |
commit_committer_check | boolean | no | Reject commits where committer is not a group member |
commit_committer_name_check | boolean | no | Reject commits where committer name does not match user name |
commit_message_negative_regex | string | no | Regex that commit messages must NOT match |
commit_message_regex | string | no | Regex that commit messages must match |
deny_delete_tag | boolean | no | Deny tag deletion |
file_name_regex | string | no | Regex for disallowed file names |
max_file_size | integer | no | Maximum file size (MB). 0 means unlimited |
member_check | boolean | no | Only allow commits from group members |
prevent_secrets | boolean | no | Reject files that are likely to contain secrets |
reject_non_dco_commits | boolean | no | Reject commits without DCO certification |
reject_unsigned_commits | boolean | no | Reject commits that are not GPG signed |
group.push_rule_delete
Section titled “group.push_rule_delete”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, actionpush_rule_delete - Individual tool:
gitlab_group_delete_push_rule - Tier: Premium
- Behavior: writes, destructive (needs confirmation), idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string/integer | yes | Group ID or URL-encoded path |
group.push_rule_edit
Section titled “group.push_rule_edit”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, actionpush_rule_edit - Individual tool:
gitlab_group_edit_push_rule - Tier: Premium
- Behavior: writes, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string/integer | yes | Group ID or URL-encoded path |
author_email_regex | string | no | Regex to validate author email addresses |
branch_name_regex | string | no | Regex to validate branch names |
commit_committer_check | boolean | no | Reject commits where committer is not a group member |
commit_committer_name_check | boolean | no | Reject commits where committer name does not match user name |
commit_message_negative_regex | string | no | Regex that commit messages must NOT match |
commit_message_regex | string | no | Regex that commit messages must match |
deny_delete_tag | boolean | no | Deny tag deletion |
file_name_regex | string | no | Regex for disallowed file names |
max_file_size | integer | no | Maximum file size (MB). 0 means unlimited |
member_check | boolean | no | Only allow commits from group members |
prevent_secrets | boolean | no | Reject files that are likely to contain secrets |
reject_non_dco_commits | boolean | no | Reject commits without DCO certification |
reject_unsigned_commits | boolean | no | Reject commits that are not GPG signed |
group.push_rule_get
Section titled “group.push_rule_get”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, actionpush_rule_get - Individual tool:
gitlab_group_get_push_rules - Tier: Premium
- Behavior: read-only, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string/integer | yes | Group ID or URL-encoded path |
group.release_list
Section titled “group.release_list”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, actionrelease_list - Individual tool:
gitlab_group_release_list - Tier: Free
- Behavior: read-only, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string/integer | yes | Group ID or URL-encoded path |
order_by | string | no | Order releases by a column (e.g. released_at, created_at) |
page | integer | no | Page number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward. |
page_token | string | no | Keyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’. |
pagination | string | no | Pagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost. |
per_page | integer | no | Items per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large. |
simple | boolean | no | Return only limited fields for each release |
sort | string (asc, desc) | no | Sort direction (asc, desc) |
group.restore
Section titled “group.restore”Restore a GitLab group marked for deletion. Returns: the restored group metadata. See also:
group.delete,group.get,group.list.
- Meta-tool:
gitlab_group, actionrestore - Individual tool:
gitlab_group_restore - Tier: Free
- Behavior: writes, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string/integer | yes | Group ID or URL-encoded path |
group.saml_link_add
Section titled “group.saml_link_add”Add a SAML group link mapping a SAML group name to an access level (Premium/Ultimate).
- Meta-tool:
gitlab_group, actionsaml_link_add - Individual tool:
gitlab_group_saml_link_add - Tier: Premium
- Behavior: writes, not idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
access_level | integer | yes | Access level (0=No access, 5=Minimal access, 10=Guest, 15=Planner, 20=Reporter, 25=Security Manager, 30=Developer, 40=Maintainer, 50=Owner) |
group_id | string | yes | Group ID or URL-encoded path |
saml_group_name | string | yes | Name of the SAML group |
member_role_id | integer | no | Custom member role ID |
provider | string | no | SAML provider name |
group.saml_link_delete
Section titled “group.saml_link_delete”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, actionsaml_link_delete - Individual tool:
gitlab_group_saml_link_delete - Tier: Premium
- Behavior: writes, destructive (needs confirmation), idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string | yes | Group ID or URL-encoded path |
saml_group_name | string | yes | Name of the SAML group to delete |
group.saml_link_get
Section titled “group.saml_link_get”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, actionsaml_link_get - Individual tool:
gitlab_group_saml_link_get - Tier: Premium
- Behavior: read-only, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string | yes | Group ID or URL-encoded path |
saml_group_name | string | yes | Name of the SAML group |
group.saml_link_list
Section titled “group.saml_link_list”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, actionsaml_link_list - Individual tool:
gitlab_group_saml_link_list - Tier: Premium
- Behavior: read-only, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string | yes | Group ID or URL-encoded path |
group.saml_users_list
Section titled “group.saml_users_list”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, actionsaml_users_list - Individual tool:
gitlab_group_saml_users_list - Tier: Premium
- Behavior: read-only, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string | yes | Top-level group ID or URL-encoded path |
active | boolean | no | Limit to active users only |
blocked | boolean | no | Limit to blocked users only |
created_after | string | no | Return users created after the specified time. Format: ISO 8601 (YYYY-MM-DDTHH:MM:SSZ) |
created_before | string | no | Return users created before the specified time. Format: ISO 8601 (YYYY-MM-DDTHH:MM:SSZ) |
order_by | string | no | Column to order keyset-paginated results by (e.g. id, name, username, created_at) |
page | integer | no | Page number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward. |
page_token | string | no | Keyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’. |
pagination | string | no | Pagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost. |
per_page | integer | no | Items per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large. |
search | string | no | Filter SAML users by name, username, or public email |
sort | string (asc, desc) | no | Sort order for keyset pagination: ‘asc’ or ‘desc’ |
username | string | no | Filter by an exact username |
group.search
Section titled “group.search”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, actionsearch - Individual tool:
gitlab_group_search - Tier: Free
- Behavior: read-only, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
query | string | yes | Search query string |
group.security_settings_update
Section titled “group.security_settings_update”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, actionsecurity_settings_update - Individual tool:
gitlab_update_group_secret_push_protection - Tier: Ultimate
- Behavior: writes, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string/integer | yes | Group ID or URL-encoded path |
secret_push_protection_enabled | boolean | yes | Enable or disable secret push protection |
projects_to_exclude | integer[] | no | Project IDs to exclude from group-level protection |
group.service_account_create
Section titled “group.service_account_create”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, actionservice_account_create - Individual tool:
gitlab_group_service_account_create - Tier: Free
- Behavior: writes, not idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string | yes | Group ID or URL-encoded path (top-level only) |
email | string | no | Service account email |
name | string | no | Service account name |
username | string | no | Service account username |
group.service_account_delete
Section titled “group.service_account_delete”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, actionservice_account_delete - Individual tool:
gitlab_group_service_account_delete - Tier: Free
- Behavior: writes, destructive (needs confirmation), idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string | yes | Group ID or URL-encoded path (top-level only) |
service_account_id | integer | yes | Service account user ID |
hard_delete | boolean | no | Hard delete the service account |
group.service_account_get
Section titled “group.service_account_get”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, actionservice_account_get - Individual tool:
gitlab_group_service_account_get - Tier: Free
- Behavior: read-only, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string | yes | Group ID or URL-encoded path |
service_account_id | integer | yes | Service account user ID |
group.service_account_list
Section titled “group.service_account_list”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, actionservice_account_list - Individual tool:
gitlab_group_service_account_list - Tier: Free
- Behavior: read-only, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string | yes | Group ID or URL-encoded path |
order_by | string | no | Order by id or username |
page | integer | no | Page number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward. |
page_token | string | no | Keyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’. |
pagination | string | no | Pagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost. |
per_page | integer | no | Items per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large. |
sort | string (asc, desc) | no | Sort direction: asc or desc |
group.service_account_pat_create
Section titled “group.service_account_pat_create”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, actionservice_account_pat_create - Individual tool:
gitlab_group_service_account_pat_create - Tier: Free
- Behavior: writes, not idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string | yes | Group ID or URL-encoded path |
name | string | yes | Token name |
scopes | string[] | yes | Token scopes (e.g. api read_api read_user) |
service_account_id | integer | yes | Service account user ID |
description | string | no | Token description |
expires_at | string | no | Expiration date (YYYY-MM-DD) |
group.service_account_pat_list
Section titled “group.service_account_pat_list”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, actionservice_account_pat_list - Individual tool:
gitlab_group_service_account_pat_list - Tier: Free
- Behavior: read-only, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string | yes | Group ID or URL-encoded path |
service_account_id | integer | yes | Service account user ID |
created_after | string | no | Return tokens created after this RFC3339 timestamp |
created_before | string | no | Return tokens created before this RFC3339 timestamp |
expires_after | string | no | Return tokens expiring after this date (YYYY-MM-DD) |
expires_before | string | no | Return tokens expiring before this date (YYYY-MM-DD) |
last_used_after | string | no | Return tokens last used after this RFC3339 timestamp |
last_used_before | string | no | Return tokens last used before this RFC3339 timestamp |
order_by | string | no | Order tokens by a supported column (e.g. id, created_at, expires_at, last_used_at) |
page | integer | no | Page number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward. |
page_token | string | no | Keyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’. |
pagination | string | no | Pagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost. |
per_page | integer | no | Items per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large. |
revoked | boolean | no | Filter by revoked state: true returns only revoked tokens, false only active ones |
search | string | no | Filter tokens whose name contains this text |
sort | string (asc, desc) | no | Sort direction: asc or desc |
state | string (active, inactive) | no | Filter by token state: active or inactive |
user_id | integer | no | Filter by the user ID that owns the token |
group.service_account_pat_revoke
Section titled “group.service_account_pat_revoke”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, actionservice_account_pat_revoke - Individual tool:
gitlab_group_service_account_pat_revoke - Tier: Free
- Behavior: writes, destructive (needs confirmation), idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string | yes | Group ID or URL-encoded path |
service_account_id | integer | yes | Service account user ID |
token_id | integer | yes | Personal access token ID to revoke |
group.service_account_pat_rotate
Section titled “group.service_account_pat_rotate”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, actionservice_account_pat_rotate - Individual tool:
gitlab_group_service_account_pat_rotate - Tier: Free
- Behavior: writes, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string | yes | Group ID or URL-encoded path |
service_account_id | integer | yes | Service account user ID |
token_id | integer | yes | Personal access token ID to rotate |
expires_at | string | no | Expiration date for the new token (YYYY-MM-DD) |
group.service_account_update
Section titled “group.service_account_update”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, actionservice_account_update - Individual tool:
gitlab_group_service_account_update - Tier: Free
- Behavior: writes, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string | yes | Group ID or URL-encoded path (top-level only) |
service_account_id | integer | yes | Service account user ID |
email | string | no | New email |
name | string | no | New name |
username | string | no | New username |
group.share_with_group
Section titled “group.share_with_group”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, actionshare_with_group - Individual tool:
gitlab_group_share_with_group - Tier: Free
- Behavior: writes, not idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_access | integer | yes | Access 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_id | string/integer | yes | Group ID or URL-encoded path of the group being shared |
shared_group_id | integer | yes | ID of the group to share with |
expires_at | string | no | Expiration date for the share (YYYY-MM-DD) |
member_role_id (Ultimate) | integer | no | Custom member role the share grants (Ultimate only). Its base access level must equal group_access |
group.shared_projects
Section titled “group.shared_projects”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, actionshared_projects - Individual tool:
gitlab_group_shared_projects_list - Tier: Free
- Behavior: read-only, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string/integer | yes | Group ID or URL-encoded path |
archived | boolean | no | Filter archived projects |
min_access_level | integer | no | Limit 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_by | string (id, name, path, created_at, updated_at, star_count, last_activity_at) | no | Order by field: id, name, path, created_at, updated_at, star_count, or last_activity_at. Default is created_at |
page | integer | no | Page number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward. |
page_token | string | no | Keyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’. |
pagination | string | no | Pagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost. |
per_page | integer | no | Items per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large. |
search | string | no | Filter projects by name |
simple | boolean | no | Return limited fields |
sort | string (asc, desc) | no | Sort direction (asc, desc) |
starred | boolean | no | Limit to starred projects |
visibility | string (private, internal, public) | no | Filter by visibility (public, internal, private) |
with_custom_attributes | boolean | no | Include custom attributes in the response |
with_issues_enabled | boolean | no | Limit to projects with issues enabled |
with_merge_requests_enabled | boolean | no | Limit to projects with merge requests enabled |
group.shared_with
Section titled “group.shared_with”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, actionshared_with - Individual tool:
gitlab_group_shared_with_list - Tier: Free
- Behavior: read-only, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string/integer | yes | Group ID or URL-encoded path |
min_access_level | integer | no | Minimum access level the share grants (5=Minimal access,10=Guest,15=Planner,20=Reporter,25=Security Manager,30=Developer,40=Maintainer,50=Owner) |
order_by | string (name, path, id, similarity) | no | Order shared groups by field: name, path, id, or similarity (similarity only applies with search). Default is name |
page | integer | no | Page number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward. |
page_token | string | no | Keyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’. |
pagination | string | no | Pagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost. |
per_page | integer | no | Items per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large. |
search | string | no | Filter shared groups by name or path |
skip_groups | integer[] | no | Group IDs to exclude from the results |
sort | string (asc, desc) | no | Sort direction (asc, desc) |
visibility | string (private, internal, public) | no | Filter by visibility (public, internal, private) |
with_custom_attributes | boolean | no | Include custom attributes in the response |
group.ssh_cert_create
Section titled “group.ssh_cert_create”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, actionssh_cert_create - Individual tool:
gitlab_create_group_ssh_certificate - Tier: Premium
- Behavior: writes, not idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string/integer | yes | Group ID or URL-encoded path |
key | string | yes | SSH public key content |
title | string | yes | Title for the SSH certificate |
group.ssh_cert_delete
Section titled “group.ssh_cert_delete”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, actionssh_cert_delete - Individual tool:
gitlab_delete_group_ssh_certificate - Tier: Premium
- Behavior: writes, destructive (needs confirmation), idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
certificate_id | integer | yes | SSH certificate ID |
group_id | string/integer | yes | Group ID or URL-encoded path |
group.ssh_cert_list
Section titled “group.ssh_cert_list”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, actionssh_cert_list - Individual tool:
gitlab_list_group_ssh_certificates - Tier: Premium
- Behavior: read-only, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string/integer | yes | Group ID or URL-encoded path |
page | integer | no | Page number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward. |
page_token | string | no | Keyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’. |
pagination | string | no | Pagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost. |
per_page | integer | no | Items per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large. |
group.subgroups
Section titled “group.subgroups”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, actionsubgroups - Individual tool:
gitlab_subgroups_list - Tier: Free
- Behavior: read-only, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string/integer | yes | Group ID or URL-encoded path |
active | boolean | no | Filter by active (true) or inactive/archived (false) subgroups |
all_available | boolean | no | Show all subgroups accessible by the authenticated user |
archived | boolean | no | Limit to archived subgroups (true) or non-archived (false) |
custom_attributes | object | no | Filter subgroups by custom attribute key/value pairs (administrators only). Distinct from with_custom_attributes, which only includes them in the response |
marked_for_deletion_on | string | no | Filter to subgroups marked for deletion on this date (YYYY-MM-DD) |
min_access_level | integer | no | Minimum 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_by | string (name, path, id, similarity) | no | Order subgroups by field (name, path, id, similarity) |
owned | boolean | no | Limit to subgroups explicitly owned by the authenticated user |
page | integer | no | Page number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward. |
page_token | string | no | Keyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’. |
pagination | string | no | Pagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost. |
per_page | integer | no | Items per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large. |
repository_storage | string | no | Filter by repository storage shard (administrators only) |
search | string | no | Filter subgroups by name or path |
skip_groups | integer[] | no | Group IDs to exclude from results |
sort | string (asc, desc) | no | Sort direction (asc, desc) |
statistics | boolean | no | Include group statistics (storage, counts) |
top_level_only | boolean | no | Limit to top-level subgroups (exclude nested descendants) |
visibility | string (private, internal, public) | no | Filter by visibility (public, internal, private) |
with_custom_attributes | boolean | no | Include custom attributes in the response |
group.transfer
Section titled “group.transfer”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, actiontransfer - Individual tool:
gitlab_group_transfer - Tier: Free
- Behavior: writes, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string/integer | yes | Group ID or URL-encoded path of the group to move |
parent_id | integer | no | ID of the new parent group. Omit to turn the subgroup into a top-level group |
group.transfer_locations
Section titled “group.transfer_locations”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, actiontransfer_locations - Individual tool:
gitlab_group_transfer_locations - Tier: Free
- Behavior: read-only, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string/integer | yes | Group ID or URL-encoded path |
order_by | string | no | Column 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 |
page | integer | no | Page number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward. |
page_token | string | no | Keyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’. |
pagination | string | no | Pagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost. |
per_page | integer | no | Items per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large. |
search | string | no | Filter candidate parent groups by name or path |
sort | string (asc, desc) | no | Sort direction (asc, desc) |
group.transfer_project
Section titled “group.transfer_project”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, actiontransfer_project - Individual tool:
gitlab_group_transfer_project - Tier: Free
- Behavior: writes, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string/integer | yes | Group ID or URL-encoded path |
project_id | string/integer | yes | Project ID or URL-encoded path to transfer |
group.unarchive
Section titled “group.unarchive”Unarchive a GitLab group (restore write access). Returns: a success confirmation. See also:
group.archive,group.get,group.update.
- Meta-tool:
gitlab_group, actionunarchive - Individual tool:
gitlab_group_unarchive - Tier: Free
- Behavior: writes, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string/integer | yes | Group ID or URL-encoded path |
group.unshare_from_group
Section titled “group.unshare_from_group”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, actionunshare_from_group - Individual tool:
gitlab_group_unshare_from_group - Tier: Free
- Behavior: writes, destructive (needs confirmation), idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string/integer | yes | Group ID or URL-encoded path of the group being unshared |
shared_group_id | integer | yes | ID of the group whose share is removed |
group.update
Section titled “group.update”Update a GitLab group’s settings. Returns: the updated group metadata. See also:
group.get,group.create,group.delete.
- Meta-tool:
gitlab_group, actionupdate - Individual tool:
gitlab_group_update - Tier: Free
- Behavior: writes, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string/integer | yes | Group ID or URL-encoded path |
allow_merge_on_skipped_pipeline | boolean | no | Allow merging when the pipeline is skipped |
allow_personal_snippets | boolean | no | Allow members to create personal snippets |
allowed_email_domains_list | string | no | Comma-separated list of email domains allowed for members (Premium/Ultimate) |
auto_ban_user_on_excessive_projects_download (Ultimate) | boolean | no | Automatically ban users who exceed the unique project download limit (Ultimate) |
auto_devops_enabled | boolean | no | Enable Auto DevOps for projects in this group |
crm_enabled | boolean | no | Enable Customer Relations Management (CRM) for the group |
default_branch | string | no | Default branch name |
default_branch_protection | integer | no | Deprecated: default branch protection level (0=none,1=partial,2=full,3=initial push,4=fully protected). Prefer default_branch_protection_defaults |
default_branch_protection_defaults | object | no | Default branch protection settings object |
description | string | no | Group description |
duo_availability | string (default_on, default_off, never_on) | no | GitLab Duo availability (default_on, default_off, never_on) |
duo_features_enabled | boolean | no | Enable GitLab Duo features |
emails_disabled | boolean | no | Deprecated: disable email notifications. Prefer emails_enabled |
emails_enabled | boolean | no | Enable email notifications |
enabled_git_access_protocol | string (ssh, http, all) | no | Allowed Git access protocol (ssh, http, all) |
experiment_features_enabled | boolean | no | Enable experimental features |
extra_shared_runners_minutes_limit | integer | no | Extra shared runner compute-minutes (administrators only) |
file_template_project_id | integer | no | Project ID providing file templates for this group (Premium/Ultimate) |
ip_restriction_ranges | string | no | Comma-separated list of IP addresses or subnet masks allowed to access the group. Premium and Ultimate only |
lfs_enabled | boolean | no | Enable Git LFS |
lock_duo_features_enabled | boolean | no | Prevent subgroups from changing the Duo features setting |
lock_math_rendering_limits_enabled | boolean | no | Prevent subgroups from changing the math rendering limits setting |
math_rendering_limits_enabled | boolean | no | Enable math rendering limits |
max_artifacts_size | integer | no | Maximum job artifacts size in MB (administrators only) |
membership_lock | boolean | no | Prevent members from being added to projects in this group |
mentions_disabled | boolean | no | Disable @-mention notifications |
name | string | no | Group name |
only_allow_merge_if_all_discussions_are_resolved | boolean | no | Only allow merging when all discussions are resolved |
only_allow_merge_if_pipeline_succeeds | boolean | no | Only allow merging when the pipeline succeeds |
path | string | no | Group URL path |
prevent_forking_outside_group | boolean | no | Prevent forking projects outside the group (Premium/Ultimate) |
prevent_sharing_groups_outside_hierarchy | boolean | no | Prevent inviting groups outside this group’s hierarchy |
project_creation_level | string (noone, maintainer, developer, administrator) | no | Who can create projects (noone, maintainer, developer) |
request_access_enabled | boolean | no | Allow users to request access |
require_two_factor_authentication | boolean | no | Require two-factor authentication for members |
share_with_group_lock | boolean | no | Prevent sharing projects in this group with other groups |
shared_runners_minutes_limit | integer | no | Shared runner compute-minutes limit (administrators only) |
shared_runners_setting | string (enabled, disabled_and_overridable, disabled_and_unoverridable) | no | Shared runners setting (enabled, disabled_and_overridable, disabled_and_unoverridable) |
step_up_auth_required_oauth_provider | string | no | OAuth provider required for step-up authentication |
subgroup_creation_level | string (owner, maintainer) | no | Who can create subgroups (owner, maintainer) |
two_factor_grace_period | integer | no | Grace period in hours before two-factor authentication is enforced |
unique_project_download_limit (Ultimate) | integer | no | Max number of unique projects a user can download before being banned (Ultimate) |
unique_project_download_limit_alertlist (Ultimate) | integer[] | no | User IDs notified when the unique project download limit is exceeded (Ultimate) |
unique_project_download_limit_allowlist (Ultimate) | string[] | no | Usernames excluded from the unique project download limit (Ultimate) |
unique_project_download_limit_interval_in_seconds (Ultimate) | integer | no | Time window in seconds for the unique project download limit (Ultimate) |
visibility | string (private, internal, public) | no | Visibility level (private, internal, public) |
web_based_commit_signing_enabled | boolean | no | Enable web-based commit signing for projects in this group |
wiki_access_level | string (disabled, private, enabled) | no | Wiki access level (disabled, private, enabled) |
group.upload_avatar
Section titled “group.upload_avatar”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, actionupload_avatar - Individual tool:
gitlab_group_upload_avatar - Tier: Free
- Behavior: writes, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
filename | string | yes | Avatar filename (e.g. avatar.png) |
group_id | string/integer | yes | Group ID or URL-encoded path |
content_base64 | string | no | Base64-encoded image content. Only one of file_path or content_base64 should be provided. |
file_path | string | no | Absolute 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. |
group.wiki_create
Section titled “group.wiki_create”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, actionwiki_create - Individual tool:
gitlab_group_wiki_create - Tier: Premium
- Behavior: writes, not idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
content | string | yes | Content of the wiki page |
group_id | string/integer | yes | Group ID or URL-encoded path |
title | string | yes | Title of the wiki page |
format | string (markdown, rdoc, asciidoc, org) | no | Content format: markdown (default), rdoc, asciidoc, or org |
group.wiki_delete
Section titled “group.wiki_delete”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, actionwiki_delete - Individual tool:
gitlab_group_wiki_delete - Tier: Premium
- Behavior: writes, destructive (needs confirmation), idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string/integer | yes | Group ID or URL-encoded path |
slug | string | yes | URL-encoded slug of the wiki page to delete |
group.wiki_edit
Section titled “group.wiki_edit”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, actionwiki_edit - Individual tool:
gitlab_group_wiki_edit - Tier: Premium
- Behavior: writes, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string/integer | yes | Group ID or URL-encoded path |
slug | string | yes | URL-encoded slug of the wiki page to edit |
content | string | no | New content |
format | string (markdown, rdoc, asciidoc, org) | no | Content format: markdown, rdoc, asciidoc, or org |
title | string | no | New title |
group.wiki_get
Section titled “group.wiki_get”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, actionwiki_get - Individual tool:
gitlab_group_wiki_get - Tier: Premium
- Behavior: read-only, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string/integer | yes | Group ID or URL-encoded path |
slug | string | yes | URL-encoded slug of the wiki page |
render_html | boolean | no | Return HTML-rendered content |
version | string | no | Wiki page version SHA |
group.wiki_list
Section titled “group.wiki_list”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, actionwiki_list - Individual tool:
gitlab_group_wiki_list - Tier: Premium
- Behavior: read-only, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_id | string/integer | yes | Group ID or URL-encoded path |
with_content | boolean | no | Include page content in the response |