Skip to content

Users

The current user and every user an administrator manages: read and list users, create, modify and delete accounts, and block, unblock, ban, unban, activate, deactivate, approve or reject one; SSH and GPG keys and emails, for the current user or for another; personal access tokens and impersonation tokens; the user’s status and avatar; activities, memberships, contribution and project events; to-do items; notification settings; namespaces; instance service accounts; and runners created for the user.

Project and group access tokens, deploy tokens and deploy keys are on Access tokens and credentials.

  • “Who am I logged in as?”
  • “List my SSH keys”
  • “What are my pending to-do items?”
  • “Block user spammer42”
  • Dynamic, the default surface: call gitlab_execute_action with action set to the action’s ID, such as user.activate, and its parameters in params. gitlab_find_action finds an ID from a description of the task.
  • Meta (GITLAB_MCP_TOOL_SURFACE=meta): call gitlab_user with action set to the action’s name, such as activate, and its parameters in params.
  • Individual (GITLAB_MCP_TOOL_SURFACE=individual): call the action’s own tool, such as gitlab_activate_user, with its parameters as the arguments.

Every tier serves the whole group, on self-managed instances and on GitLab.com alike.

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

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

ActionIndividual
user.activategitlab_activate_user
user.activitiesgitlab_get_user_activities
user.add_emailgitlab_add_email
user.add_email_for_usergitlab_add_email_for_user
user.add_gpg_keygitlab_add_gpg_key
user.add_gpg_key_for_usergitlab_add_gpg_key_for_user
user.add_ssh_keygitlab_add_ssh_key
user.add_ssh_key_for_usergitlab_add_ssh_key_for_user
user.approvegitlab_approve_user
user.associations_countgitlab_get_user_associations_count
user.avatar_getgitlab_get_avatar
user.bangitlab_ban_user
user.blockgitlab_block_user
user.contribution_eventsgitlab_list_user_contribution_events
user.creategitlab_create_user
user.create_current_user_patgitlab_create_current_user_pat
user.create_impersonation_tokengitlab_create_impersonation_token
user.create_personal_access_tokengitlab_create_personal_access_token
user.create_runnergitlab_create_user_runner
user.create_service_accountgitlab_create_service_account
user.currentgitlab_user_current
user.current_user_statusgitlab_current_user_status
user.deactivategitlab_deactivate_user
user.deletegitlab_delete_user
user.delete_emailgitlab_delete_email
user.delete_email_for_usergitlab_delete_email_for_user
user.delete_gpg_keygitlab_delete_gpg_key
user.delete_gpg_key_for_usergitlab_delete_gpg_key_for_user
user.delete_identitygitlab_delete_user_identity
user.delete_ssh_keygitlab_delete_ssh_key
user.delete_ssh_key_for_usergitlab_delete_ssh_key_for_user
user.disable_two_factorgitlab_disable_two_factor
user.emailsgitlab_list_emails
user.emails_for_usergitlab_list_emails_for_user
user.event_list_contributionsgitlab_user_contribution_event_list
user.event_list_projectgitlab_project_event_list
user.getgitlab_get_user
user.get_emailgitlab_get_email
user.get_gpg_keygitlab_get_gpg_key
user.get_gpg_key_for_usergitlab_get_gpg_key_for_user
user.get_impersonation_tokengitlab_get_impersonation_token
user.get_ssh_keygitlab_get_ssh_key
user.get_ssh_key_for_usergitlab_get_ssh_key_for_user
user.get_statusgitlab_get_user_status
user.gpg_keysgitlab_list_gpg_keys
user.gpg_keys_for_usergitlab_list_gpg_keys_for_user
user.key_get_by_fingerprintgitlab_get_key_by_fingerprint
user.key_get_with_usergitlab_get_key_with_user
user.listgitlab_list_users
user.list_impersonation_tokensgitlab_list_impersonation_tokens
user.list_service_accountsgitlab_list_service_accounts
user.megitlab_user_current
user.membershipsgitlab_get_user_memberships
user.modifygitlab_modify_user
user.namespace_existsgitlab_namespace_exists
user.namespace_getgitlab_namespace_get
user.namespace_listgitlab_namespace_list
user.namespace_searchgitlab_namespace_search
user.notification_global_getgitlab_notification_global_get
user.notification_global_updategitlab_notification_global_update
user.notification_group_getgitlab_notification_group_get
user.notification_group_updategitlab_notification_group_update
user.notification_project_getgitlab_notification_project_get
user.notification_project_updategitlab_notification_project_update
user.rejectgitlab_reject_user
user.revoke_impersonation_tokengitlab_revoke_impersonation_token
user.set_statusgitlab_set_user_status
user.ssh_keysgitlab_list_ssh_keys
user.ssh_keys_for_usergitlab_list_ssh_keys_for_user
user.todo_listgitlab_todo_list
user.todo_mark_all_donegitlab_todo_mark_all_done
user.todo_mark_donegitlab_todo_mark_done
user.unbangitlab_unban_user
user.unblockgitlab_unblock_user
user.update_service_accountgitlab_update_instance_service_account
user.upload_avatargitlab_upload_user_avatar

Activate a deactivated user. Returns: confirmation with the user ID and action. See also: user.deactivate, user.unblock, user.get.

  • Meta-tool: gitlab_user, action activate
  • Individual tool: gitlab_activate_user
  • Tier: Free
  • Behavior: writes, idempotent
ParameterTypeMandatoryDescription
user_idintegeryesThe ID of the user

List user activities (admin). Returns: username and last-activity date per user. See also: user.list, user.contribution_events, user.memberships.

  • Meta-tool: gitlab_user, action activities
  • Individual tool: gitlab_get_user_activities
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
fromstringnoOnly activities after this date (YYYY-MM-DD)
order_bystringnoColumn to order keyset-paginated results by (e.g. id)
pageintegernoPage number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward.
page_tokenstringnoKeyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’.
paginationstringnoPagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost.
per_pageintegernoItems per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large.
sortstring (asc, desc)noSort order for keyset pagination: asc or desc

Add an email address to the authenticated user’s account. Returns: the created email’s ID, address, and confirmation timestamp. See also: user.get_email, user.delete_email, user.add_email_for_user.

  • Meta-tool: gitlab_user, action add_email
  • Individual tool: gitlab_add_email
  • Tier: Free
  • Behavior: writes, not idempotent
ParameterTypeMandatoryDescription
emailstringyesEmail address to add
skip_confirmationbooleannoSkip confirmation email (admin only)

Add an email address to a specific user’s account (admin only). Returns: the created email’s ID, address, and confirmation timestamp. See also: user.emails_for_user, user.delete_email_for_user, user.add_email.

  • Meta-tool: gitlab_user, action add_email_for_user
  • Individual tool: gitlab_add_email_for_user
  • Tier: Free
  • Behavior: writes, not idempotent
ParameterTypeMandatoryDescription
emailstringyesEmail address to add
user_idintegeryesGitLab user ID
skip_confirmationbooleannoSkip confirmation email (admin only)

Add a GPG key to the authenticated user’s account. Returns: the created key’s ID, armored public key, and creation timestamp. See also: user.gpg_keys, user.get_gpg_key, user.delete_gpg_key, user.add_gpg_key_for_user.

  • Meta-tool: gitlab_user, action add_gpg_key
  • Individual tool: gitlab_add_gpg_key
  • Tier: Free
  • Behavior: writes, not idempotent
ParameterTypeMandatoryDescription
keystringyesThe armored GPG public key content

Add a GPG key to a specific user’s account (admin only). Returns: the created key’s ID, armored public key, and creation timestamp. See also: user.gpg_keys_for_user, user.get_gpg_key_for_user, user.delete_gpg_key_for_user, user.add_gpg_key.

  • Meta-tool: gitlab_user, action add_gpg_key_for_user
  • Individual tool: gitlab_add_gpg_key_for_user
  • Tier: Free
  • Behavior: writes, not idempotent
ParameterTypeMandatoryDescription
keystringyesThe armored GPG public key content
user_idintegeryesThe ID of the user

Add an SSH key to the current user. Returns: created key ID, title, usage type, and expiry. See also: user.ssh_keys, user.get_ssh_key, user.delete_ssh_key.

  • Meta-tool: gitlab_user, action add_ssh_key
  • Individual tool: gitlab_add_ssh_key
  • Tier: Free
  • Behavior: writes, not idempotent
ParameterTypeMandatoryDescription
keystringyesThe SSH public key content
titlestringyesA descriptive title for the SSH key
expires_atstringnoExpiration date in ISO 8601 format (YYYY-MM-DD)
usage_typestring (auth, signing, auth_and_signing)noSSH key usage scope: auth (authentication), signing (commit signing), or auth_and_signing (both). Default: auth_and_signing.

Add an SSH key to a specific user. Returns: created key ID, title, usage type, and expiry. Requires admin token. See also: user.ssh_keys_for_user, user.get_ssh_key_for_user, user.delete_ssh_key_for_user.

  • Meta-tool: gitlab_user, action add_ssh_key_for_user
  • Individual tool: gitlab_add_ssh_key_for_user
  • Tier: Free
  • Behavior: writes, not idempotent
ParameterTypeMandatoryDescription
keystringyesThe SSH public key content
titlestringyesA descriptive title for the SSH key
user_idintegeryesThe ID of the user
expires_atstringnoExpiration date in ISO 8601 format (YYYY-MM-DD)
usage_typestring (auth, signing, auth_and_signing)noSSH key usage scope: auth (authentication), signing (commit signing), or auth_and_signing (both). Default: auth_and_signing.

Approve a pending user sign-up. Returns: confirmation with the user ID and action. See also: user.reject, user.get, user.list.

  • Meta-tool: gitlab_user, action approve
  • Individual tool: gitlab_approve_user
  • Tier: Free
  • Behavior: writes, idempotent
ParameterTypeMandatoryDescription
user_idintegeryesThe ID of the user

Get a user’s association counts. Returns: groups, projects, issues, and merge-requests counts. See also: user.get, user.memberships, user.delete.

  • Meta-tool: gitlab_user, action associations_count
  • Individual tool: gitlab_get_user_associations_count
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
user_idintegeryesThe ID of the user

Get the avatar URL for an email address. Returns: the resolved avatar URL for that email address. See also: user.me, user.get_status.

  • Meta-tool: gitlab_user, action avatar_get
  • Individual tool: gitlab_get_avatar
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
emailstringyesEmail address to look up avatar for
sizeintegernoDesired avatar size in pixels

Ban a user. Returns: confirmation with the user ID and action. Reversible via user.unban. See also: user.unban, user.block, user.get.

  • Meta-tool: gitlab_user, action ban
  • Individual tool: gitlab_ban_user
  • Tier: Free
  • Behavior: writes, destructive (needs confirmation), idempotent
ParameterTypeMandatoryDescription
user_idintegeryesThe ID of the user

Block a user from signing in. Returns: confirmation with the user ID and action. Reversible via user.unblock. See also: user.unblock, user.ban, user.get.

  • Meta-tool: gitlab_user, action block
  • Individual tool: gitlab_block_user
  • Tier: Free
  • Behavior: writes, destructive (needs confirmation), idempotent
ParameterTypeMandatoryDescription
user_idintegeryesThe ID of the user

List a user’s contribution events. Returns: event entries with action, target type/title and link, project, author, timestamp, the push, note or wiki page the event concerns, and its import origin. See also: user.get, user.activities, user.associations_count.

  • Meta-tool: gitlab_user, action contribution_events
  • Individual tool: gitlab_list_user_contribution_events
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
user_idintegeryesThe ID of the user whose events to retrieve
actionstring (created, updated, closed, reopened, pushed, commented, merged, joined, left, destroyed, expired, approved, transferred)noFilter by event action, one of created, updated, closed, reopened, pushed, commented, merged, joined, left, destroyed, expired, approved, transferred. Any other value is refused before the request, since GitLab would ignore it and answer every event.
afterstringnoOnly events after this date (YYYY-MM-DD)
beforestringnoOnly events before this date (YYYY-MM-DD)
order_bystringnoColumn to order keyset-paginated results by (e.g. id)
pageintegernoPage number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward.
page_tokenstringnoKeyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’.
paginationstringnoPagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost.
per_pageintegernoItems per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large.
scopestringnoInclude all events across a user’s projects (e.g. ‘all’)
sortstring (asc, desc)noSort order: asc or desc
target_typestring (issue, milestone, merge_request, note, project, snippet, user, wiki, design)noFilter by event target type, one of issue, milestone, merge_request, note, project, snippet, user, wiki, design. GitLab refuses any other value, epic included. Responses spell the type in model form (Issue, MergeRequest, WikiPage::Meta, DesignManagement::Design), which a filter does not accept.

Create a user account. Returns: created user identity and profile summary fields. See also: user.get, user.modify, user.block.

  • Meta-tool: gitlab_user, action create
  • Individual tool: gitlab_create_user
  • Tier: Free
  • Behavior: writes, not idempotent
ParameterTypeMandatoryDescription
emailstringyesThe user email address
namestringyesThe user display name
usernamestringyesThe username
adminbooleannoGrant admin privileges
auditor (Premium)booleannoGrant auditor privileges (Premium/Ultimate)
biostringnoUser bio text
can_create_groupbooleannoAllow the user to create groups
color_scheme_idintegernoSyntax-highlighting color scheme ID
commit_emailstringnoEmail used for commits
discordstringnoDiscord account
extern_uidstringnoExternal UID for the provider
externalbooleannoMark user as external
extra_shared_runners_minutes_limit (Premium)integernoExtra shared runners minutes (admin, Premium/Ultimate)
force_random_passwordbooleannoSet a random password instead of requiring one
githubstringnoGitHub account
group_id_for_samlintegernoGroup ID for SAML provisioning
job_titlestringnoUser job title
linkedinstringnoLinkedIn account
locationstringnoUser location
notestringnoAdmin note about the user
organizationstringnoUser organization
passwordstringnoThe user password (required unless reset_password or force_random_password is set)
private_profilebooleannoMake the user’s profile private
projects_limitintegernoMaximum number of projects the user can create
pronounsstringnoUser pronouns
providerstringnoExternal provider name (use with extern_uid)
public_emailstringnoPublicly visible email address
reset_passwordbooleannoSend a password reset email instead of setting password
shared_runners_minutes_limit (Premium)integernoShared runners minutes limit (admin, Premium/Ultimate)
skip_confirmationbooleannoSkip confirmation email and activate user immediately
theme_idintegernoGitLab theme ID for the user’s UI
twitterstringnoTwitter/X account
view_diffs_file_by_filebooleannoShow whitespace changes in diffs file by file
website_urlstringnoUser website URL

Create a personal access token for the current user. Returns: token ID, the secret token, scopes, and expiry. See also: user.me, user.create_runner.

  • Meta-tool: gitlab_user, action create_current_user_pat
  • Individual tool: gitlab_create_current_user_pat
  • Tier: Free
  • Behavior: writes, not idempotent
ParameterTypeMandatoryDescription
namestringyesName of the personal access token
scopesstring[]yesArray of scopes
descriptionstringnoDescription for the token
expires_atstringnoToken expiration date (YYYY-MM-DD)

Create an impersonation token for a user with the given scopes and optional expiry. Returns: the new token’s id, name, active flag, scopes, revoked flag, created_at, expires_at, and the secret token value (shown once). See also: user.list_impersonation_tokens, user.revoke_impersonation_token, user.create_personal_access_token.

  • Meta-tool: gitlab_user, action create_impersonation_token
  • Individual tool: gitlab_create_impersonation_token
  • Tier: Free
  • Behavior: writes, not idempotent
ParameterTypeMandatoryDescription
namestringyesName of the impersonation token
scopesstring[]yesArray of scopes (api/read_user/read_api/read_repository/write_repository/read_registry/write_registry/sudo/admin_mode/create_runner/manage_runner/ai_features/k8s_proxy)
user_idintegeryesGitLab user ID
expires_atstringnoToken expiration date (YYYY-MM-DD)

Create a personal access token for a user with the given scopes, optional description, and optional expiry. Returns: the new token’s id, name, active flag, scopes, revoked flag, description, user_id, created_at, expires_at, and the secret token value (shown once). See also: access.token_personal_list, access.token_personal_revoke, user.create_impersonation_token.

  • Meta-tool: gitlab_user, action create_personal_access_token
  • Individual tool: gitlab_create_personal_access_token
  • Tier: Free
  • Behavior: writes, not idempotent
ParameterTypeMandatoryDescription
namestringyesName of the personal access token
scopesstring[]yesArray of scopes
user_idintegeryesGitLab user ID
descriptionstringnoDescription for the token
expires_atstringnoToken expiration date (YYYY-MM-DD)

Create a runner linked to the current user. Returns: runner ID, authentication token, and token expiry. See also: user.me, user.create_current_user_pat.

  • Meta-tool: gitlab_user, action create_runner
  • Individual tool: gitlab_create_user_runner
  • Tier: Free
  • Behavior: writes, not idempotent
ParameterTypeMandatoryDescription
runner_typestring (instance_type, group_type, project_type)yesRunner scope: instance_type (shared), group_type (requires group_id), or project_type (requires project_id).
access_levelstringnoAccess level: not_protected or ref_protected
descriptionstringnoRunner description
group_idintegernoGroup ID (required for group_type runners)
lockedbooleannoWhether the runner should be locked
maintenance_notestringnoMaintenance note for the runner
maximum_timeoutintegernoMaximum timeout for jobs in seconds
pausedbooleannoWhether the runner should be paused
project_idintegernoProject ID (required for project_type runners)
run_untaggedbooleannoWhether the runner can run untagged jobs
tag_liststring[]noList of runner tags

Create an instance-level service account. Returns: the created service account with ID, username, name, and email. Requires admin token. See also: user.list_service_accounts, user.update_service_account.

  • Meta-tool: gitlab_user, action create_service_account
  • Individual tool: gitlab_create_service_account
  • Tier: Free
  • Behavior: writes, not idempotent
ParameterTypeMandatoryDescription
emailstringnoEmail for the service account
namestringnoName for the service account
usernamestringnoUsername for the service account

Get the current authenticated user. Returns: account ID, username, name, state, avatar URL, and profile metadata. See also: user.list, user.current_user_status, user.emails.

  • Meta-tool: gitlab_user, action current
  • Individual tool: gitlab_user_current
  • Tier: Free
  • Behavior: read-only, idempotent

No parameters.

Get the current user’s status. Returns: emoji, message, availability, and clear-status time. See also: user.set_status, user.get_status, user.me.

  • Meta-tool: gitlab_user, action current_user_status
  • Individual tool: gitlab_current_user_status
  • Tier: Free
  • Behavior: read-only, idempotent

No parameters.

Deactivate an active user. Returns: confirmation with the user ID and action. Reversible via user.activate. See also: user.activate, user.block, user.get.

  • Meta-tool: gitlab_user, action deactivate
  • Individual tool: gitlab_deactivate_user
  • Tier: Free
  • Behavior: writes, destructive (needs confirmation), idempotent
ParameterTypeMandatoryDescription
user_idintegeryesThe ID of the user

Delete a user account. Returns: confirmation with the deleted user ID. Requires admin token. See also: user.get, user.block, user.associations_count.

  • Meta-tool: gitlab_user, action delete
  • Individual tool: gitlab_delete_user
  • Tier: Free
  • Behavior: writes, destructive (needs confirmation), idempotent
ParameterTypeMandatoryDescription
user_idintegeryesThe ID of the user to delete

Delete an email address from the authenticated user’s account. Returns: a confirmation naming the deleted email ID. See also: user.get_email, user.add_email, user.delete_email_for_user.

  • Meta-tool: gitlab_user, action delete_email
  • Individual tool: gitlab_delete_email
  • Tier: Free
  • Behavior: writes, destructive (needs confirmation), idempotent
ParameterTypeMandatoryDescription
email_idintegeryesEmail ID to delete

Delete an email address from a specific user’s account (admin only). Returns: a confirmation naming the deleted email ID. See also: user.emails_for_user, user.add_email_for_user, user.delete_email.

  • Meta-tool: gitlab_user, action delete_email_for_user
  • Individual tool: gitlab_delete_email_for_user
  • Tier: Free
  • Behavior: writes, destructive (needs confirmation), idempotent
ParameterTypeMandatoryDescription
email_idintegeryesEmail ID to delete
user_idintegeryesGitLab user ID

Delete a GPG key from the authenticated user’s account. Returns: a confirmation naming the deleted key ID. See also: user.gpg_keys, user.get_gpg_key, user.add_gpg_key, user.delete_gpg_key_for_user.

  • Meta-tool: gitlab_user, action delete_gpg_key
  • Individual tool: gitlab_delete_gpg_key
  • Tier: Free
  • Behavior: writes, destructive (needs confirmation), idempotent
ParameterTypeMandatoryDescription
key_idintegeryesThe ID of the GPG key to delete

Delete a GPG key from a specific user’s account (admin only). Returns: a confirmation naming the deleted key ID. See also: user.gpg_keys_for_user, user.get_gpg_key_for_user, user.add_gpg_key_for_user, user.delete_gpg_key.

  • Meta-tool: gitlab_user, action delete_gpg_key_for_user
  • Individual tool: gitlab_delete_gpg_key_for_user
  • Tier: Free
  • Behavior: writes, destructive (needs confirmation), idempotent
ParameterTypeMandatoryDescription
key_idintegeryesThe ID of the GPG key to delete
user_idintegeryesThe ID of the user

Delete a user’s external identity. Returns: confirmation with user ID and provider. Requires admin token. See also: user.get, user.modify.

  • Meta-tool: gitlab_user, action delete_identity
  • Individual tool: gitlab_delete_user_identity
  • Tier: Free
  • Behavior: writes, destructive (needs confirmation), idempotent
ParameterTypeMandatoryDescription
providerstringyesThe external provider name (e.g. ldap or saml)
user_idintegeryesThe ID of the user

Delete one of the current user’s SSH keys. Returns: confirmation with the deleted key ID. See also: user.ssh_keys, user.get_ssh_key, user.add_ssh_key.

  • Meta-tool: gitlab_user, action delete_ssh_key
  • Individual tool: gitlab_delete_ssh_key
  • Tier: Free
  • Behavior: writes, destructive (needs confirmation), idempotent
ParameterTypeMandatoryDescription
key_idintegeryesThe ID of the SSH key to delete

Delete a specific user’s SSH key. Returns: confirmation with the deleted key ID. Requires admin token. See also: user.ssh_keys_for_user, user.get_ssh_key_for_user, user.add_ssh_key_for_user.

  • Meta-tool: gitlab_user, action delete_ssh_key_for_user
  • Individual tool: gitlab_delete_ssh_key_for_user
  • Tier: Free
  • Behavior: writes, destructive (needs confirmation), idempotent
ParameterTypeMandatoryDescription
key_idintegeryesThe ID of the SSH key to delete
user_idintegeryesThe ID of the user

Disable 2FA for a user. Returns: confirmation with the user ID and action. See also: user.get, user.modify.

  • Meta-tool: gitlab_user, action disable_two_factor
  • Individual tool: gitlab_disable_two_factor
  • Tier: Free
  • Behavior: writes, destructive (needs confirmation), idempotent
ParameterTypeMandatoryDescription
user_idintegeryesThe ID of the user

List the current user’s email addresses. Returns: email entries with ID, address, and confirmation time, with pagination metadata. See also: user.me, user.modify.

  • Meta-tool: gitlab_user, action emails
  • Individual tool: gitlab_list_emails
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
pageintegernoPage number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward.
per_pageintegernoItems per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large.

List the email addresses registered to a specific user account. Returns: each email’s ID, address, and confirmation timestamp, with pagination metadata. See also: user.get_email, user.add_email_for_user, user.delete_email_for_user, user.get.

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

List the current user’s contribution events. Returns: each event with action_name, target type and IID, push_data, embedded note, author object, created timestamp, and pagination metadata. See also: user.event_list_project, user.get.

  • Meta-tool: gitlab_user, action event_list_contributions
  • Individual tool: gitlab_user_contribution_event_list
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
actionstring (created, updated, closed, reopened, pushed, commented, merged, joined, left, destroyed, expired, approved, transferred)noFilter by event action, one of created, updated, closed, reopened, pushed, commented, merged, joined, left, destroyed, expired, approved, transferred. Any other value is refused before the request, since GitLab would ignore it and answer every event.
afterstringnoReturn events after this date (YYYY-MM-DD)
beforestringnoReturn events before this date (YYYY-MM-DD)
order_bystringnoColumn by which to order keyset-paginated results (id)
pageintegernoPage number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward.
page_tokenstringnoKeyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’.
paginationstringnoPagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost.
per_pageintegernoItems per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large.
scopestringnoInclude events from all projects (all) or only user’s projects
sortstring (asc, desc)noSort order (asc or desc)
target_typestring (issue, milestone, merge_request, note, project, snippet, user, wiki, design)noFilter by event target type, one of issue, milestone, merge_request, note, project, snippet, user, wiki, design. GitLab refuses any other value, epic included. Responses spell the type in model form (Issue, MergeRequest, WikiPage::Meta, DesignManagement::Design), which a filter does not accept.

List a project’s visible activity events. Returns: each event with action_name, target type and IID, push_data, embedded note with author, data (ref, commits, repository), author object, created timestamp, and pagination metadata. See also: user.event_list_contributions, project.get.

  • Meta-tool: gitlab_user, action event_list_project
  • Individual tool: gitlab_project_event_list
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
project_idstring/integeryesProject ID or URL-encoded path
actionstring (created, updated, closed, reopened, pushed, commented, merged, joined, left, destroyed, expired, approved, transferred)noFilter by event action, one of created, updated, closed, reopened, pushed, commented, merged, joined, left, destroyed, expired, approved, transferred. Any other value is refused before the request, since GitLab would ignore it and answer every event.
afterstringnoReturn events after this date (YYYY-MM-DD)
beforestringnoReturn events before this date (YYYY-MM-DD)
order_bystringnoColumn by which to order keyset-paginated results (id)
pageintegernoPage number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward.
page_tokenstringnoKeyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’.
paginationstringnoPagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost.
per_pageintegernoItems per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large.
sortstring (asc, desc)noSort order (asc or desc, default desc)
target_typestring (issue, milestone, merge_request, note, project, snippet, user, wiki, design)noFilter by event target type, one of issue, milestone, merge_request, note, project, snippet, user, wiki, design. GitLab refuses any other value, epic included. Responses spell the type in model form (Issue, MergeRequest, WikiPage::Meta, DesignManagement::Design), which a filter does not accept.

Get one user by ID. Returns: detailed account profile metadata and status fields. See also: user.list, user.modify, user.delete.

  • Meta-tool: gitlab_user, action get
  • Individual tool: gitlab_get_user
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
user_idintegeryesThe ID of the user to retrieve
with_custom_attributesbooleannoInclude custom attributes in the response (admin only)

Get one email address from the authenticated user’s account by ID. Returns: the email’s ID, address, and confirmation timestamp. See also: user.add_email, user.delete_email, user.emails_for_user.

  • Meta-tool: gitlab_user, action get_email
  • Individual tool: gitlab_get_email
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
email_idintegernoEmail ID to retrieve

Get one GPG key from the authenticated user’s account by ID. Returns: the key’s ID, armored public key, and creation timestamp. See also: user.gpg_keys, user.add_gpg_key, user.delete_gpg_key.

  • Meta-tool: gitlab_user, action get_gpg_key
  • Individual tool: gitlab_get_gpg_key
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
key_idintegeryesThe ID of the GPG key

Get one GPG key from a specific user’s account by ID. Returns: the key’s ID, armored public key, and creation timestamp. See also: user.gpg_keys_for_user, user.add_gpg_key_for_user, user.delete_gpg_key_for_user, user.get.

  • Meta-tool: gitlab_user, action get_gpg_key_for_user
  • Individual tool: gitlab_get_gpg_key_for_user
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
key_idintegeryesThe ID of the GPG key
user_idintegeryesThe ID of the user

Get a single impersonation token for a user by token id. Returns: the token’s id, name, active flag, scopes, revoked flag, created_at, expires_at, and last_used_at. See also: user.list_impersonation_tokens, user.revoke_impersonation_token.

  • Meta-tool: gitlab_user, action get_impersonation_token
  • Individual tool: gitlab_get_impersonation_token
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
token_idintegeryesImpersonation token ID
user_idintegeryesGitLab user ID

Get one of the current user’s SSH keys by ID. Returns: key ID, title, public key, usage type, and expiry. See also: user.ssh_keys, user.add_ssh_key, user.delete_ssh_key.

  • Meta-tool: gitlab_user, action get_ssh_key
  • Individual tool: gitlab_get_ssh_key
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
key_idintegeryesThe ID of the SSH key

Get a specific user’s SSH key by ID. Returns: key ID, title, public key, usage type, and expiry. See also: user.ssh_keys_for_user, user.add_ssh_key_for_user, user.delete_ssh_key_for_user.

  • Meta-tool: gitlab_user, action get_ssh_key_for_user
  • Individual tool: gitlab_get_ssh_key_for_user
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
key_idintegeryesThe ID of the SSH key
user_idintegeryesThe ID of the user

Get a user’s status by ID. Returns: emoji, message, availability, and clear-status time. See also: user.current_user_status, user.set_status, user.get.

  • Meta-tool: gitlab_user, action get_status
  • Individual tool: gitlab_get_user_status
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
user_idintegeryesThe ID of the user whose status to retrieve

List the authenticated user’s GPG keys. Returns: each key’s ID, armored public key, and creation timestamp, with pagination metadata. See also: user.get_gpg_key, user.add_gpg_key, user.delete_gpg_key, user.gpg_keys_for_user.

  • Meta-tool: gitlab_user, action gpg_keys
  • Individual tool: gitlab_list_gpg_keys
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
pageintegernoPage number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward.
per_pageintegernoItems per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large.

List a specific user’s GPG keys. Returns: each key’s ID, armored public key, and creation timestamp, with pagination metadata. See also: user.get_gpg_key_for_user, user.add_gpg_key_for_user, user.delete_gpg_key_for_user, user.get.

  • Meta-tool: gitlab_user, action gpg_keys_for_user
  • Individual tool: gitlab_list_gpg_keys_for_user
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
user_idintegeryesThe ID of the user
pageintegernoPage number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward.
per_pageintegernoItems per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large.

Look up an SSH key or deploy key by fingerprint and return the owning user. Returns: the key ID, title, public key, creation time, and the owning user (ID, username, name). See also: user.get_ssh_key, user.ssh_keys, user.ssh_keys_for_user.

  • Meta-tool: gitlab_user, action key_get_by_fingerprint
  • Individual tool: gitlab_get_key_by_fingerprint
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
fingerprintstringyesSSH key fingerprint, either the SHA256 form (for example SHA256:abc123) or the legacy MD5 hex-pair form (for example MD5:aa:bb:cc)

Look up an SSH key by its global ID and return the owning user. Returns: the key ID, title, public key, creation time, and the owning user (ID, username, name). See also: user.get_ssh_key, user.ssh_keys, user.ssh_keys_for_user.

  • Meta-tool: gitlab_user, action key_get_with_user
  • Individual tool: gitlab_get_key_with_user
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
key_idintegeryesSSH key ID

List users with filtering and pagination support. Returns: user summaries including ID, username, name, state, and profile URLs. See also: user.get, user.me, user.create.

  • Meta-tool: gitlab_user, action list
  • Individual tool: gitlab_list_users
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
activebooleannoFilter for active users only
adminsbooleannoFilter for administrators only
blockedbooleannoFilter for blocked users only
created_afterstringnoFilter users created after this date (RFC3339)
created_beforestringnoFilter users created before this date (RFC3339)
custom_attributesobjectnoFilter users by custom attribute key/value pairs (admin only). Different from with_custom_attributes, which only controls whether attributes are returned
exclude_activebooleannoExclude active users from the result
exclude_externalbooleannoExclude external users from the result
exclude_humansbooleannoExclude human users from the result
exclude_internalbooleannoExclude internal (bot/system) users from the result
extern_uidstringnoFilter by external UID (use with provider)
externalbooleannoFilter for external users only
humansbooleannoFilter for human (non-bot, non-internal) users only
order_bystring (id, name, username, created_at, updated_at)noOrder users by: id, name, username, created_at, or updated_at.
pageintegernoPage number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward.
page_tokenstringnoKeyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’.
paginationstringnoPagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost.
per_pageintegernoItems per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large.
providerstringnoFilter by external provider name (use with extern_uid)
public_emailstringnoFilter by exact public email address
searchstringnoSearch users by name or username or email
sortstring (asc, desc)noSort order: asc or desc
two_factorstring (enabled, disabled)noFilter by two-factor authentication status: enabled or disabled.
usernamestringnoFilter by exact username
with_custom_attributesbooleannoInclude custom attributes in the response (admin only)
without_project_botsbooleannoExclude project bot users from the result
without_projectsbooleannoFilter for users without any projects

List the impersonation tokens of a user. Returns: each token’s id, name, active flag, scopes, revoked flag, created_at, expires_at, and last_used_at, with pagination metadata. See also: user.get_impersonation_token, user.create_impersonation_token, user.revoke_impersonation_token.

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

List instance-level service accounts. Returns: service account summaries with ID, username, name, and email, with pagination metadata. Requires admin token. See also: user.create_service_account, user.update_service_account.

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

Get the current authenticated user. Returns: account ID, username, name, state, avatar URL, and profile metadata. See also: user.list, user.current_user_status, user.emails.

  • Meta-tool: gitlab_user, action me
  • Individual tool: gitlab_user_current
  • Tier: Free
  • Behavior: read-only, idempotent

No parameters.

List a user’s memberships. Returns: source ID, name, type, and access level per membership. See also: user.get, user.associations_count, user.activities.

  • Meta-tool: gitlab_user, action memberships
  • Individual tool: gitlab_get_user_memberships
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
user_idintegeryesThe ID of the user
order_bystringnoColumn to order keyset-paginated results by (e.g. id)
pageintegernoPage number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward.
page_tokenstringnoKeyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’.
paginationstringnoPagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost.
per_pageintegernoItems per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large.
sortstring (asc, desc)noSort order for keyset pagination: asc or desc
typestring (Project, Namespace)noMembership type filter: Project (project memberships) or Namespace (group memberships).

Modify an existing user. Returns: the updated user profile metadata. See also: user.get, user.create, user.delete.

  • Meta-tool: gitlab_user, action modify
  • Individual tool: gitlab_modify_user
  • Tier: Free
  • Behavior: writes, idempotent
ParameterTypeMandatoryDescription
user_idintegeryesThe ID of the user to modify
adminbooleannoGrant or revoke admin privileges
auditor (Premium)booleannoGrant or revoke auditor privileges (Premium/Ultimate)
biostringnoNew bio text
can_create_groupbooleannoAllow user to create groups
commit_emailstringnoEmail used for commits
emailstringnoNew email address
extern_uidstringnoExternal UID for the provider
externalbooleannoMark or unmark as external
job_titlestringnoNew job title
linkedinstringnoLinkedIn account
locationstringnoNew location
namestringnoNew display name
notestringnoNew admin note
organizationstringnoNew organization
passwordstringnoNew password
private_profilebooleannoSet profile as private
projects_limitintegernoNew maximum projects limit
providerstringnoExternal provider name (use with extern_uid)
public_emailstringnoPublicly visible email address
skip_reconfirmationbooleannoSkip reconfirmation on email change
theme_idintegernoGitLab theme ID for the user’s UI
twitterstringnoTwitter/X account
usernamestringnoNew username
view_diffs_file_by_filebooleannoShow whitespace changes in diffs file by file
website_urlstringnoUser website URL

Check whether a namespace path is taken. Returns: an exists flag and suggested alternative paths when the path is unavailable. See also: user.namespace_get, user.namespace_search.

  • Meta-tool: gitlab_user, action namespace_exists
  • Individual tool: gitlab_namespace_exists
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
idstringyesNamespace path to check for existence
parent_idintegernoParent namespace ID to scope the check

Get a single namespace by ID or path. Returns: the namespace with id, name, path, kind, full path, parent id, plan, trial state, and seat usage. See also: user.namespace_list, user.namespace_search.

  • Meta-tool: gitlab_user, action namespace_get
  • Individual tool: gitlab_namespace_get
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
idstringyesNamespace ID or path

List namespaces visible to the authenticated user. Returns: matching namespaces with id, name, path, kind, plan, seat usage, and pagination metadata. See also: user.namespace_get, user.namespace_search, group.list.

  • Meta-tool: gitlab_user, action namespace_list
  • Individual tool: gitlab_namespace_list
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
order_bystringnoColumn to order keyset-paginated results by (e.g. id)
owned_onlybooleannoIf true return only namespaces owned by the authenticated user
pageintegernoPage number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward.
page_tokenstringnoKeyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’.
paginationstringnoPagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost.
per_pageintegernoItems per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large.
searchstringnoFilter namespaces by search term
sortstring (asc, desc)noSort direction for keyset-paginated results (asc, desc)
top_level_onlybooleannoIf true return only top-level namespaces

Search namespaces by name or path. Returns: matching namespaces with id, name, path, kind, and pagination metadata. See also: user.namespace_list, user.namespace_get.

  • Meta-tool: gitlab_user, action namespace_search
  • Individual tool: gitlab_namespace_search
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
querystringyesSearch query string for namespaces

Get the authenticated user’s global notification settings. Returns: the global notification level, notification email, and the per-event flags (issue, merge request, pipeline, note, and epic events) when the level is custom. See also: user.notification_global_update, user.notification_project_get, user.notification_group_get.

  • Meta-tool: gitlab_user, action notification_global_get
  • Individual tool: gitlab_notification_global_get
  • Tier: Free
  • Behavior: read-only, idempotent

No parameters.

Update the authenticated user’s global notification settings. Returns: the updated global notification level, notification email, and per-event flags. See also: user.notification_global_get, user.notification_project_update, user.notification_group_update.

  • Meta-tool: gitlab_user, action notification_global_update
  • Individual tool: gitlab_notification_global_update
  • Tier: Free
  • Behavior: writes, idempotent
ParameterTypeMandatoryDescription
close_issuebooleannoNotify on issue close
close_merge_requestbooleannoNotify on MR close
failed_pipelinebooleannoNotify on pipeline failure
fixed_pipelinebooleannoNotify on pipeline fix
issue_duebooleannoNotify on issue due date
levelstring (disabled, participating, watch, mention, custom)noNotification level: disabled, participating, watch, mention, custom
merge_merge_requestbooleannoNotify on MR merge
merge_when_pipeline_succeedsbooleannoNotify on merge when pipeline succeeds
moved_projectbooleannoNotify on project move
new_epicbooleannoNotify on new epic
new_issuebooleannoNotify on new issue
new_merge_requestbooleannoNotify on new MR
new_notebooleannoNotify on new note
notification_emailstringnoEmail address for notifications
push_to_merge_requestbooleannoNotify on push to MR
reassign_issuebooleannoNotify on issue reassign
reassign_merge_requestbooleannoNotify on MR reassign
reopen_issuebooleannoNotify on issue reopen
reopen_merge_requestbooleannoNotify on MR reopen
success_pipelinebooleannoNotify on pipeline success

Get the authenticated user’s notification settings for a group. Returns: the group notification level, notification email, and per-event flags when the level is custom. See also: user.notification_group_update, user.notification_global_get, user.notification_project_get.

  • Meta-tool: gitlab_user, action notification_group_get
  • Individual tool: gitlab_notification_group_get
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
group_idstring/integeryesGroup ID or URL-encoded path

Update the authenticated user’s notification settings for a group. Returns: the updated group notification level, notification email, and per-event flags. See also: user.notification_group_get, user.notification_global_update, user.notification_project_update.

  • Meta-tool: gitlab_user, action notification_group_update
  • Individual tool: gitlab_notification_group_update
  • Tier: Free
  • Behavior: writes, idempotent
ParameterTypeMandatoryDescription
group_idstring/integeryesGroup ID or URL-encoded path
close_issuebooleannoNotify on issue close
close_merge_requestbooleannoNotify on MR close
failed_pipelinebooleannoNotify on pipeline failure
fixed_pipelinebooleannoNotify on pipeline fix
issue_duebooleannoNotify on issue due date
levelstring (disabled, participating, watch, global, mention, custom)noNotification level: disabled, participating, watch, global, mention, custom
merge_merge_requestbooleannoNotify on MR merge
merge_when_pipeline_succeedsbooleannoNotify on merge when pipeline succeeds
moved_projectbooleannoNotify on project move
new_epicbooleannoNotify on new epic
new_issuebooleannoNotify on new issue
new_merge_requestbooleannoNotify on new MR
new_notebooleannoNotify on new note
notification_emailstringnoEmail address for notifications
push_to_merge_requestbooleannoNotify on push to MR
reassign_issuebooleannoNotify on issue reassign
reassign_merge_requestbooleannoNotify on MR reassign
reopen_issuebooleannoNotify on issue reopen
reopen_merge_requestbooleannoNotify on MR reopen
success_pipelinebooleannoNotify on pipeline success

Get the authenticated user’s notification settings for a project. Returns: the project notification level, notification email, and per-event flags when the level is custom. See also: user.notification_project_update, user.notification_global_get, user.notification_group_get.

  • Meta-tool: gitlab_user, action notification_project_get
  • Individual tool: gitlab_notification_project_get
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
project_idstring/integeryesProject ID or URL-encoded path

Update the authenticated user’s notification settings for a project. Returns: the updated project notification level, notification email, and per-event flags. See also: user.notification_project_get, user.notification_global_update, user.notification_group_update.

  • Meta-tool: gitlab_user, action notification_project_update
  • Individual tool: gitlab_notification_project_update
  • Tier: Free
  • Behavior: writes, idempotent
ParameterTypeMandatoryDescription
project_idstring/integeryesProject ID or URL-encoded path
close_issuebooleannoNotify on issue close
close_merge_requestbooleannoNotify on MR close
failed_pipelinebooleannoNotify on pipeline failure
fixed_pipelinebooleannoNotify on pipeline fix
issue_duebooleannoNotify on issue due date
levelstring (disabled, participating, watch, global, mention, custom)noNotification level: disabled, participating, watch, global, mention, custom
merge_merge_requestbooleannoNotify on MR merge
merge_when_pipeline_succeedsbooleannoNotify on merge when pipeline succeeds
moved_projectbooleannoNotify on project move
new_epicbooleannoNotify on new epic
new_issuebooleannoNotify on new issue
new_merge_requestbooleannoNotify on new MR
new_notebooleannoNotify on new note
notification_emailstringnoEmail address for notifications
push_to_merge_requestbooleannoNotify on push to MR
reassign_issuebooleannoNotify on issue reassign
reassign_merge_requestbooleannoNotify on MR reassign
reopen_issuebooleannoNotify on issue reopen
reopen_merge_requestbooleannoNotify on MR reopen
success_pipelinebooleannoNotify on pipeline success

Reject a pending user sign-up. Returns: confirmation with the user ID and action. Permanently deletes the pending user. See also: user.approve, user.get, user.list.

  • Meta-tool: gitlab_user, action reject
  • Individual tool: gitlab_reject_user
  • Tier: Free
  • Behavior: writes, destructive (needs confirmation), idempotent
ParameterTypeMandatoryDescription
user_idintegeryesThe ID of the user

Revoke an impersonation token for a user by token id. Returns: a confirmation naming the user_id and token_id with the revoked flag set. See also: user.list_impersonation_tokens, user.get_impersonation_token.

  • Meta-tool: gitlab_user, action revoke_impersonation_token
  • Individual tool: gitlab_revoke_impersonation_token
  • Tier: Free
  • Behavior: writes, destructive (needs confirmation), idempotent
ParameterTypeMandatoryDescription
token_idintegeryesImpersonation token ID to revoke
user_idintegeryesGitLab user ID

Set the current user’s status. Returns: the updated emoji, message, availability, and clear-status time. See also: user.current_user_status, user.get_status.

  • Meta-tool: gitlab_user, action set_status
  • Individual tool: gitlab_set_user_status
  • Tier: Free
  • Behavior: writes, idempotent
ParameterTypeMandatoryDescription
availabilitystring (not_set, busy)noUser availability: not_set (clear busy state) or busy.
clear_status_afterstring (30_minutes, 3_hours, 8_hours, 1_day, 3_days, 7_days, 30_days)noDuration after which the status auto-clears: 30_minutes, 3_hours, 8_hours, 1_day, 3_days, 7_days, or 30_days.
emojistringnoThe emoji to set for the status (e.g. coffee or speech_balloon)
messagestringnoThe status message text

List the current user’s SSH keys. Returns: key summaries with ID, title, fingerprint, usage type, and expiry. See also: user.get_ssh_key, user.add_ssh_key, user.delete_ssh_key.

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

List a specific user’s SSH keys. Returns: key summaries with ID, title, fingerprint, usage type, and expiry. See also: user.get_ssh_key_for_user, user.add_ssh_key_for_user, user.delete_ssh_key_for_user.

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

List the authenticated user’s to-do items with optional filtering and pagination. Returns: to-do items with action, target object, project, author, state, and pagination metadata. See also: user.todo_mark_done, user.todo_mark_all_done.

  • Meta-tool: gitlab_user, action todo_list
  • Individual tool: gitlab_todo_list
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
actionstring (assigned, review_requested, mentioned, build_failed, marked, approval_required, unmergeable, directly_addressed, member_access_requested, review_submitted, ssh_key_expired, ssh_key_expiring_soon, transfer_failed, merge_train_removed, okr_checkin_requested, added_approver, duo_pro_access_granted, duo_enterprise_access_granted, duo_core_access_granted, duo_workflow_input_required)noFilter by action, for example assigned, mentioned, review_requested, build_failed or transfer_failed (a project or group transfer GitLab failed in the background)
author_idintegernoFilter by author user ID
group_idintegernoFilter by group ID
order_bystringnoOrder results by field (e.g. id, created_at). Combine with sort.
pageintegernoPage number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward.
page_tokenstringnoKeyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’.
paginationstringnoPagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost.
per_pageintegernoItems per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large.
project_idintegernoFilter by project ID
sortstring (asc, desc)noSort direction: asc or desc.
statestring (pending, done)noFilter by state: pending or done (default: pending)
typestring (Commit, Issue, WorkItem, MergeRequest, DesignManagement::Design, AlertManagement::Alert, Namespace, Project, Key, WikiPage::Meta, Epic, Vulnerability, User, ComplianceManagement::Projects::ComplianceViolation, Ai::DuoWorkflows::Workflow)noFilter by target type, for example Issue, MergeRequest, Commit, Epic, Project or Namespace (a group)

Mark all pending to-do items as done. Returns: a confirmation that all items were cleared. See also: user.todo_list, user.todo_mark_done.

  • Meta-tool: gitlab_user, action todo_mark_all_done
  • Individual tool: gitlab_todo_mark_all_done
  • Tier: Free
  • Behavior: writes, idempotent

No parameters.

Mark a single to-do item as done. Returns: a confirmation naming the to-do item ID. See also: user.todo_list, user.todo_mark_all_done.

  • Meta-tool: gitlab_user, action todo_mark_done
  • Individual tool: gitlab_todo_mark_done
  • Tier: Free
  • Behavior: writes, idempotent
ParameterTypeMandatoryDescription
idintegeryesID of the to-do item to mark as done

Unban a previously banned user. Returns: confirmation with the user ID and action. See also: user.ban, user.unblock, user.get.

  • Meta-tool: gitlab_user, action unban
  • Individual tool: gitlab_unban_user
  • Tier: Free
  • Behavior: writes, idempotent
ParameterTypeMandatoryDescription
user_idintegeryesThe ID of the user

Unblock a previously blocked user. Returns: confirmation with the user ID and action. See also: user.block, user.activate, user.get.

  • Meta-tool: gitlab_user, action unblock
  • Individual tool: gitlab_unblock_user
  • Tier: Free
  • Behavior: writes, idempotent
ParameterTypeMandatoryDescription
user_idintegeryesThe ID of the user

Update an instance-level service account. Returns: updated service account object including email and unconfirmed_email. Requires admin token. See also: user.create_service_account, user.list_service_accounts.

  • Meta-tool: gitlab_user, action update_service_account
  • Individual tool: gitlab_update_instance_service_account
  • Tier: Free
  • Behavior: writes, idempotent
ParameterTypeMandatoryDescription
service_account_idintegeryesService account ID to update
emailstringnoNew email for the service account
namestringnoNew name for the service account
usernamestringnoNew username for the service account

Upload the current user’s avatar. Returns: the updated user profile including the new avatar URL. GitLab 19 responds with only avatar_url, so other profile fields (including id) may be empty. Use user.current for the full profile. Provide filename and exactly one of file_path or content_base64. See also: user.me, user.modify.

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