> **Building with AI coding agents?** If you're using an AI coding agent, install the official Scalekit plugin. It gives your agent full awareness of the Scalekit API — reducing hallucinations and enabling faster, more accurate code generation.
>
> - **Claude Code**: `/plugin marketplace add scalekit-inc/claude-code-authstack` then `/plugin install <auth-type>@scalekit-auth-stack`
> - **GitHub Copilot CLI**: `copilot plugin marketplace add scalekit-inc/github-copilot-authstack` then `copilot plugin install <auth-type>@scalekit-auth-stack`
> - **Codex**: run the bash installer, restart, then open Plugin Directory and enable `<auth-type>`
> - **Skills CLI** (Windsurf, Cline, 40+ agents): `npx skills add scalekit-inc/skills --list` then `--skill <skill-name>`
>
> `<auth-type>` / `<skill-name>`: `agentkit`, `full-stack-auth`, `mcp-auth`, `modular-sso`, `modular-scim` — [Full setup guide](https://docs.scalekit.com/dev-kit/build-with-ai/)

---

# GitLab

**Authentication:** OAuth 2.0
**Categories:** Developer Tools
## What you can do

Connect this agent connector to let your agent:

- **Get branch, milestone, user** — Get details of a specific branch in a GitLab repository
- **Unstar project** — Unstar a GitLab project
- **List merge request commits, namespaces, issue labels** — List commits in a specific merge request
- **Search project, global** — Search within a specific GitLab project for issues, merge requests, commits, code, and more
- **Create label, deploy key, project variable** — Create a new label in a GitLab project
- **Delete milestone, tag, project** — Delete a milestone from a GitLab project

## Authentication

This connector uses **OAuth 2.0**. Scalekit acts as the OAuth client: it redirects your user to GitLab, obtains an access token, and automatically refreshes it before it expires. Your agent code never handles tokens directly — you only pass a `connectionName` and a user `identifier`.

You supply your GitLab **Connected App** credentials (Client ID + Secret) once per environment in the Scalekit dashboard.

Before calling this connector from your code, create the GitLab connection in **AgentKit** > **Connections** and copy the exact **Connection name** from that connection into your code. The value in code must match the dashboard exactly.

## Set up the connector

Register your Scalekit environment with the GitLab connector so Scalekit handles the OAuth 2.0 flow and token lifecycle for you. The connection name you create will be used to identify and invoke the connection programmatically. Then complete the configuration in your application as follows:

1. ### Set up auth redirects

    - In [Scalekit dashboard](https://app.scalekit.com), go to **AgentKit** > **Connections** > **Create Connection**. Find **GitLab** and click **Create**.

      > By default, a connection using Scalekit's credentials will be created. If you are testing, go directly to the Usage section. Before going to production, update your connection by following the steps below.

    - Click **Use your own credentials** and copy the redirect URI. It looks like `https:///sso/v1/oauth//callback`.

      > Image: Copy redirect URI from Scalekit dashboard

    - Go to [GitLab Applications settings](https://gitlab.com/-/profile/applications) (**User Settings** → **Applications**) and open or create your OAuth application.

    - Paste the copied URI into the **Redirect URI** field and click **Save application**.

      > Image: Add redirect URI and scopes in GitLab OAuth app

    - Under **Scopes**, select the permissions your agent needs:

      | Scope | Access granted | Use when |
      | --- | --- | --- |
      | `api` | Full read/write access to all API endpoints | Most tools — recommended for full access |
      | `read_user` | Current user's profile | `gitlab_current_user_get` only |
      | `read_api` | Read-only access to all API endpoints | Read-only agents |
      | `read_repository` | Read access to repositories | File and commit reads only |
      | `write_repository` | Push access to repositories | `gitlab_file_create`, `gitlab_file_update`, `gitlab_branch_create` |

      > tip: Use api scope for full access
>
> The `api` scope grants complete REST and GraphQL access and covers all 110 tools in this connector. Use `read_api` alone if your agent only reads data.

      > note: GitLab SaaS vs. self-managed
>
> These steps are for **GitLab.com** (SaaS). If your team uses a self-managed GitLab instance, replace `gitlab.com` with your instance hostname in all URLs.

2. ### Get client credentials

    After saving the application, GitLab shows the **Application ID** and **Secret** on the application detail page:

    > Image: GitLab application detail page with Application ID and Secret

    - **Application ID** — listed on the app's main settings page
    - **Secret** — shown only once after creation; if you lose it, regenerate it from the same page

3. ### Add credentials in Scalekit

    - In [Scalekit dashboard](https://app.scalekit.com), go to **AgentKit** > **Connections** and open the connection you created.

    - Enter your credentials:
      - **Client ID** — paste your GitLab Application ID
      - **Client Secret** — paste your GitLab Secret

      > Image: Add GitLab credentials in Scalekit dashboard

    - Click **Save**.

    > note: Connection name is your identifier
>
> The connection name you set here (e.g., `gitlab`) is the string you pass to `connection_name` (Python) or `connectionName` (Node.js) in every SDK call. It must match exactly — including case.

## Tool list

Use the exact tool names from the **Tool list** below when you call `execute_tool`. If you're not sure which name to use, list the tools available for the current user first.

## Tool list

### `gitlab_branch_create`

Create a new branch in a GitLab repository.

Parameters:

- `branch` (`string`, required): The name of the new branch.
- `id` (`string`, required): The project ID (numeric) or URL-encoded path.
- `ref` (`string`, required): The source branch, tag, or commit SHA to branch from.

### `gitlab_branch_delete`

Delete a branch from a GitLab repository.

Parameters:

- `branch` (`string`, required): The name of the branch to delete.
- `id` (`string`, required): The project ID (numeric) or URL-encoded path.

### `gitlab_branch_get`

Get details of a specific branch in a GitLab repository.

Parameters:

- `branch` (`string`, required): The name of the branch.
- `id` (`string`, required): The project ID (numeric) or URL-encoded path.

### `gitlab_branches_list`

List repository branches for a GitLab project.

Parameters:

- `id` (`string`, required): The project ID (numeric) or URL-encoded path.
- `page` (`integer`, optional): Page number for pagination.
- `per_page` (`integer`, optional): Number of results per page (max 100).
- `search` (`string`, optional): Filter branches by name.

### `gitlab_commit_comment_create`

Add a comment to a specific commit.

Parameters:

- `id` (`string`, required): The project ID (numeric) or URL-encoded path.
- `note` (`string`, required): The comment text.
- `sha` (`string`, required): The commit SHA.
- `line` (`integer`, optional): Line number for an inline comment.
- `path` (`string`, optional): File path for an inline comment.

### `gitlab_commit_comments_list`

List comments on a specific commit.

Parameters:

- `id` (`string`, required): The project ID (numeric) or URL-encoded path.
- `sha` (`string`, required): The commit SHA.

### `gitlab_commit_diff_get`

Get the diff of a specific commit.

Parameters:

- `id` (`string`, required): The project ID (numeric) or URL-encoded path.
- `sha` (`string`, required): The commit SHA.

### `gitlab_commit_get`

Get details of a specific commit by its SHA.

Parameters:

- `id` (`string`, required): The project ID (numeric) or URL-encoded path.
- `sha` (`string`, required): The commit SHA.

### `gitlab_commits_list`

List repository commits for a GitLab project.

Parameters:

- `id` (`string`, required): The project ID (numeric) or URL-encoded path.
- `author` (`string`, optional): Filter commits by author name or email.
- `page` (`integer`, optional): Page number for pagination.
- `path` (`string`, optional): Filter commits by file path.
- `per_page` (`integer`, optional): Number of results per page (max 100).
- `ref_name` (`string`, optional): The branch or tag name to list commits from.
- `since` (`string`, optional): Only commits after this date are returned (ISO 8601 format).
- `until` (`string`, optional): Only commits before this date are returned (ISO 8601 format).

### `gitlab_compare_refs`

Compare two refs (branches, tags, or commits) in a GitLab repository.

Parameters:

- `from` (`string`, required): The source branch, tag, or commit SHA to compare from.
- `id` (`string`, required): The project ID (numeric) or URL-encoded path.
- `to` (`string`, required): The target branch, tag, or commit SHA to compare to.
- `straight` (`string`, optional): Comparison method: 'true' for straight diff, 'false' for merge base.

### `gitlab_current_user_get`

Get the currently authenticated user's profile.

### `gitlab_current_user_ssh_keys_list`

List SSH keys for the currently authenticated user.

### `gitlab_deploy_key_create`

Create a new deploy key for a GitLab project.

Parameters:

- `id` (`string`, required): The project ID (numeric) or URL-encoded path.
- `key` (`string`, required): The SSH public key content.
- `title` (`string`, required): A descriptive title for the deploy key.
- `can_push` (`string`, optional): If 'true', the deploy key has write access.

### `gitlab_deploy_key_delete`

Delete a deploy key from a GitLab project.

Parameters:

- `id` (`string`, required): The project ID (numeric) or URL-encoded path.
- `key_id` (`integer`, required): The numeric ID of the deploy key to delete.

### `gitlab_deploy_keys_list`

List deploy keys for a GitLab project.

Parameters:

- `id` (`string`, required): The project ID (numeric) or URL-encoded path.

### `gitlab_file_create`

Create a new file in a GitLab repository.

Parameters:

- `branch` (`string`, required): The branch to create the file on.
- `commit_message` (`string`, required): The commit message for creating this file.
- `content` (`string`, required): The file content (plain text or base64 encoded).
- `file_path` (`string`, required): URL-encoded file path in the repository.
- `id` (`string`, required): The project ID (numeric) or URL-encoded path.
- `author_email` (`string`, optional): The author's email for the commit.
- `author_name` (`string`, optional): The author's name for the commit.
- `encoding` (`string`, optional): The encoding type: 'text' or 'base64'.

### `gitlab_file_delete`

Delete a file from a GitLab repository.

Parameters:

- `branch` (`string`, required): The branch to delete the file from.
- `commit_message` (`string`, required): The commit message for deleting this file.
- `file_path` (`string`, required): URL-encoded file path in the repository.
- `id` (`string`, required): The project ID (numeric) or URL-encoded path.

### `gitlab_file_get`

Get a file's content and metadata from a GitLab repository.

Parameters:

- `file_path` (`string`, required): URL-encoded file path in the repository.
- `id` (`string`, required): The project ID (numeric) or URL-encoded path.
- `ref` (`string`, required): The branch, tag, or commit SHA to get the file from.

### `gitlab_file_update`

Update an existing file in a GitLab repository.

Parameters:

- `branch` (`string`, required): The branch to update the file on.
- `commit_message` (`string`, required): The commit message for updating this file.
- `content` (`string`, required): The new file content.
- `file_path` (`string`, required): URL-encoded file path in the repository.
- `id` (`string`, required): The project ID (numeric) or URL-encoded path.
- `last_commit_id` (`string`, optional): Last known file commit ID (for conflict detection).

### `gitlab_global_search`

Search globally across GitLab for projects, issues, merge requests, and more.

Parameters:

- `scope` (`string`, required): The scope to search in.
- `search` (`string`, required): The search query string.
- `page` (`integer`, optional): Page number for pagination.
- `per_page` (`integer`, optional): Number of results per page (max 100).

### `gitlab_group_create`

Create a new GitLab group or subgroup.

Parameters:

- `name` (`string`, required): The name of the group.
- `path` (`string`, required): URL-friendly path slug for the group.
- `description` (`string`, optional): Optional group description.
- `parent_id` (`integer`, optional): ID of the parent group (for subgroups).
- `visibility` (`string`, optional): Visibility level: private, internal, or public.

### `gitlab_group_delete`

Delete a GitLab group. This is an asynchronous operation (returns 202 Accepted).

Parameters:

- `id` (`string`, required): The group ID (numeric) or URL-encoded path.

### `gitlab_group_get`

Get a specific group by numeric ID or URL-encoded path.

Parameters:

- `id` (`string`, required): The group ID (numeric) or URL-encoded path.

### `gitlab_group_member_add`

Add a member to a GitLab group.

Parameters:

- `access_level` (`integer`, required): Access level for the member. 10=Guest, 20=Reporter, 30=Developer, 40=Maintainer, 50=Owner.
- `id` (`string`, required): The group ID (numeric) or URL-encoded path.
- `user_id` (`integer`, required): The numeric ID of the user to add.

### `gitlab_group_member_remove`

Remove a member from a GitLab group.

Parameters:

- `id` (`string`, required): The group ID (numeric) or URL-encoded path.
- `user_id` (`integer`, required): The numeric ID of the user to remove.

### `gitlab_group_members_list`

List members of a GitLab group.

Parameters:

- `id` (`string`, required): The group ID (numeric) or URL-encoded path.
- `page` (`integer`, optional): Page number for pagination.
- `per_page` (`integer`, optional): Number of results per page (max 100).
- `query` (`string`, optional): Filter members by name.

### `gitlab_group_projects_list`

List projects belonging to a GitLab group.

Parameters:

- `id` (`string`, required): The group ID (numeric) or URL-encoded path.
- `page` (`integer`, optional): Page number for pagination.
- `per_page` (`integer`, optional): Number of results per page (max 100).
- `search` (`string`, optional): Filter projects by name.
- `visibility` (`string`, optional): Filter by visibility level: public, internal, or private.

### `gitlab_group_update`

Update a GitLab group's settings.

Parameters:

- `id` (`string`, required): The group ID (numeric) or URL-encoded path.
- `description` (`string`, optional): Updated group description.
- `name` (`string`, optional): New name for the group.
- `visibility` (`string`, optional): New visibility level: private, internal, or public.

### `gitlab_groups_list`

List groups accessible to the authenticated user.

Parameters:

- `min_access_level` (`integer`, optional): Minimum access level filter (10=Guest, 20=Reporter, 30=Developer, 40=Maintainer, 50=Owner).
- `owned` (`string`, optional): If 'true', limits to groups explicitly owned by the current user.
- `page` (`integer`, optional): Page number for pagination.
- `per_page` (`integer`, optional): Number of results per page (max 100).
- `search` (`string`, optional): Search groups by name.

### `gitlab_issue_create`

Create a new issue in a GitLab project.

Parameters:

- `id` (`string`, required): The project ID (numeric) or URL-encoded path.
- `title` (`string`, required): The title of the issue.
- `assignee_ids` (`string`, optional): Comma-separated list of user IDs to assign.
- `description` (`string`, optional): Detailed description of the issue (Markdown supported).
- `due_date` (`string`, optional): Due date for the issue in YYYY-MM-DD format.
- `labels` (`string`, optional): Comma-separated list of label names to apply.
- `milestone_id` (`integer`, optional): The ID of the milestone to assign.

### `gitlab_issue_delete`

Delete an issue from a GitLab project (admin only).

Parameters:

- `id` (`string`, required): The project ID (numeric) or URL-encoded path.
- `issue_iid` (`integer`, required): The internal ID of the issue within the project.

### `gitlab_issue_get`

Get a specific issue by its internal ID (IID).

Parameters:

- `id` (`string`, required): The project ID (numeric) or URL-encoded path.
- `issue_iid` (`integer`, required): The internal ID of the issue within the project.

### `gitlab_issue_labels_list`

List labels for a GitLab project.

Parameters:

- `id` (`string`, required): The project ID (numeric) or URL-encoded path.
- `page` (`integer`, optional): Page number for pagination.
- `per_page` (`integer`, optional): Number of results per page (max 100).

### `gitlab_issue_note_create`

Add a comment to a specific issue.

Parameters:

- `body` (`string`, required): The comment text (Markdown supported).
- `id` (`string`, required): The project ID (numeric) or URL-encoded path.
- `issue_iid` (`integer`, required): The internal ID of the issue.

### `gitlab_issue_note_delete`

Delete a comment on a specific issue.

Parameters:

- `id` (`string`, required): The project ID (numeric) or URL-encoded path.
- `issue_iid` (`integer`, required): The internal ID of the issue.
- `note_id` (`integer`, required): The ID of the note to delete.

### `gitlab_issue_note_update`

Update a comment on a specific issue.

Parameters:

- `body` (`string`, required): The updated comment text (Markdown supported).
- `id` (`string`, required): The project ID (numeric) or URL-encoded path.
- `issue_iid` (`integer`, required): The internal ID of the issue.
- `note_id` (`integer`, required): The ID of the note to update.

### `gitlab_issue_notes_list`

List comments (notes) on a specific issue.

Parameters:

- `id` (`string`, required): The project ID (numeric) or URL-encoded path.
- `issue_iid` (`integer`, required): The internal ID of the issue.
- `page` (`integer`, optional): Page number for pagination.
- `per_page` (`integer`, optional): Number of results per page (max 100).

### `gitlab_issue_update`

Update an existing issue in a GitLab project.

Parameters:

- `id` (`string`, required): The project ID (numeric) or URL-encoded path.
- `issue_iid` (`integer`, required): The internal ID of the issue within the project.
- `assignee_ids` (`string`, optional): Comma-separated list of user IDs to assign.
- `description` (`string`, optional): Updated description of the issue.
- `labels` (`string`, optional): Comma-separated list of label names.
- `state_event` (`string`, optional): State transition: 'close' to close, 'reopen' to reopen.
- `title` (`string`, optional): New title for the issue.

### `gitlab_issues_list`

List issues for a GitLab project.

Parameters:

- `id` (`string`, required): The project ID (numeric) or URL-encoded path.
- `assignee_id` (`integer`, optional): Filter issues by assignee user ID.
- `labels` (`string`, optional): Filter issues by comma-separated label names.
- `milestone` (`string`, optional): Filter issues by milestone title.
- `order_by` (`string`, optional): Order issues by field (created_at, updated_at, priority).
- `page` (`integer`, optional): Page number for pagination.
- `per_page` (`integer`, optional): Number of results per page (max 100).
- `search` (`string`, optional): Search issues by title or description.
- `sort` (`string`, optional): Sort order: asc or desc.
- `state` (`string`, optional): Filter issues by state: opened, closed, or all.

### `gitlab_job_artifacts_download`

Download the artifacts archive of a specific CI/CD job.

Parameters:

- `id` (`string`, required): The project ID (numeric) or URL-encoded path.
- `job_id` (`integer`, required): The numeric ID of the job.

### `gitlab_job_cancel`

Cancel a specific CI/CD job.

Parameters:

- `id` (`string`, required): The project ID (numeric) or URL-encoded path.
- `job_id` (`integer`, required): The numeric ID of the job to cancel.

### `gitlab_job_get`

Get details of a specific CI/CD job.

Parameters:

- `id` (`string`, required): The project ID (numeric) or URL-encoded path.
- `job_id` (`integer`, required): The numeric ID of the job.

### `gitlab_job_log_get`

Get the log (trace) output of a specific CI/CD job.

Parameters:

- `id` (`string`, required): The project ID (numeric) or URL-encoded path.
- `job_id` (`integer`, required): The numeric ID of the job.

### `gitlab_job_retry`

Retry a specific CI/CD job.

Parameters:

- `id` (`string`, required): The project ID (numeric) or URL-encoded path.
- `job_id` (`integer`, required): The numeric ID of the job to retry.

### `gitlab_jobs_list`

List all jobs for a GitLab project.

Parameters:

- `id` (`string`, required): The project ID (numeric) or URL-encoded path.
- `page` (`integer`, optional): Page number for pagination.
- `per_page` (`integer`, optional): Number of results per page (max 100).
- `scope` (`string`, optional): Filter jobs by scope/status.

### `gitlab_label_create`

Create a new label in a GitLab project.

Parameters:

- `color` (`string`, required): The color for the label in hex format (e.g. #FF0000).
- `id` (`string`, required): The project ID (numeric) or URL-encoded path.
- `name` (`string`, required): The name of the label.
- `description` (`string`, optional): Optional description for the label.

### `gitlab_merge_request_approvals_get`

Get the approval state of a specific merge request.

Parameters:

- `id` (`string`, required): The project ID (numeric) or URL-encoded path.
- `merge_request_iid` (`integer`, required): The internal ID of the merge request.

### `gitlab_merge_request_approve`

Approve a merge request.

Parameters:

- `id` (`string`, required): The project ID (numeric) or URL-encoded path.
- `merge_request_iid` (`integer`, required): The internal ID of the merge request.

### `gitlab_merge_request_commits_list`

List commits in a specific merge request.

Parameters:

- `id` (`string`, required): The project ID (numeric) or URL-encoded path.
- `merge_request_iid` (`integer`, required): The internal ID of the merge request.

### `gitlab_merge_request_create`

Create a new merge request in a GitLab project.

Parameters:

- `id` (`string`, required): The project ID (numeric) or URL-encoded path.
- `source_branch` (`string`, required): The source branch name.
- `target_branch` (`string`, required): The target branch name.
- `title` (`string`, required): The title of the merge request.
- `assignee_id` (`integer`, optional): The numeric ID of the user to assign.
- `description` (`string`, optional): Description for the merge request (Markdown supported).
- `labels` (`string`, optional): Comma-separated list of label names.
- `remove_source_branch` (`string`, optional): If 'true', removes the source branch after merging.
- `squash` (`string`, optional): If 'true', squashes all commits into one on merge.

### `gitlab_merge_request_diff_get`

Get the diffs of a specific merge request.

Parameters:

- `id` (`string`, required): The project ID (numeric) or URL-encoded path.
- `merge_request_iid` (`integer`, required): The internal ID of the merge request.

### `gitlab_merge_request_get`

Get a specific merge request by its internal ID (IID).

Parameters:

- `id` (`string`, required): The project ID (numeric) or URL-encoded path.
- `merge_request_iid` (`integer`, required): The internal ID of the merge request within the project.

### `gitlab_merge_request_merge`

Merge an approved merge request in a GitLab project.

Parameters:

- `id` (`string`, required): The project ID (numeric) or URL-encoded path.
- `merge_request_iid` (`integer`, required): The internal ID of the merge request.
- `merge_commit_message` (`string`, optional): Custom merge commit message.
- `should_remove_source_branch` (`string`, optional): If 'true', removes the source branch after merging.
- `squash` (`string`, optional): If 'true', squashes all commits into one.

### `gitlab_merge_request_note_create`

Add a comment to a specific merge request.

Parameters:

- `body` (`string`, required): The comment text (Markdown supported).
- `id` (`string`, required): The project ID (numeric) or URL-encoded path.
- `merge_request_iid` (`integer`, required): The internal ID of the merge request.

### `gitlab_merge_request_notes_list`

List comments on a specific merge request.

Parameters:

- `id` (`string`, required): The project ID (numeric) or URL-encoded path.
- `merge_request_iid` (`integer`, required): The internal ID of the merge request.
- `page` (`integer`, optional): Page number for pagination.
- `per_page` (`integer`, optional): Number of results per page (max 100).

### `gitlab_merge_request_update`

Update an existing merge request in a GitLab project.

Parameters:

- `id` (`string`, required): The project ID (numeric) or URL-encoded path.
- `merge_request_iid` (`integer`, required): The internal ID of the merge request.
- `assignee_id` (`integer`, optional): The numeric ID of the user to assign.
- `description` (`string`, optional): Updated description for the merge request.
- `labels` (`string`, optional): Comma-separated list of label names.
- `state_event` (`string`, optional): State transition: 'close' to close, 'reopen' to reopen.
- `target_branch` (`string`, optional): New target branch name.
- `title` (`string`, optional): New title for the merge request.

### `gitlab_merge_requests_list`

List merge requests for a GitLab project.

Parameters:

- `id` (`string`, required): The project ID (numeric) or URL-encoded path.
- `labels` (`string`, optional): Filter by comma-separated label names.
- `order_by` (`string`, optional): Order MRs by field (created_at, updated_at, title).
- `page` (`integer`, optional): Page number for pagination.
- `per_page` (`integer`, optional): Number of results per page (max 100).
- `search` (`string`, optional): Search MRs by title or description.
- `sort` (`string`, optional): Sort order: asc or desc.
- `source_branch` (`string`, optional): Filter by source branch name.
- `state` (`string`, optional): Filter by state: opened, closed, locked, merged, or all.
- `target_branch` (`string`, optional): Filter by target branch name.

### `gitlab_milestone_create`

Create a new milestone in a GitLab project.

Parameters:

- `id` (`string`, required): The project ID (numeric) or URL-encoded path.
- `title` (`string`, required): The title of the milestone.
- `description` (`string`, optional): Optional description for the milestone.
- `due_date` (`string`, optional): Due date for the milestone in YYYY-MM-DD format.
- `start_date` (`string`, optional): Start date for the milestone in YYYY-MM-DD format.

### `gitlab_milestone_delete`

Delete a milestone from a GitLab project.

Parameters:

- `id` (`string`, required): The project ID (numeric) or URL-encoded path.
- `milestone_id` (`integer`, required): The numeric ID of the milestone.

### `gitlab_milestone_get`

Get a specific project milestone.

Parameters:

- `id` (`string`, required): The project ID (numeric) or URL-encoded path.
- `milestone_id` (`integer`, required): The numeric ID of the milestone.

### `gitlab_milestone_update`

Update an existing milestone in a GitLab project.

Parameters:

- `id` (`string`, required): The project ID (numeric) or URL-encoded path.
- `milestone_id` (`integer`, required): The numeric ID of the milestone.
- `description` (`string`, optional): Updated description for the milestone.
- `due_date` (`string`, optional): Updated due date in YYYY-MM-DD format.
- `state_event` (`string`, optional): State transition: 'close' to close, 'activate' to reopen.
- `title` (`string`, optional): New title for the milestone.

### `gitlab_milestones_list`

List milestones for a GitLab project.

Parameters:

- `id` (`string`, required): The project ID (numeric) or URL-encoded path.
- `page` (`integer`, optional): Page number for pagination.
- `per_page` (`integer`, optional): Number of results per page (max 100).
- `search` (`string`, optional): Filter milestones by title.
- `state` (`string`, optional): Filter milestones by state: active or closed.

### `gitlab_namespaces_list`

List namespaces available to the current user (personal namespaces and groups).

Parameters:

- `page` (`integer`, optional): Page number for pagination.
- `per_page` (`integer`, optional): Number of results per page (max 100).
- `search` (`string`, optional): Filter namespaces by name.

### `gitlab_pipeline_cancel`

Cancel a running pipeline.

Parameters:

- `id` (`string`, required): The project ID (numeric) or URL-encoded path.
- `pipeline_id` (`integer`, required): The numeric ID of the pipeline to cancel.

### `gitlab_pipeline_create`

Trigger a new CI/CD pipeline for a specific branch or tag. Note: GitLab.com requires identity verification on the account before pipelines can be triggered via API. Ensure the authenticated user has verified their identity at gitlab.com/-/profile/verify.

Parameters:

- `id` (`string`, required): The project ID (numeric) or URL-encoded path.
- `ref` (`string`, required): The branch or tag name to run the pipeline on.
- `variables` (`string`, optional): JSON array of pipeline variables, each with 'key' and 'value' fields.

### `gitlab_pipeline_delete`

Delete a pipeline from a GitLab project.

Parameters:

- `id` (`string`, required): The project ID (numeric) or URL-encoded path.
- `pipeline_id` (`integer`, required): The numeric ID of the pipeline to delete.

### `gitlab_pipeline_get`

Get details of a specific pipeline.

Parameters:

- `id` (`string`, required): The project ID (numeric) or URL-encoded path.
- `pipeline_id` (`integer`, required): The numeric ID of the pipeline.

### `gitlab_pipeline_jobs_list`

List jobs for a specific pipeline.

Parameters:

- `id` (`string`, required): The project ID (numeric) or URL-encoded path.
- `pipeline_id` (`integer`, required): The numeric ID of the pipeline.
- `page` (`integer`, optional): Page number for pagination.
- `per_page` (`integer`, optional): Number of results per page (max 100).
- `scope` (`string`, optional): Filter jobs by scope.

### `gitlab_pipeline_retry`

Retry a failed pipeline.

Parameters:

- `id` (`string`, required): The project ID (numeric) or URL-encoded path.
- `pipeline_id` (`integer`, required): The numeric ID of the pipeline to retry.

### `gitlab_pipelines_list`

List pipelines for a GitLab project.

Parameters:

- `id` (`string`, required): The project ID (numeric) or URL-encoded path.
- `page` (`integer`, optional): Page number for pagination.
- `per_page` (`integer`, optional): Number of results per page (max 100).
- `ref` (`string`, optional): Filter pipelines by branch or tag name.
- `sha` (`string`, optional): Filter pipelines by commit SHA.
- `status` (`string`, optional): Filter by pipeline status.

### `gitlab_project_create`

Create a new GitLab project.

Parameters:

- `name` (`string`, required): The name of the project.
- `description` (`string`, optional): A short description of the project.
- `initialize_with_readme` (`string`, optional): If 'true', initializes the repository with a README.
- `visibility` (`string`, optional): Visibility level: private, internal, or public. Defaults to private.

### `gitlab_project_delete`

Delete a GitLab project. This is an asynchronous operation (returns 202 Accepted).

Parameters:

- `id` (`string`, required): The project ID (numeric) or URL-encoded path (e.g. 'namespace%2Fproject').

### `gitlab_project_fork`

Fork a GitLab project into a namespace.

Parameters:

- `id` (`string`, required): The project ID (numeric) or URL-encoded path to fork.
- `name` (`string`, optional): The name for the forked project.
- `namespace_id` (`integer`, optional): The ID of the namespace to fork the project into.
- `path` (`string`, optional): The URL path (slug) for the forked project. Must be unique in the target namespace. If omitted, GitLab uses the source project path which may already be taken.

### `gitlab_project_forks_list`

List forks of a GitLab project.

Parameters:

- `id` (`string`, required): The project ID (numeric) or URL-encoded path.
- `page` (`integer`, optional): Page number for pagination.
- `per_page` (`integer`, optional): Number of results per page (max 100).

### `gitlab_project_get`

Get a specific project by numeric ID or URL-encoded namespace/project path.

Parameters:

- `id` (`string`, required): The project ID (numeric) or URL-encoded path (e.g. 'namespace%2Fproject').

### `gitlab_project_member_add`

Add a member to a GitLab project with a specified access level.

Parameters:

- `access_level` (`integer`, required): Access level for the member. 10=Guest, 20=Reporter, 30=Developer, 40=Maintainer, 50=Owner.
- `id` (`string`, required): The project ID (numeric) or URL-encoded path.
- `user_id` (`integer`, required): The numeric ID of the user to add.

### `gitlab_project_member_remove`

Remove a member from a GitLab project.

Parameters:

- `id` (`string`, required): The project ID (numeric) or URL-encoded path.
- `user_id` (`integer`, required): The numeric ID of the user to remove.

### `gitlab_project_members_list`

List members of a GitLab project.

Parameters:

- `id` (`string`, required): The project ID (numeric) or URL-encoded path.
- `page` (`integer`, optional): Page number for pagination.
- `per_page` (`integer`, optional): Number of results per page (max 100).
- `query` (`string`, optional): Filter members by name.

### `gitlab_project_search`

Search within a specific GitLab project for issues, merge requests, commits, code, and more.

Parameters:

- `id` (`string`, required): The project ID (numeric) or URL-encoded path.
- `scope` (`string`, required): The scope to search in within the project.
- `search` (`string`, required): The search query string.
- `page` (`integer`, optional): Page number for pagination.
- `per_page` (`integer`, optional): Number of results per page (max 100).
- `ref` (`string`, optional): The branch or tag name to search (for blobs or commits scope).

### `gitlab_project_snippet_create`

Create a new snippet in a GitLab project.

Parameters:

- `content` (`string`, required): The content of the snippet.
- `file_name` (`string`, required): The filename for the snippet.
- `id` (`string`, required): The project ID (numeric) or URL-encoded path.
- `title` (`string`, required): The title of the snippet.
- `description` (`string`, optional): Optional description for the snippet.
- `visibility` (`string`, optional): Visibility level: private, internal, or public.

### `gitlab_project_snippet_get`

Get a specific snippet from a GitLab project.

Parameters:

- `id` (`string`, required): The project ID (numeric) or URL-encoded path.
- `snippet_id` (`integer`, required): The numeric ID of the snippet.

### `gitlab_project_snippets_list`

List all snippets in a GitLab project.

Parameters:

- `id` (`string`, required): The project ID (numeric) or URL-encoded path.
- `page` (`integer`, optional): Page number for pagination.
- `per_page` (`integer`, optional): Number of results per page (max 100).

### `gitlab_project_star`

Star a GitLab project.

Parameters:

- `id` (`string`, required): The project ID (numeric) or URL-encoded path.

### `gitlab_project_unstar`

Unstar a GitLab project. Returns 200 with project data if successfully unstarred, or 304 if the project was not starred.

Parameters:

- `id` (`string`, required): The project ID (numeric) or URL-encoded path.

### `gitlab_project_update`

Update an existing GitLab project's settings.

Parameters:

- `id` (`string`, required): The project ID (numeric) or URL-encoded path (e.g. 'namespace%2Fproject').
- `default_branch` (`string`, optional): The default branch name for the project.
- `description` (`string`, optional): A short description of the project.
- `name` (`string`, optional): New name for the project.
- `visibility` (`string`, optional): New visibility level: private, internal, or public.

### `gitlab_project_variable_create`

Create a new CI/CD variable for a GitLab project.

Parameters:

- `id` (`string`, required): The project ID (numeric) or URL-encoded path.
- `key` (`string`, required): The variable key name.
- `value` (`string`, required): The value of the variable.
- `environment_scope` (`string`, optional): The environment scope for this variable (default '*').
- `masked` (`string`, optional): If 'true', masks the variable in job logs.
- `protected` (`string`, optional): If 'true', the variable is only available on protected branches/tags.
- `variable_type` (`string`, optional): The variable type: env_var (default) or file.

### `gitlab_project_variable_delete`

Delete a CI/CD variable from a GitLab project.

Parameters:

- `id` (`string`, required): The project ID (numeric) or URL-encoded path.
- `key` (`string`, required): The variable key name to delete.

### `gitlab_project_variable_get`

Get a specific CI/CD variable for a GitLab project.

Parameters:

- `id` (`string`, required): The project ID (numeric) or URL-encoded path.
- `key` (`string`, required): The variable key name.

### `gitlab_project_variable_update`

Update an existing CI/CD variable for a GitLab project.

Parameters:

- `id` (`string`, required): The project ID (numeric) or URL-encoded path.
- `key` (`string`, required): The variable key name to update.
- `value` (`string`, required): The new value of the variable.
- `masked` (`string`, optional): If 'true', masks the variable in job logs.
- `protected` (`string`, optional): If 'true', the variable is only available on protected branches/tags.

### `gitlab_project_variables_list`

List all CI/CD variables for a GitLab project.

Parameters:

- `id` (`string`, required): The project ID (numeric) or URL-encoded path.

### `gitlab_project_webhook_create`

Create a new webhook for a GitLab project.

Parameters:

- `id` (`string`, required): The project ID (numeric) or URL-encoded path.
- `url` (`string`, required): The URL to send webhook payloads to.
- `issues_events` (`string`, optional): If 'true', trigger the webhook on issue events.
- `merge_requests_events` (`string`, optional): If 'true', trigger on merge request events.
- `pipeline_events` (`string`, optional): If 'true', trigger on pipeline events.
- `push_events` (`string`, optional): If 'true', trigger the webhook on push events.
- `token` (`string`, optional): Secret token to validate webhook payloads.

### `gitlab_project_webhook_delete`

Delete a webhook from a GitLab project.

Parameters:

- `hook_id` (`integer`, required): The numeric ID of the webhook to delete.
- `id` (`string`, required): The project ID (numeric) or URL-encoded path.

### `gitlab_project_webhook_get`

Get a specific webhook for a GitLab project.

Parameters:

- `hook_id` (`integer`, required): The numeric ID of the webhook.
- `id` (`string`, required): The project ID (numeric) or URL-encoded path.

### `gitlab_project_webhook_update`

Update an existing webhook for a GitLab project.

Parameters:

- `hook_id` (`integer`, required): The numeric ID of the webhook to update.
- `id` (`string`, required): The project ID (numeric) or URL-encoded path.
- `url` (`string`, required): The new URL to send webhook payloads to.
- `merge_requests_events` (`string`, optional): If 'true', trigger on merge request events.
- `pipeline_events` (`string`, optional): If 'true', trigger on pipeline events.
- `push_events` (`string`, optional): If 'true', trigger on push events.

### `gitlab_project_webhooks_list`

List all webhooks configured for a GitLab project.

Parameters:

- `id` (`string`, required): The project ID (numeric) or URL-encoded path.

### `gitlab_projects_list`

List all projects accessible to the authenticated user. Supports filtering by search, ownership, membership, and visibility.

Parameters:

- `membership` (`string`, optional): If 'true', limits by projects where the user is a member.
- `order_by` (`string`, optional): Order projects by a field (e.g. id, name, created_at).
- `owned` (`string`, optional): If 'true', limits by projects explicitly owned by the current user.
- `page` (`integer`, optional): Page number for pagination.
- `per_page` (`integer`, optional): Number of results per page (max 100).
- `search` (`string`, optional): Search query to filter projects by name.
- `sort` (`string`, optional): Sort order: 'asc' or 'desc'.
- `visibility` (`string`, optional): Filter by visibility level: public, internal, or private.

### `gitlab_release_create`

Create a new release in a GitLab project.

Parameters:

- `description` (`string`, required): Release notes in Markdown format.
- `id` (`string`, required): The project ID (numeric) or URL-encoded path.
- `name` (`string`, required): The release name.
- `tag_name` (`string`, required): The tag name for the release.
- `ref` (`string`, optional): The branch or commit to create the tag from (only if tag does not exist).

### `gitlab_release_delete`

Delete a release from a GitLab project. Returns the deleted release object.

Parameters:

- `id` (`string`, required): The project ID (numeric) or URL-encoded path.
- `tag_name` (`string`, required): The tag name of the release to delete.

### `gitlab_release_get`

Get a specific release by tag name.

Parameters:

- `id` (`string`, required): The project ID (numeric) or URL-encoded path.
- `tag_name` (`string`, required): The tag name for the release.

### `gitlab_release_update`

Update an existing release in a GitLab project.

Parameters:

- `id` (`string`, required): The project ID (numeric) or URL-encoded path.
- `tag_name` (`string`, required): The tag name of the release to update.
- `description` (`string`, optional): Updated release notes in Markdown format.
- `name` (`string`, optional): Updated release name.

### `gitlab_releases_list`

List releases for a GitLab project.

Parameters:

- `id` (`string`, required): The project ID (numeric) or URL-encoded path.
- `page` (`integer`, optional): Page number for pagination.
- `per_page` (`integer`, optional): Number of results per page (max 100).

### `gitlab_repository_tree_list`

List files and directories in a GitLab repository.

Parameters:

- `id` (`string`, required): The project ID (numeric) or URL-encoded path.
- `page` (`integer`, optional): Page number for pagination.
- `path` (`string`, optional): Folder path to list files from.
- `per_page` (`integer`, optional): Number of results per page (max 100).
- `recursive` (`string`, optional): If 'true', lists files recursively.
- `ref` (`string`, optional): The branch, tag, or commit SHA to list files from.

### `gitlab_ssh_key_add`

Add an SSH key for the currently authenticated user.

Parameters:

- `key` (`string`, required): The SSH public key content.
- `title` (`string`, required): A descriptive title for the SSH key.

### `gitlab_tag_create`

Create a new tag in a GitLab repository.

Parameters:

- `id` (`string`, required): The project ID (numeric) or URL-encoded path.
- `ref` (`string`, required): The commit SHA, branch name, or another tag name to create the tag from.
- `tag_name` (`string`, required): The name of the new tag.
- `message` (`string`, optional): Message for an annotated tag.
- `release_description` (`string`, optional): Release notes for the tag.

### `gitlab_tag_delete`

Delete a tag from a GitLab repository.

Parameters:

- `id` (`string`, required): The project ID (numeric) or URL-encoded path.
- `tag_name` (`string`, required): The name of the tag to delete.

### `gitlab_tag_get`

Get details of a specific repository tag.

Parameters:

- `id` (`string`, required): The project ID (numeric) or URL-encoded path.
- `tag_name` (`string`, required): The name of the tag.

### `gitlab_tags_list`

List repository tags for a GitLab project.

Parameters:

- `id` (`string`, required): The project ID (numeric) or URL-encoded path.
- `order_by` (`string`, optional): Order tags by field (name, updated, version).
- `page` (`integer`, optional): Page number for pagination.
- `per_page` (`integer`, optional): Number of results per page (max 100).
- `search` (`string`, optional): Filter tags by name.
- `sort` (`string`, optional): Sort order: asc or desc.

### `gitlab_user_get`

Get a specific user by ID.

Parameters:

- `id` (`integer`, required): The ID of the user.

### `gitlab_user_projects_list`

List projects owned by a specific user.

Parameters:

- `user_id` (`integer`, required): The numeric ID of the user whose projects to list.
- `page` (`integer`, optional): Page number for pagination.
- `per_page` (`integer`, optional): Number of results per page (max 100).

### `gitlab_users_list`

List users. Supports filtering by search term, username, and active status.

Parameters:

- `active` (`string`, optional): Filter by active status. Use 'true' or 'false'.
- `page` (`integer`, optional): Page number for pagination.
- `per_page` (`integer`, optional): Number of results per page (max 100).
- `search` (`string`, optional): Search users by name or email.
- `username` (`string`, optional): Filter by exact username.


---

## More Scalekit documentation

| Resource | What it contains | When to use it |
|----------|-----------------|----------------|
| [/llms.txt](/llms.txt) | Structured index with routing hints per product area | Start here — find which documentation set covers your topic before loading full content |
| [/llms-full.txt](/llms-full.txt) | Complete documentation for all Scalekit products in one file | Use when you need exhaustive context across multiple products or when the topic spans several areas |
| [sitemap-0.xml](https://docs.scalekit.com/sitemap-0.xml) | Full URL list of every documentation page | Use to discover specific page URLs you can fetch for targeted, page-level answers |
