# project — gitlab

> 123 actions
> This page as plain markdown. Index: https://mcp.jmrp.io/llms.txt

Canonical: https://mcp.jmrp.io/servers/gitlab/actions/project/
Language: en
Alternate: https://mcp.jmrp.io/es/servers/gitlab/actions/project/index.md
Updated: 2026-09-11T09:56:41+02:00
License: https://mcp.jmrp.io/license/

Counted with a Free-tier token against gitlab.com, which is the only host this endpoint talks to: to use it against a self-managed instance, run the server yourself — its documentation covers that. The catalog is scoped to the token that asks, so the count moves with both its tier and its permissions: higher tiers expose more actions, and administration domains only appear to tokens allowed to use them. That is why the figures differ elsewhere: the upstream project catalogues 1,006 actions across 162 domains, and 851 on the Free/CE surface, while this deployment publishes 747 because it is OAuth-only and acts with your token, so the administration domains a non-admin account cannot call never appear. All three describe the same catalog, counted from three vantage points.

## Actions

### `project.archive` — Project Archive

Archive a project, making it read-only in GitLab. Returns: the project with archived set to true. See also: project.unarchive, project.get.

**Required parameters:** `project_id (string)`

### `project.badge_add` — Add Project Badge

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

**Required parameters:** `image_url (string)`, `link_url (string)`, `project_id (string)`

### `project.badge_delete` — Delete Project Badge

_destructive_

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

**Required parameters:** `badge_id (integer)`, `project_id (string)`

### `project.badge_edit` — Edit Project Badge

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

**Required parameters:** `badge_id (integer)`, `project_id (string)`

### `project.badge_get` — Get Project Badge

_read-only_

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

**Required parameters:** `badge_id (integer)`, `project_id (string)`

### `project.badge_list` — List Project Badges

_read-only_

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

**Required parameters:** `project_id (string)`

### `project.badge_preview` — Preview Project Badge

_read-only_

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

**Required parameters:** `image_url (string)`, `link_url (string)`, `project_id (string)`

### `project.board_create` — Board Create

Create a new issue board in a project. Returns: the created board with its project, scope, and lists. See also: project.board_get, project.board_update, project.board_list.

**Required parameters:** `name (string)`, `project_id (string)`

### `project.board_delete` — Board Delete

_destructive_

Delete an issue board permanently. Returns: a success confirmation naming the board and project. See also: project.board_get, project.board_list.

**Required parameters:** `board_id (integer)`, `project_id (string)`

### `project.board_get` — Board Get

_read-only_

Get a single issue board by board_id. Returns: the board with its project, milestone, assignee, scope labels, and ordered lists. See also: project.board_list, project.board_update, project.board_delete.

**Required parameters:** `board_id (integer)`, `project_id (string)`

### `project.board_list` — Board List

_read-only_

List a project's issue boards with pagination. Returns: each board with its project, milestone, assignee, scope labels, and lists. See also: project.board_get, project.board_create, project.board_list_list.

**Required parameters:** `project_id (string)`

### `project.board_list_create` — Board List Create

Create a board list (column) scoped to a label, assignee, milestone, or iteration. Returns: the created list with its scope, position, and issue limits. See also: project.board_list_get, project.board_list_update, project.board_list_list.

**Required parameters:** `board_id (integer)`, `project_id (string)`

### `project.board_list_delete` — Board List Delete

_destructive_

Delete a board list (column) permanently. Returns: a success confirmation naming the list. See also: project.board_list_get, project.board_list_list.

**Required parameters:** `board_id (integer)`, `list_id (integer)`, `project_id (string)`

### `project.board_list_get` — Board List Get

_read-only_

Get a single board list by list_id. Returns: the list with its label, assignee, milestone, iteration, position, and issue limits. See also: project.board_list_list, project.board_list_update, project.board_list_delete.

**Required parameters:** `board_id (integer)`, `list_id (integer)`, `project_id (string)`

### `project.board_list_list` — Board List Lists

_read-only_

List the lists (columns) in an issue board with pagination. Returns: each list with its label, assignee, milestone, iteration, position, and issue limits. See also: project.board_list_get, project.board_list_create, project.board_get.

**Required parameters:** `board_id (integer)`, `project_id (string)`

### `project.board_list_update` — Board List Update

Reorder a board list to a new position. Returns: the updated list with its scope, position, and issue limits. See also: project.board_list_get, project.board_list_list, project.board_list_delete.

**Required parameters:** `board_id (integer)`, `list_id (integer)`, `position (integer)`, `project_id (string)`

### `project.board_update` — Board Update

Update an issue board's name, scope (assignee, milestone, labels, weight), or list visibility. Returns: the updated board with its project, scope, and lists. See also: project.board_get, project.board_delete, project.board_list.

**Required parameters:** `board_id (integer)`, `project_id (string)`

### `project.create` — Project Create

Create a new GitLab project. Returns: the created project with id, path_with_namespace, default_branch, visibility, and web URL. See also: project.get, project.update, project.create_for_user.

**Required parameters:** `name (string)`

### `project.create_for_user` — Project Create For User

Create a project on behalf of a user (admin). Returns: the created project with id, owner namespace, visibility, and web URL. See also: project.create, project.get.

**Required parameters:** `name (string)`, `user_id (integer)`

### `project.create_fork_relation` — Project Create Fork Relation

Create a fork relationship to an upstream project. Returns: the downstream project as GitLab answers with it, including forked_from_project. See also: project.delete_fork_relation, project.fork.

**Required parameters:** `forked_from_id (integer)`, `project_id (string)`

### `project.delete` — Project Delete

_destructive_

Delete a project. Returns: a deletion status. On instances with delayed deletion the project is marked for deletion. See also: project.restore, project.archive.

**Required parameters:** `project_id (string)`

### `project.delete_fork_relation` — Project Delete Fork Relation

_destructive_

Remove a project's fork relationship. Returns: a success confirmation naming the project. See also: project.create_fork_relation, project.fork.

**Required parameters:** `project_id (string)`

### `project.delete_shared_group` — Project Delete Shared Group

_destructive_

Remove a group share from a project. Returns: a success confirmation naming the group and project. See also: project.share_with_group, project.list_invited_groups.

**Required parameters:** `group_id (integer)`, `project_id (string)`

### `project.download_avatar` — Project Download Avatar

_read-only_

Download a project's avatar. Returns: the avatar image content. See also: project.upload_avatar, project.get.

**Required parameters:** `project_id (string)`

### `project.export_download` — Download Project Export

_read-only_

Download a finished project export archive as base64. Returns: base64 archive content and size in bytes. See also: project.export_status, project.import_from_file.

**Required parameters:** `project_id (string)`

### `project.export_schedule` — Schedule Project Export

Schedule an asynchronous project export. Returns: a confirmation message. See also: project.export_status, project.export_download.

**Required parameters:** `project_id (string)`

### `project.export_status` — Get Project Export Status

_read-only_

Get the export status of a project. Returns: export id, name, path, status, message, and download links. See also: project.export_schedule, project.export_download.

**Required parameters:** `project_id (string)`

### `project.fork` — Project Fork

Fork a project. Returns: the new fork with id, path_with_namespace, forked_from_project, and web URL. See also: project.list_forks, project.create_fork_relation.

**Required parameters:** `project_id (string)`

### `project.get` — Project Get

_read-only_

Get a single project by ID or namespace path. Returns: project metadata including id, path_with_namespace, default_branch, visibility, and web URL. See also: project.update, project.archive, project.delete.

**Required parameters:** `project_id (string)`

### `project.hook_add` — Project Hook Add

Add a webhook to a project. Returns: the created webhook with id, URL, and enabled events. See also: project.hook_list, project.hook_test.

**Required parameters:** `project_id (string)`, `url (string)`

### `project.hook_delete` — Project Hook Delete

_destructive_

Delete a project webhook. Returns: a success confirmation naming the webhook and project. See also: project.hook_list, project.hook_add.

**Required parameters:** `hook_id (integer)`, `project_id (string)`

### `project.hook_delete_custom_header` — Project Hook Delete Custom Header

_destructive_

Delete a custom header from a project webhook. Returns: a success confirmation naming the header and webhook. See also: project.hook_set_custom_header, project.hook_get.

**Required parameters:** `hook_id (integer)`, `key (string)`, `project_id (string)`

### `project.hook_delete_url_variable` — Project Hook Delete URL Variable

_destructive_

Delete a URL variable from a project webhook. Returns: a success confirmation naming the variable and webhook. See also: project.hook_set_url_variable, project.hook_get.

**Required parameters:** `hook_id (integer)`, `key (string)`, `project_id (string)`

### `project.hook_edit` — Project Hook Edit

Edit a project webhook. Returns: the updated webhook with URL and enabled events. See also: project.hook_get, project.hook_test.

**Required parameters:** `hook_id (integer)`, `project_id (string)`

### `project.hook_get` — Project Hook Get

_read-only_

Get a single project webhook. Returns: the webhook with URL, enabled events, and SSL settings. See also: project.hook_list, project.hook_edit.

**Required parameters:** `hook_id (integer)`, `project_id (string)`

### `project.hook_list` — Project Hook List

_read-only_

List a project's webhooks. Returns: webhooks with URL, enabled events, and SSL settings, plus pagination metadata. See also: project.hook_get, project.hook_add.

**Required parameters:** `project_id (string)`

### `project.hook_set_custom_header` — Project Hook Set Custom Header

Set a custom header on a project webhook. Returns: a success confirmation naming the header and webhook. See also: project.hook_delete_custom_header, project.hook_get.

**Required parameters:** `hook_id (integer)`, `key (string)`, `project_id (string)`, `value (string)`

### `project.hook_set_url_variable` — Project Hook Set URL Variable

Set a URL variable on a project webhook. Returns: a success confirmation naming the variable and webhook. See also: project.hook_delete_url_variable, project.hook_get.

**Required parameters:** `hook_id (integer)`, `key (string)`, `project_id (string)`, `value (string)`

### `project.hook_test` — Project Hook Test

Trigger a test event for a project webhook. Returns: a confirmation that the test event was fired. See also: project.hook_get, project.hook_edit.

**Required parameters:** `event (string)`, `hook_id (integer)`, `project_id (string)`

### `project.import_from_file` — Import Project From File

Import a project from an export archive. Returns: the new project's import status, type, correlation id, and any import error. See also: project.import_status, project.export_download.

### `project.import_status` — Get Project Import Status

_read-only_

Get the import status of a project. Returns: import id, name, path, status, type, correlation id, and import error. See also: project.import_from_file.

**Required parameters:** `project_id (string)`

### `project.integration_delete` — Delete Integration

_destructive_

Delete (disable) a project integration by slug. Supports the same slugs as get, plus 'slack-application' for disabling the GitLab for Slack app.

Returns: confirmation message.

See also: project.integration_list, project.integration_get.

**Required parameters:** `project_id (string)`, `slug (string)`

### `project.integration_delete_group` — Delete Group Integration

_destructive_

Delete (disable) a group integration by slug. Requires Owner role on the group.

Returns: confirmation message.

See also: project.integration_list_group, project.integration_get_group, project.integration_set_group.

**Required parameters:** `group_id (string)`, `slug (string)`

### `project.integration_delete_group_datadog` — Delete Group Datadog Integration

_destructive_

Remove the Datadog integration from a group. The stored api_key is cleared. Deletion is irreversible. Requires Owner role and GitLab Premium/Ultimate (self-managed EE or GitLab.com).

Returns: confirmation message.

See also: project.integration_get_group_datadog, project.integration_set_group_datadog.

**Required parameters:** `group_id (string)`

### `project.integration_get` — Get Integration

_read-only_

Get details of a specific project integration by slug (e.g. jira, slack, discord, mattermost, microsoft-teams, telegram, datadog, jenkins, emails-on-push, pipelines-email, external-wiki, custom-issue-tracker, drone-ci, github, harbor, matrix, redmine, youtrack, slack-slash-commands, mattermost-slash-commands).

Returns: JSON with integration details.

See also: project.integration_list, project.integration_delete.

**Required parameters:** `project_id (string)`, `slug (string)`

### `project.integration_get_group` — Get Group Integration

_read-only_

Get details of a specific group integration by slug. Requires Owner role on the group.

Returns: JSON with the group integration details.

See also: project.integration_list_group, project.integration_set_group, project.integration_delete_group.

**Required parameters:** `group_id (string)`, `slug (string)`

### `project.integration_get_group_datadog` — Get Group Datadog Integration

_read-only_

Read the Datadog integration configured on a group. Requires Owner role and GitLab Premium/Ultimate (self-managed EE or GitLab.com). The api_key is never returned.

Returns: JSON with the group's Datadog integration details. The canonical configuration is the nested properties object (api_url, datadog_env, datadog_service, datadog_site, datadog_tags, datadog_ci_visibility, archive_trace_events). The flat top-level copies of those fields are deprecated and will be removed. Prefer properties.*.

See also: project.integration_set_group_datadog, project.integration_delete_group_datadog.

**Required parameters:** `group_id (string)`

### `project.integration_list` — List Integrations

_read-only_

List all integrations (services) configured for a project, including their active status.

Returns: JSON array of integration items with id, title, slug, and active flag.

See also: project.integration_get, project.integration_set_jira, project.integration_delete.

**Required parameters:** `project_id (string)`

### `project.integration_list_group` — List Group Integrations

_read-only_

List all active integrations configured on a group. Requires Owner role (some integrations require GitLab Premium/Ultimate).

Returns: JSON array of group integration items with id, title, slug, and active flag.

See also: project.integration_get_group, project.integration_set_group, project.integration_delete_group.

**Required parameters:** `group_id (string)`

### `project.integration_set` — Set Integration

Configure (create or update) any project integration by slug, passing the integration's documented parameters in a free-form `config` object. Use this generic action for integrations without a dedicated tool (e.g. slack, harbor, jenkins, google-play, apple-app-store, prometheus, microsoft-teams, mattermost, discord).

Common slugs: slack, jira, discord, mattermost, microsoft-teams, telegram, datadog, jenkins, harbor, drone-ci, github, emails-on-push, pipelines-email, external-wiki, custom-issue-tracker, matrix, redmine, youtrack, slack-slash-commands, mattermost-slash-commands, google-play, apple-app-store, prometheus, bamboo, buildkite, campfire, confluence, packagist, pivotaltracker, pumble, pushover, teamcity, unify-circuit, webex-teams, zentao, gitlab-slack-application.

The `config` object is sent verbatim as the request body. See doc/api/integrations.md for the exact fields each integration accepts (for example slack expects `webhook`. Harbor expects `url`, `project_name`, `username`, `password`).

Returns: JSON with the resulting integration details.

See also: project.integration_get, project.integration_list, project.integration_delete, project.integration_set_jira.

**Required parameters:** `project_id (string)`, `slug (string)`

### `project.integration_set_group` — Set Group Integration

Configure (create or update) any group integration by slug, passing the integration's documented parameters in a free-form `config` object. Requires Owner role on the group (some integrations require GitLab Premium/Ultimate).

The `config` object is sent verbatim as the request body. See doc/api/group_integrations.md and doc/api/integrations.md for the per-integration fields.

Returns: JSON with the resulting group integration details.

See also: project.integration_get_group, project.integration_list_group, project.integration_delete_group.

**Required parameters:** `group_id (string)`, `slug (string)`

### `project.integration_set_group_datadog` — Set Group Datadog Integration

Create or update the Datadog integration on a group. Requires Owner role and GitLab Premium/Ultimate (self-managed EE or GitLab.com). At least one of api_key, api_url, datadog_env, datadog_service, datadog_site, datadog_tags, datadog_ci_visibility, archive_trace_events, or use_inherited_settings=true must be supplied.

Returns: JSON with the updated Datadog integration details (canonical values in the nested properties object. Flat copies are deprecated, so prefer properties.*).

See also: project.integration_get_group_datadog, project.integration_delete_group_datadog.

**Required parameters:** `group_id (string)`

### `project.integration_set_jira` — Set Jira Integration

Configure the Jira integration for a project. Sets up the connection to a Jira instance with URL, credentials, and event triggers.

Returns: JSON with the configured Jira integration details.

See also: project.integration_list, project.integration_get.

**Required parameters:** `project_id (string)`, `url (string)`

### `project.label_create` — Label Create

Create a project label with required name and hex color, plus optional description, priority, and archived state. Returns: the created label (id, name, color, text_color, description, counts, priority, subscribed, is_project_label, archived). See also: project.label_get, project.label_update, issue.list.

**Required parameters:** `color (string)`, `name (string)`, `project_id (string)`

### `project.label_delete` — Label Delete

_destructive_

Delete a project label by ID or name. Destructive: the label is removed from the project and unassigned from issues and merge requests. Returns: a deletion confirmation. See also: project.label_list, project.label_get, project.label_create.

**Required parameters:** `label_id (string)`, `project_id (string)`

### `project.label_get` — Label Get

_read-only_

Get a single project label by ID or name. Returns: id, name, color, text_color, description, open/closed issue counts, open MR count, priority, subscribed, is_project_label, and archived. See also: project.label_list, project.label_update, project.label_delete.

**Required parameters:** `label_id (string)`, `project_id (string)`

### `project.label_list` — Label List

_read-only_

List labels in a project with optional search, counts, ancestor-group inclusion, ordering, and offset or keyset pagination. Returns: id, name, color, text_color, description, open/closed issue counts, open MR count, priority, subscribed, is_project_label, archived, and pagination metadata. See also: project.label_get, project.label_create, issue.list.

**Required parameters:** `project_id (string)`

### `project.label_promote` — Label Promote

Promote a project label to a group label, sharing it across the group's projects. Returns: no content on success. Requires group-level Maintainer or higher access. See also: project.label_get, project.label_list, group.group_label_list.

**Required parameters:** `label_id (string)`, `project_id (string)`

### `project.label_subscribe` — Label Subscribe

Subscribe the authenticated user to a project label for notifications. Returns: the label with subscribed=true (already-subscribed yields 304 Not Modified). See also: project.label_unsubscribe, project.label_get, project.label_list.

**Required parameters:** `label_id (string)`, `project_id (string)`

### `project.label_unsubscribe` — Label Unsubscribe

Unsubscribe the authenticated user from a project label. Returns: no content on success (not-subscribed yields 304 Not Modified). See also: project.label_subscribe, project.label_get, project.label_list.

**Required parameters:** `label_id (string)`, `project_id (string)`

### `project.label_update` — Label Update

Update an existing project label (new_name, color, description, priority, archived). Returns: the updated label (id, name, color, text_color, description, counts, priority, subscribed, is_project_label, archived). See also: project.label_get, project.label_list, project.label_delete.

**Required parameters:** `label_id (string)`, `project_id (string)`

### `project.languages` — Project Languages

_read-only_

Get a project's detected languages. Returns: language names with their percentage of the codebase. See also: project.get.

**Required parameters:** `project_id (string)`

### `project.list` — Project List

_read-only_

List projects accessible to the user with filtering and pagination. Returns: projects with namespace, visibility, last_activity_at, and pagination metadata. See also: project.get, project.list_user_projects.

### `project.list_forks` — Project List Forks

_read-only_

List a project's forks. Returns: forked projects with namespace, visibility, and pagination metadata. See also: project.fork, project.get.

**Required parameters:** `project_id (string)`

### `project.list_groups` — Project List Groups

_read-only_

List a project's associated groups. Returns: groups with id, full_path, and full_name, plus pagination metadata. See also: project.list_invited_groups, group.get.

**Required parameters:** `project_id (string)`

### `project.list_invited_groups` — Project List Invited Groups

_read-only_

List groups invited to a project. Returns: invited groups with id, full_path, and full_name, plus pagination metadata. See also: project.share_with_group, project.list_groups.

**Required parameters:** `project_id (string)`

### `project.list_starrers` — Project List Starrers

_read-only_

List a project's starrers. Returns: users with their starred_since date, plus pagination metadata. See also: project.star, project.list_user_starred.

**Required parameters:** `project_id (string)`

### `project.list_user_contributed` — Project List User Contributed

_read-only_

List projects a user contributed to. Returns: projects with namespace, visibility, and pagination metadata. See also: project.list_user_projects, project.list_user_starred.

**Required parameters:** `user_id (string)`

### `project.list_user_projects` — Project List User Projects

_read-only_

List a user's owned projects. Returns: projects with namespace, visibility, and pagination metadata. See also: project.list_user_contributed, project.list_user_starred.

**Required parameters:** `user_id (string)`

### `project.list_user_starred` — Project List User Starred

_read-only_

List projects a user starred. Returns: projects with namespace, visibility, and pagination metadata. See also: project.list_user_projects, project.list_starrers.

**Required parameters:** `user_id (string)`

### `project.list_users` — Project List Users

_read-only_

List a project's users. Returns: users with id, username, name, and state, plus pagination metadata. See also: project.get, project.members.

**Required parameters:** `project_id (string)`

### `project.member_add` — Project Member Add

Add a user to a project team by user_id or username with an access level. Optional: expires_at, member_role_id (Premium/Ultimate). Returns: the created membership. See also: project.member_edit, project.members, user.list.

**Required parameters:** `project_id (string)`, `user_id (integer)`

### `project.member_delete` — Project Member Delete

_destructive_

Remove a member from a project (destructive, requires confirmation). Requires Maintainer. The last Owner of a project cannot be removed. Returns: a success confirmation naming the removed member. See also: project.member_edit, project.members.

**Required parameters:** `project_id (string)`, `user_id (integer)`

### `project.member_edit` — Project Member Edit

Edit a project member's access level, expiry, or custom member role. Returns: the updated membership. Requires at least the same access level as the target member. See also: project.member_add, project.member_delete, project.members.

**Required parameters:** `project_id (string)`, `user_id (integer)`

### `project.member_get` — Project Member Get

_read-only_

Get a single direct project member by user ID. Returns: id, username, name, state, access level, member role, created_by, expiry, and web URL. Does not include inherited members. See also: project.member_inherited, project.members, project.member_edit.

**Required parameters:** `project_id (string)`, `user_id (integer)`

### `project.member_inherited` — Project Member Get Inherited

_read-only_

Get a project member including membership inherited from parent groups. Returns: id, username, name, state, effective access level, member role, and web URL. See also: project.member_get, project.members.

**Required parameters:** `project_id (string)`, `user_id (integer)`

### `project.members` — Project Members List

_read-only_

List a project's members (direct plus inherited from parent groups). Returns: each member's id, username, name, state, access level, member role, created_by, seat usage, and web URL. Supports query/user_ids/show_seat_info filtering, order_by/sort, and offset or keyset pagination. See also: project.member_get, project.member_add, project.get.

**Required parameters:** `project_id (string)`

### `project.milestone_create` — Milestone Create

Create a new milestone in a project with title and optional description, start date, and due date. Returns: the created milestone with IID, state, dates, and web URL. See also: project.milestone_get, project.milestone_update, project.milestone_list.

**Required parameters:** `project_id (string)`, `title (string)`

### `project.milestone_delete` — Milestone Delete

_destructive_

Delete a milestone permanently from a project by milestone IID. Returns: a success confirmation naming the milestone and project. See also: project.milestone_get, project.milestone_update, project.milestone_list.

**Required parameters:** `milestone_iid (integer)`, `project_id (string)`

### `project.milestone_get` — Milestone Get

_read-only_

Get a single milestone from a project by milestone IID. Returns: milestone title, description, state, start/due dates, expiry, group/project IDs, timestamps, and web URL. See also: project.milestone_list, project.milestone_update, project.milestone_issues, project.milestone_merge_requests.

**Required parameters:** `milestone_iid (integer)`, `project_id (string)`

### `project.milestone_issues` — Milestone Issues

_read-only_

List issues assigned to a single milestone with ordering and pagination. Returns: assigned issues with IID, title, state, web URL, creation time, and pagination metadata. See also: project.milestone_get, project.milestone_merge_requests, issue.list.

**Required parameters:** `milestone_iid (integer)`, `project_id (string)`

### `project.milestone_list` — Milestone List

_read-only_

List milestones in one project with state/title/search filters, ancestor inclusion, ordering, and pagination. Returns: matching milestones with state, dates, expiry, web URL, and pagination metadata. See also: project.milestone_get, project.milestone_create, project.milestone_issues.

**Required parameters:** `project_id (string)`

### `project.milestone_merge_requests` — Milestone Merge Requests

_read-only_

List merge requests assigned to a single milestone with ordering and pagination. Returns: assigned merge requests with IID, title, state, source/target branches, web URL, creation time, and pagination metadata. See also: project.milestone_get, project.milestone_issues, merge_request.list.

**Required parameters:** `milestone_iid (integer)`, `project_id (string)`

### `project.milestone_update` — Milestone Update

Update an existing milestone's title, description, start/due dates, or state (state_event close/activate) by milestone IID. Returns: the updated milestone with state, dates, and web URL. See also: project.milestone_get, project.milestone_delete, project.milestone_list.

**Required parameters:** `milestone_iid (integer)`, `project_id (string)`

### `project.mirror_add` — Add Project Mirror

_destructive_

Create a push (remote) mirror on a project. Destructive: the host in url receives the whole repository from then on, so confirmation is required. Returns: the created mirror with id, enabled state, redacted URL, and update status. See also: project.mirror_list, project.mirror_edit, project.mirror_get_public_key.

**Required parameters:** `project_id (string)`, `url (string)`

### `project.mirror_delete` — Delete Project Mirror

_destructive_

Delete a push mirror from a project permanently. Returns: a success confirmation naming the mirror and project. See also: project.mirror_get, project.mirror_edit.

**Required parameters:** `mirror_id (integer)`, `project_id (string)`

### `project.mirror_edit` — Edit Project Mirror

Update a push mirror's attributes (enabled, branch filtering, divergent refs, auth method). Returns: the updated mirror. See also: project.mirror_get, project.mirror_force_push.

**Required parameters:** `mirror_id (integer)`, `project_id (string)`

### `project.mirror_force_push` — Force Push Mirror Update

_destructive_

Trigger an immediate update of a push mirror. Returns: a confirmation that the update was triggered. See also: project.mirror_get, project.mirror_edit.

**Required parameters:** `mirror_id (integer)`, `project_id (string)`

### `project.mirror_get` — Get Project Mirror

_read-only_

Get a single push mirror of a project by mirror id. Returns: the mirror with enabled state, redacted URL, auth method, branch filtering, and last-update status/error. See also: project.mirror_list, project.mirror_edit, project.mirror_force_push.

**Required parameters:** `mirror_id (integer)`, `project_id (string)`

### `project.mirror_get_public_key` — Get Project Mirror Public Key

_read-only_

Get the SSH public key for an SSH-authenticated push mirror. Returns: the public key to register on the remote. See also: project.mirror_get, project.mirror_edit.

**Required parameters:** `mirror_id (integer)`, `project_id (string)`

### `project.mirror_list` — List Project Mirrors

_read-only_

List a project's push (remote) mirrors. Returns: each mirror with id, enabled state, redacted URL, last-update status, and pagination metadata. See also: project.mirror_get, project.mirror_add.

**Required parameters:** `project_id (string)`

### `project.pages_domain_create` — Pages Domain Create

Add a new custom Pages domain to a project. Returns: the created domain with verification code, auto-SSL flag, and certificate details. See also: project.pages_domain_get, project.pages_domain_update, project.pages_domain_list.

**Required parameters:** `domain (string)`, `project_id (string)`

### `project.pages_domain_delete` — Pages Domain Delete

_destructive_

Remove a custom Pages domain from a project (destructive). Returns: a success confirmation naming the deleted domain. See also: project.pages_domain_get, project.pages_domain_list.

**Required parameters:** `domain (string)`, `project_id (string)`

### `project.pages_domain_get` — Pages Domain Get

_read-only_

Get a single Pages custom domain by name. Returns: the domain with verification status and code, auto-SSL flag, enabled-until date, and certificate subject/expiration. See also: project.pages_domain_list, project.pages_domain_update, project.pages_domain_delete.

**Required parameters:** `domain (string)`, `project_id (string)`

### `project.pages_domain_list` — Pages Domain List

_read-only_

List the custom Pages domains for a project with pagination. Returns: matching domains with verification status, auto-SSL flag, project ID, certificate details, and pagination metadata. See also: project.pages_domain_get, project.pages_domain_create, project.pages_domain_list_all.

**Required parameters:** `project_id (string)`

### `project.pages_domain_list_all` — Pages Domain List All

_read-only_

List ALL GitLab Pages custom domains across the whole instance in one call (admin only). Use this instead of gitlab_pages_domain_list when you need every domain on the instance, not just those attached to a single project. Returns: all domains with verification status, auto-SSL flag, project ID, and certificate subject. See also: project.pages_domain_list, project.pages_domain_get, project.pages_domain_create.

### `project.pages_domain_update` — Pages Domain Update

Update an existing Pages custom domain's auto-SSL flag or certificate. Returns: the updated domain with verification status and certificate details. See also: project.pages_domain_get, project.pages_domain_delete, project.pages_domain_list.

**Required parameters:** `domain (string)`, `project_id (string)`

### `project.pages_get` — Pages Get

_read-only_

Get the Pages settings for a project. Returns: the Pages URL, force-HTTPS and unique-domain flags, primary domain, and recent deployments. See also: project.pages_update, project.pages_unpublish, project.pages_domain_list.

**Required parameters:** `project_id (string)`

### `project.pages_unpublish` — Pages Unpublish

_destructive_

Unpublish a project's Pages site (destructive). Returns: a success confirmation. See also: project.pages_get, project.pages_update.

**Required parameters:** `project_id (string)`

### `project.pages_update` — Pages Update

Update the Pages settings for a project. Returns: the updated Pages settings with URL, force-HTTPS and unique-domain flags, primary domain, and deployments. See also: project.pages_get, project.pages_domain_create, project.pages_unpublish.

**Required parameters:** `project_id (string)`

### `project.repository_storage_get` — Project Repository Storage Get

_read-only_

Get a project's repository storage shard. Returns: the storage shard name. See also: project.start_housekeeping, project.get.

**Required parameters:** `project_id (string)`

### `project.restore` — Project Restore

Restore a project marked for deletion. Returns: the restored project. See also: project.delete, project.get.

**Required parameters:** `project_id (string)`

### `project.service_account_create` — Project Service Account Create

Create a GitLab project service account. Returns: the created project service account object. See also: project.service_account_list, project.service_account_update, project.service_account_pat_create.

**Required parameters:** `project_id (string)`

### `project.service_account_delete` — Project Service Account Delete

_destructive_

Delete a GitLab project service account. Returns: a success status confirming deletion. See also: project.service_account_list, project.service_account_update.

**Required parameters:** `project_id (string)`, `service_account_id (integer)`

### `project.service_account_list` — Project Service Account List

_read-only_

List GitLab project service accounts. Returns: paginated project service account records. See also: project.get, project.service_account_create, project.service_account_pat_list.

**Required parameters:** `project_id (string)`

### `project.service_account_pat_create` — Project Service Account Pat Create

Create a personal access token for a GitLab project service account. Returns: the created token record and token value when GitLab returns it. See also: project.service_account_pat_list, project.service_account_pat_rotate.

**Required parameters:** `name (string)`, `project_id (string)`, `scopes (array)`, `service_account_id (integer)`

### `project.service_account_pat_list` — Project Service Account Pat List

_read-only_

List personal access tokens for a GitLab project service account. Returns: paginated token records. See also: project.service_account_list, project.service_account_pat_create, project.service_account_pat_revoke.

**Required parameters:** `project_id (string)`, `service_account_id (integer)`

### `project.service_account_pat_revoke` — Project Service Account Pat Revoke

_destructive_

Revoke a personal access token for a GitLab project service account. Returns: a success status confirming revocation. See also: project.service_account_pat_list, project.service_account_pat_create.

**Required parameters:** `project_id (string)`, `service_account_id (integer)`, `token_id (integer)`

### `project.service_account_pat_rotate` — Project Service Account Pat Rotate

Rotate a personal access token for a GitLab project service account. Returns: the rotated token record and token value when GitLab returns it. See also: project.service_account_pat_list, project.service_account_pat_revoke.

**Required parameters:** `project_id (string)`, `service_account_id (integer)`, `token_id (integer)`

### `project.service_account_update` — Project Service Account Update

Update a GitLab project service account. Returns: the updated project service account object. See also: project.service_account_list, project.service_account_delete.

**Required parameters:** `project_id (string)`, `service_account_id (integer)`

### `project.share_with_group` — Project Share With Group

Share a project with a group. Returns: a confirmation with the group ID and granted access role. See also: project.delete_shared_group, project.list_invited_groups.

**Required parameters:** `group_access (integer)`, `group_id (integer)`, `project_id (string)`

### `project.star` — Project Star

Star a project. Returns: the project with the updated star_count. See also: project.unstar, project.list_starrers.

**Required parameters:** `project_id (string)`

### `project.start_housekeeping` — Project Start Housekeeping

Start housekeeping for a project. Returns: a success confirmation naming the project. See also: project.repository_storage_get, project.get.

**Required parameters:** `project_id (string)`

### `project.statistics_get` — Get Project Statistics

_read-only_

Get a project's last-30-days git fetch (clone/pull) statistics. Returns: total_fetches and a per-day breakdown of date and count. See also: project.get.

**Required parameters:** `project_id (string)`

### `project.transfer` — Project Transfer

_destructive_

Transfer a project to another namespace. Returns: the project in its new namespace. See also: project.get, group.get.

**Required parameters:** `namespace (string)`, `project_id (string)`

### `project.unarchive` — Project Unarchive

Unarchive a project. Returns: the project with archived set to false. See also: project.archive, project.get.

**Required parameters:** `project_id (string)`

### `project.unstar` — Project Unstar

Unstar a project. Returns: the project with the updated star_count. See also: project.star, project.list_starrers.

**Required parameters:** `project_id (string)`

### `project.update` — Project Update

Update a project's settings. Returns: the updated project with its current configuration and web URL. See also: project.get, project.archive, project.transfer.

**Required parameters:** `project_id (string)`

### `project.upload` — Project Upload

Upload a file (via local file_path or base64 content) to a project's Markdown attachments store. Returns: the upload's id (GitLab 17.3+), alt text, relative and full URLs, full path, and a Markdown embed reference. See also: project.upload_list, project.upload_delete, project.get.

**Required parameters:** `filename (string)`, `project_id (string)`

### `project.upload_avatar` — Project Upload Avatar

Upload a project avatar. Returns: the project with its new avatar_url. See also: project.download_avatar, project.update.

**Required parameters:** `filename (string)`, `project_id (string)`

### `project.upload_delete` — Project Upload Delete

_destructive_

Delete a project Markdown upload by its numeric upload ID. Returns: a success confirmation. See also: project.upload_list, project.upload, project.get.

**Required parameters:** `project_id (string)`, `upload_id (integer)`

### `project.upload_delete_by_secret` — Project Upload Delete By Secret

_destructive_

Delete a project Markdown upload by its 32-character secret and filename (the /uploads/<secret>/<filename> reference). Returns: a success confirmation. See also: project.upload_delete, project.upload_list, project.upload.

**Required parameters:** `filename (string)`, `project_id (string)`, `secret (string)`

### `project.upload_list` — Project Upload List

_read-only_

List all Markdown uploads in a project. Returns: each upload's id, filename, size, creation time, and uploader (id, username, name), plus pagination metadata. See also: project.upload, project.upload_delete, project.get.

**Required parameters:** `project_id (string)`
