> ## Documentation Index
> Fetch the complete documentation index at: https://docs.modulex.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# GitLab Integration for AI Agents & Workflows

> GitLab repository and project management platform

{/* Self-hosted logo — build-time vendored from modulex.json / Iconify (see scripts/lib/logo.js). */}

<img src="https://mintcdn.com/modulexaillc/zKB2qsP6Q61VNLfB/logos/gitlab.svg?fit=max&auto=format&n=zKB2qsP6Q61VNLfB&q=85&s=6394144af1bd30de25d15254610962ef" alt="GitLab logo" width="72" height="72" data-path="logos/gitlab.svg" />

## Overview

Add **GitLab** to any ModuleX agent or workflow. Repository and project management platform for the GitLab REST API (`gitlab.com/api/v4`).

<Info>
  **Categories**: Developer Tools & Infrastructure · Version Control · Project Management · **Auth**: OAuth2 · **Actions**: 12
</Info>

## Authentication

### OAuth2 Authentication

Connect using GitLab OAuth (recommended)

#### Required Credentials

| Field         | Description                    | Required | Format |
| ------------- | ------------------------------ | -------- | ------ |
| Client ID     | GitLab OAuth App Client ID     | Yes      | `-`    |
| Client Secret | GitLab OAuth App Client Secret | Yes      | `-`    |

#### OAuth Configuration

* **Authorization URL**: `https://gitlab.com/oauth/authorize`
* **Token URL**: `https://gitlab.com/oauth/token`
* **Scopes**: `api`

## Available Actions

<AccordionGroup>
  <Accordion title="create_branch — Create a new branch in a GitLab repository">
    ### Parameters

    <ResponseField name="project_id" type="integer" required>
      The project ID, as displayed in the main project page
    </ResponseField>

    <ResponseField name="ref" type="string" required>
      The branch name or commit SHA to create the new branch from
    </ResponseField>

    <ResponseField name="branch_name" type="string" required>
      The name of the branch to create
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "$defs": {
        "BranchCommit": {
          "additionalProperties": false,
          "properties": {
            "id": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Id"
            },
            "short_id": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Short Id"
            },
            "title": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Title"
            },
            "author_name": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Author Name"
            },
            "author_email": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Author Email"
            },
            "created_at": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Created At"
            },
            "message": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Message"
            }
          },
          "title": "BranchCommit",
          "type": "object"
        },
        "BranchSummary": {
          "additionalProperties": false,
          "properties": {
            "name": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Name"
            },
            "commit": {
              "anyOf": [
                {
                  "$ref": "#/$defs/BranchCommit"
                },
                {
                  "type": "null"
                }
              ],
              "default": null
            },
            "merged": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Merged"
            },
            "protected": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Protected"
            },
            "developers_can_push": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Developers Can Push"
            },
            "developers_can_merge": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Developers Can Merge"
            },
            "can_push": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Can Push"
            },
            "web_url": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Web Url"
            }
          },
          "title": "BranchSummary",
          "type": "object"
        }
      },
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "branch": {
          "anyOf": [
            {
              "$ref": "#/$defs/BranchSummary"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        }
      },
      "required": [
        "success"
      ],
      "title": "CreateBranchOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="create_epic — Create a new epic in a GitLab group (requires GitLab Premium or Ultimate)">
    ### Parameters

    <ResponseField name="group_id" type="string" required>
      The ID of the group
    </ResponseField>

    <ResponseField name="title" type="string" required>
      The title of the epic
    </ResponseField>

    <ResponseField name="description" type="string">
      The description of the epic
    </ResponseField>

    <ResponseField name="labels" type="array">
      List of label names for the epic
    </ResponseField>

    <ResponseField name="parent_id" type="string">
      The internal ID of the parent epic (requires GitLab Premium or Ultimate)
    </ResponseField>

    <ResponseField name="color" type="string">
      The color of the epic (introduced in GitLab 14.8)
    </ResponseField>

    <ResponseField name="confidential" type="boolean">
      Whether the epic should be confidential
    </ResponseField>

    <ResponseField name="created_at" type="string">
      When the epic was created, ISO 8601 format (requires admin or owner privileges)
    </ResponseField>

    <ResponseField name="start_date_is_fixed" type="boolean">
      Whether start date should be sourced from start\_date\_fixed or from milestones
    </ResponseField>

    <ResponseField name="due_date_is_fixed" type="boolean">
      Whether due date should be sourced from due\_date\_fixed or from milestones
    </ResponseField>

    <ResponseField name="start_date_fixed" type="string">
      The fixed start date of the epic, ISO 8601 format (relevant when start\_date\_is\_fixed is true)
    </ResponseField>

    <ResponseField name="due_date_fixed" type="string">
      The fixed due date of the epic, ISO 8601 format (relevant when due\_date\_is\_fixed is true)
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "$defs": {
        "EpicSummary": {
          "additionalProperties": false,
          "properties": {
            "id": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Id"
            },
            "iid": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Iid"
            },
            "group_id": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Group Id"
            },
            "title": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Title"
            },
            "description": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Description"
            },
            "state": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "State"
            },
            "confidential": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Confidential"
            },
            "web_url": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Web Url"
            },
            "created_at": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Created At"
            },
            "updated_at": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Updated At"
            },
            "labels": {
              "items": {
                "type": "string"
              },
              "title": "Labels",
              "type": "array"
            }
          },
          "title": "EpicSummary",
          "type": "object"
        }
      },
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "epic": {
          "anyOf": [
            {
              "$ref": "#/$defs/EpicSummary"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        }
      },
      "required": [
        "success"
      ],
      "title": "CreateEpicOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="create_issue — Create a new issue in a GitLab project">
    ### Parameters

    <ResponseField name="project_id" type="integer" required>
      The project ID, as displayed in the main project page
    </ResponseField>

    <ResponseField name="title" type="string" required>
      The title of the issue
    </ResponseField>

    <ResponseField name="description" type="string">
      The description of the issue
    </ResponseField>

    <ResponseField name="labels" type="array">
      List of label names for the issue
    </ResponseField>

    <ResponseField name="assignee_ids" type="array">
      List of user IDs to assign the issue to
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "$defs": {
        "IssueSummary": {
          "additionalProperties": false,
          "properties": {
            "id": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Id"
            },
            "iid": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Iid"
            },
            "project_id": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Project Id"
            },
            "title": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Title"
            },
            "description": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Description"
            },
            "state": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "State"
            },
            "web_url": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Web Url"
            },
            "created_at": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Created At"
            },
            "updated_at": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Updated At"
            },
            "closed_at": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Closed At"
            },
            "labels": {
              "items": {
                "type": "string"
              },
              "title": "Labels",
              "type": "array"
            },
            "assignees": {
              "items": {
                "type": "string"
              },
              "title": "Assignees",
              "type": "array"
            }
          },
          "title": "IssueSummary",
          "type": "object"
        }
      },
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "issue": {
          "anyOf": [
            {
              "$ref": "#/$defs/IssueSummary"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        }
      },
      "required": [
        "success"
      ],
      "title": "CreateIssueOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="get_issue — Get a single issue from a GitLab project">
    ### Parameters

    <ResponseField name="project_id" type="integer" required>
      The project ID, as displayed in the main project page
    </ResponseField>

    <ResponseField name="issue_iid" type="string" required>
      The internal ID of the project issue
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "$defs": {
        "IssueSummary": {
          "additionalProperties": false,
          "properties": {
            "id": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Id"
            },
            "iid": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Iid"
            },
            "project_id": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Project Id"
            },
            "title": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Title"
            },
            "description": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Description"
            },
            "state": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "State"
            },
            "web_url": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Web Url"
            },
            "created_at": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Created At"
            },
            "updated_at": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Updated At"
            },
            "closed_at": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Closed At"
            },
            "labels": {
              "items": {
                "type": "string"
              },
              "title": "Labels",
              "type": "array"
            },
            "assignees": {
              "items": {
                "type": "string"
              },
              "title": "Assignees",
              "type": "array"
            }
          },
          "title": "IssueSummary",
          "type": "object"
        }
      },
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "issue": {
          "anyOf": [
            {
              "$ref": "#/$defs/IssueSummary"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        }
      },
      "required": [
        "success"
      ],
      "title": "GetIssueOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="get_repo_branch — Get a single repository branch from a GitLab project">
    ### Parameters

    <ResponseField name="project_id" type="integer" required>
      The project ID, as displayed in the main project page
    </ResponseField>

    <ResponseField name="branch" type="string" required>
      The name of the branch
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "$defs": {
        "BranchCommit": {
          "additionalProperties": false,
          "properties": {
            "id": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Id"
            },
            "short_id": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Short Id"
            },
            "title": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Title"
            },
            "author_name": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Author Name"
            },
            "author_email": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Author Email"
            },
            "created_at": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Created At"
            },
            "message": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Message"
            }
          },
          "title": "BranchCommit",
          "type": "object"
        },
        "BranchSummary": {
          "additionalProperties": false,
          "properties": {
            "name": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Name"
            },
            "commit": {
              "anyOf": [
                {
                  "$ref": "#/$defs/BranchCommit"
                },
                {
                  "type": "null"
                }
              ],
              "default": null
            },
            "merged": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Merged"
            },
            "protected": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Protected"
            },
            "developers_can_push": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Developers Can Push"
            },
            "developers_can_merge": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Developers Can Merge"
            },
            "can_push": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Can Push"
            },
            "web_url": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Web Url"
            }
          },
          "title": "BranchSummary",
          "type": "object"
        }
      },
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "branch": {
          "anyOf": [
            {
              "$ref": "#/$defs/BranchSummary"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        }
      },
      "required": [
        "success"
      ],
      "title": "GetRepoBranchOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="list_commits — List commits in a GitLab repository branch">
    ### Parameters

    <ResponseField name="project_id" type="integer" required>
      The project ID, as displayed in the main project page
    </ResponseField>

    <ResponseField name="ref_name" type="string">
      The name of a repository branch, tag, or revision range; defaults to the default branch if not given
    </ResponseField>

    <ResponseField name="max" type="integer">
      Maximum number of commits to return (per\_page) (Default: `100`)
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "$defs": {
        "CommitSummary": {
          "additionalProperties": false,
          "properties": {
            "id": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Id"
            },
            "short_id": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Short Id"
            },
            "title": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Title"
            },
            "author_name": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Author Name"
            },
            "author_email": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Author Email"
            },
            "authored_date": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Authored Date"
            },
            "committed_date": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Committed Date"
            },
            "message": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Message"
            },
            "web_url": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Web Url"
            }
          },
          "title": "CommitSummary",
          "type": "object"
        }
      },
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "commits": {
          "items": {
            "$ref": "#/$defs/CommitSummary"
          },
          "title": "Commits",
          "type": "array"
        }
      },
      "required": [
        "success"
      ],
      "title": "ListCommitsOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="list_groups — List all groups accessible to the authenticated user">
    ### Parameters

    <ResponseField name="min_access_level" type="integer">
      Limit to groups where the user has at least this access level: 10 (Guest), 20 (Reporter), 30 (Developer), 40 (Maintainer), 50 (Owner)
    </ResponseField>

    <ResponseField name="top_level_only" type="boolean">
      Limit to top-level groups, excluding all subgroups
    </ResponseField>

    <ResponseField name="search" type="string">
      Return groups matching this search string
    </ResponseField>

    <ResponseField name="order_by" type="string">
      Order groups by: name, path, id, or similarity (must be similarity when search is provided)
    </ResponseField>

    <ResponseField name="sort" type="string">
      Sort order: asc or desc (Default: `asc`)
    </ResponseField>

    <ResponseField name="active" type="boolean">
      Limit to groups that are not archived and not marked for deletion
    </ResponseField>

    <ResponseField name="archived" type="boolean">
      Limit to groups that are archived
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "$defs": {
        "GroupSummary": {
          "additionalProperties": false,
          "properties": {
            "id": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Id"
            },
            "name": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Name"
            },
            "path": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Path"
            },
            "description": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Description"
            },
            "visibility": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Visibility"
            },
            "web_url": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Web Url"
            },
            "full_name": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Full Name"
            },
            "full_path": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Full Path"
            }
          },
          "title": "GroupSummary",
          "type": "object"
        }
      },
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "groups": {
          "items": {
            "$ref": "#/$defs/GroupSummary"
          },
          "title": "Groups",
          "type": "array"
        }
      },
      "required": [
        "success"
      ],
      "title": "ListGroupsOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="list_project_members — List all members of a GitLab project">
    ### Parameters

    <ResponseField name="project_id" type="integer" required>
      The project ID, as displayed in the main project page
    </ResponseField>

    <ResponseField name="query" type="string">
      Filter results by name, email, or username (partial values accepted)
    </ResponseField>

    <ResponseField name="user_ids" type="array">
      List of user IDs to filter results to
    </ResponseField>

    <ResponseField name="skip_users" type="array">
      List of user IDs to exclude from results
    </ResponseField>

    <ResponseField name="show_seat_info" type="boolean">
      Return seat information for each member if available
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "$defs": {
        "MemberSummary": {
          "additionalProperties": false,
          "properties": {
            "id": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Id"
            },
            "username": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Username"
            },
            "name": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Name"
            },
            "state": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "State"
            },
            "access_level": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Access Level"
            },
            "web_url": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Web Url"
            }
          },
          "title": "MemberSummary",
          "type": "object"
        }
      },
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "members": {
          "items": {
            "$ref": "#/$defs/MemberSummary"
          },
          "title": "Members",
          "type": "array"
        }
      },
      "required": [
        "success"
      ],
      "title": "ListProjectMembersOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="list_repo_branches — Get a list of repository branches from a GitLab project">
    ### Parameters

    <ResponseField name="project_id" type="integer" required>
      The project ID, as displayed in the main project page
    </ResponseField>

    <ResponseField name="search" type="string">
      Return branches containing this search string (use ^term and term\$ for prefix/suffix matching)
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "$defs": {
        "BranchCommit": {
          "additionalProperties": false,
          "properties": {
            "id": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Id"
            },
            "short_id": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Short Id"
            },
            "title": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Title"
            },
            "author_name": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Author Name"
            },
            "author_email": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Author Email"
            },
            "created_at": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Created At"
            },
            "message": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Message"
            }
          },
          "title": "BranchCommit",
          "type": "object"
        },
        "BranchSummary": {
          "additionalProperties": false,
          "properties": {
            "name": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Name"
            },
            "commit": {
              "anyOf": [
                {
                  "$ref": "#/$defs/BranchCommit"
                },
                {
                  "type": "null"
                }
              ],
              "default": null
            },
            "merged": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Merged"
            },
            "protected": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Protected"
            },
            "developers_can_push": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Developers Can Push"
            },
            "developers_can_merge": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Developers Can Merge"
            },
            "can_push": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Can Push"
            },
            "web_url": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Web Url"
            }
          },
          "title": "BranchSummary",
          "type": "object"
        }
      },
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "branches": {
          "items": {
            "$ref": "#/$defs/BranchSummary"
          },
          "title": "Branches",
          "type": "array"
        }
      },
      "required": [
        "success"
      ],
      "title": "ListRepoBranchesOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="search_issues — Search for issues in a GitLab project">
    ### Parameters

    <ResponseField name="project_id" type="integer" required>
      The project ID, as displayed in the main project page
    </ResponseField>

    <ResponseField name="search" type="string">
      Search issues against their title and description
    </ResponseField>

    <ResponseField name="labels" type="array">
      List of label names; issues must have all labels to be returned
    </ResponseField>

    <ResponseField name="state" type="string">
      Return issues by state: all, opened, or closed (Default: `all`)
    </ResponseField>

    <ResponseField name="assignee_id" type="string">
      Return issues assigned to the given user ID
    </ResponseField>

    <ResponseField name="max" type="integer">
      Maximum number of issues to return (per\_page) (Default: `100`)
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "$defs": {
        "IssueSummary": {
          "additionalProperties": false,
          "properties": {
            "id": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Id"
            },
            "iid": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Iid"
            },
            "project_id": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Project Id"
            },
            "title": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Title"
            },
            "description": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Description"
            },
            "state": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "State"
            },
            "web_url": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Web Url"
            },
            "created_at": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Created At"
            },
            "updated_at": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Updated At"
            },
            "closed_at": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Closed At"
            },
            "labels": {
              "items": {
                "type": "string"
              },
              "title": "Labels",
              "type": "array"
            },
            "assignees": {
              "items": {
                "type": "string"
              },
              "title": "Assignees",
              "type": "array"
            }
          },
          "title": "IssueSummary",
          "type": "object"
        }
      },
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "issues": {
          "items": {
            "$ref": "#/$defs/IssueSummary"
          },
          "title": "Issues",
          "type": "array"
        }
      },
      "required": [
        "success"
      ],
      "title": "SearchIssuesOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="update_epic — Update an existing epic in a GitLab group (requires GitLab Premium or Ultimate)">
    ### Parameters

    <ResponseField name="group_id" type="string" required>
      The ID of the group
    </ResponseField>

    <ResponseField name="epic_iid" type="string" required>
      The internal ID of the epic
    </ResponseField>

    <ResponseField name="title" type="string">
      The title of the epic
    </ResponseField>

    <ResponseField name="description" type="string">
      The description of the epic
    </ResponseField>

    <ResponseField name="labels" type="array">
      List of label names for the epic (set empty to unassign all)
    </ResponseField>

    <ResponseField name="add_labels" type="array">
      Labels to add to the epic
    </ResponseField>

    <ResponseField name="remove_labels" type="array">
      Labels to remove from the epic
    </ResponseField>

    <ResponseField name="parent_id" type="string">
      The ID of a parent epic (available in GitLab 14.6+)
    </ResponseField>

    <ResponseField name="state_event" type="string">
      State event for the epic: close or reopen
    </ResponseField>

    <ResponseField name="confidential" type="boolean">
      Whether the epic should be confidential
    </ResponseField>

    <ResponseField name="color" type="string">
      The color of the epic
    </ResponseField>

    <ResponseField name="updated_at" type="string">
      When the epic was updated, ISO 8601 format (requires admin or owner privileges)
    </ResponseField>

    <ResponseField name="start_date_is_fixed" type="boolean">
      Whether start date should be sourced from start\_date\_fixed or from milestones
    </ResponseField>

    <ResponseField name="due_date_is_fixed" type="boolean">
      Whether due date should be sourced from due\_date\_fixed or from milestones
    </ResponseField>

    <ResponseField name="start_date_fixed" type="string">
      The fixed start date of the epic, ISO 8601 format (relevant when start\_date\_is\_fixed is true)
    </ResponseField>

    <ResponseField name="due_date_fixed" type="string">
      The fixed due date of the epic, ISO 8601 format (relevant when due\_date\_is\_fixed is true)
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "$defs": {
        "EpicSummary": {
          "additionalProperties": false,
          "properties": {
            "id": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Id"
            },
            "iid": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Iid"
            },
            "group_id": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Group Id"
            },
            "title": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Title"
            },
            "description": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Description"
            },
            "state": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "State"
            },
            "confidential": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Confidential"
            },
            "web_url": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Web Url"
            },
            "created_at": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Created At"
            },
            "updated_at": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Updated At"
            },
            "labels": {
              "items": {
                "type": "string"
              },
              "title": "Labels",
              "type": "array"
            }
          },
          "title": "EpicSummary",
          "type": "object"
        }
      },
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "epic": {
          "anyOf": [
            {
              "$ref": "#/$defs/EpicSummary"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        }
      },
      "required": [
        "success"
      ],
      "title": "UpdateEpicOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="update_issue — Update an existing issue in a GitLab project">
    ### Parameters

    <ResponseField name="project_id" type="integer" required>
      The project ID, as displayed in the main project page
    </ResponseField>

    <ResponseField name="issue_iid" type="string" required>
      The internal ID of the issue
    </ResponseField>

    <ResponseField name="title" type="string">
      The title of the issue
    </ResponseField>

    <ResponseField name="description" type="string">
      The description of the issue
    </ResponseField>

    <ResponseField name="labels" type="array">
      List of label names for the issue (set empty to unassign all)
    </ResponseField>

    <ResponseField name="assignee_ids" type="array">
      List of user IDs to assign the issue to (set to 0 or empty to unassign all)
    </ResponseField>

    <ResponseField name="state_event" type="string">
      State event for the issue: close or reopen
    </ResponseField>

    <ResponseField name="discussion_locked" type="boolean">
      Whether the issue discussion is locked (only project members can add or edit comments when locked)
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "$defs": {
        "IssueSummary": {
          "additionalProperties": false,
          "properties": {
            "id": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Id"
            },
            "iid": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Iid"
            },
            "project_id": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Project Id"
            },
            "title": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Title"
            },
            "description": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Description"
            },
            "state": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "State"
            },
            "web_url": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Web Url"
            },
            "created_at": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Created At"
            },
            "updated_at": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Updated At"
            },
            "closed_at": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Closed At"
            },
            "labels": {
              "items": {
                "type": "string"
              },
              "title": "Labels",
              "type": "array"
            },
            "assignees": {
              "items": {
                "type": "string"
              },
              "title": "Assignees",
              "type": "array"
            }
          },
          "title": "IssueSummary",
          "type": "object"
        }
      },
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "issue": {
          "anyOf": [
            {
              "$ref": "#/$defs/IssueSummary"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        }
      },
      "required": [
        "success"
      ],
      "title": "UpdateIssueOutput",
      "type": "object"
    }
    ```
  </Accordion>
</AccordionGroup>

## Limits & Quotas

* **Authenticated requests**: 2,000 requests per minute per user (GitLab.com).
* **Unauthenticated**: 500 requests per minute.
* **Epics API**: restricted to GitLab Premium and Ultimate tiers.
* **Error model**: non-2xx responses raise `httpx.HTTPStatusError` (Pattern A). The agent or runtime catches the exception at a higher layer.

## Related integrations

<CardGroup cols={3}>
  <Card title="GitHub" href="/integrations/tools/github" />

  <Card title="Greptile" href="/integrations/tools/greptile" />

  <Card title="Algolia" href="/integrations/tools/algolia" />
</CardGroup>

## Links

* [GitLab](https://gitlab.com)
