| merge_merge_requestproject_id*merge_request_iidauto_mergemerge_commit_messagemerge_when_pipeline_succeedsshould_remove_source_branchsquash_commit_messagesquash | Merge a merge request |
| approve_merge_requestproject_id*merge_request_iid*shaapproval_password | Approve a merge request |
| unapprove_merge_requestproject_id*merge_request_iid* | Unapprove a merge request |
| get_merge_request_approval_stateproject_id*merge_request_iid* | Get merge request approval details including approvers |
| get_merge_request_conflictsproject_id*merge_request_iid* | Get the conflicts of a merge request |
| list_merge_request_pipelinesproject_id*merge_request_iid*pageper_page | List pipelines for a merge request with pagination |
| create_or_update_fileproject_id*file_path*content*commit_message*branch*previous_pathlast_commit_idcommit_id | Create or update a file in a GitLab project |
| search_repositoriessearchquerypageper_page | Search for GitLab projects |
| create_repositoryname*namespace_iddescriptionvisibilityinitialize_with_readme | Create a new GitLab project |
| create_groupname*path*descriptionvisibilityparent_id | Create new group or subgroup |
| get_file_contentsproject_idfile_pathpathref | Get contents of a file or directory from a GitLab project |
| push_filesproject_id*branch*files*commit_message* | Push multiple files in a single commit |
| create_issueproject_id*title*descriptionassignee_idslabelsmilestone_idissue_typeweight | Create a new issue |
| create_merge_requestproject_id*title*descriptionsource_branch*target_branch*target_project_idassignee_idsreviewer_idslabelsdraftallow_collaborationremove_source_branchsquash | Create a new merge request |
| fork_repositoryproject_id*namespace | Fork a project to your account or specified namespace |
| create_branchproject_id*branch*ref | Create a new branch |
| get_branchproject_id*branch_name* | Get branch details (commit, protection status) |
| list_branchesproject_id*searchpageper_page | List branches in project with search filter |
| delete_branchproject_id*branch_name* | Delete branch from project |
| list_protected_branchesproject_id*searchpageper_page | List protected branches in a project, supports search filter |
| get_protected_branchproject_id*branch_name* | Get details of a single protected branch (access levels, force push settings) |
| protect_branchproject_idbranch_name*namepush_access_levelmerge_access_levelunprotect_access_levelallow_force_pushcode_owner_approval_required | Protect a repository branch (set push/merge/unprotect access levels) |
| unprotect_branchproject_id*branch_name* | Remove protection from a previously protected branch |
| update_default_branchproject_id*default_branch* | Change the default branch of a project |
| get_merge_requestproject_id*merge_request_iidsource_branchinclude_summaries | Get details of a merge request (mergeRequestIid or branchName required). Set include_summaries=true for deployment/commit/approval summaries |
| get_merge_request_diffsproject_id*merge_request_iidsource_branchviewexcluded_file_patterns | Get the changes/diffs of a merge request (mergeRequestIid or branchName required) |
| list_merge_request_changed_filesproject_id*merge_request_iidsource_branchexcluded_file_patterns | List changed file paths in a merge request without diff content (mergeRequestIid or branchName required) |
| list_merge_request_diffsproject_id*merge_request_iidsource_branchpageper_pageunidiff | List merge request diffs with pagination (mergeRequestIid or branchName required) |
| get_merge_request_file_diffproject_id*merge_request_iidsource_branchfile_paths*unidiff | Get diffs for specific files from a merge request (mergeRequestIid or branchName required) |
| list_merge_request_versionsproject_id*merge_request_iid* | List all versions of a merge request |
| get_merge_request_versionproject_id*merge_request_iid*version_id*unidiff | Get a specific version of a merge request |
| get_branch_diffsproject_id*from*to*straightexcluded_file_patterns | Get diffs between two branches or commits |
| update_merge_requestproject_id*merge_request_iidsource_branchtitledescriptiontarget_branchassignee_idsreviewer_idslabelsstate_eventremove_source_branchsquashdraftmilestone_id | Update a merge request (mergeRequestIid or branchName required) |
| create_noteproject_id*noteable_type*noteable_iid*body* | Create a new note (comment) to an issue or merge request |
| create_merge_request_threadproject_id*merge_request_iid*body*positioncreated_at | Create a new thread on a merge request |
| resolve_merge_request_threadproject_id*merge_request_iid*discussion_id*resolved* | Resolve a thread on a merge request |
| mr_discussionsproject_id*merge_request_iid*pageper_page | List discussion items for a merge request |
| delete_merge_request_discussion_noteproject_id*merge_request_iid*discussion_id*note_id* | Delete a discussion note on a merge request |
| update_merge_request_discussion_noteproject_idmerge_request_iiddiscussion_idnote_idbodyresolved | Update a discussion note on a merge request |
| create_merge_request_discussion_noteproject_id*merge_request_iid*discussion_id*body*created_at | Add a new discussion note to an existing merge request thread |
| create_merge_request_noteproject_id*merge_request_iid*body* | Add a new note to a merge request |
| delete_merge_request_noteproject_id*merge_request_iid*note_id* | Delete an existing merge request note |
| get_merge_request_noteproject_id*merge_request_iid*note_id* | Get a specific note for a merge request |
| get_merge_request_notesproject_id*merge_request_iid*sortorder_byper_pagepage | List notes for a merge request |
| update_merge_request_noteproject_id*merge_request_iid*note_id*body* | Modify an existing merge request note |
| get_draft_noteproject_id*merge_request_iid*draft_note_id* | Get a single draft note from a merge request |
| list_draft_notesproject_id*merge_request_iid* | List draft notes for a merge request |
| create_draft_noteproject_id*merge_request_iid*body*in_reply_to_discussion_idpositionresolve_discussion | Create a draft note for a merge request |
| update_draft_noteproject_id*merge_request_iid*draft_note_id*bodypositionresolve_discussion | Update an existing draft note |
| delete_draft_noteproject_id*merge_request_iid*draft_note_id* | Delete a draft note |
| publish_draft_noteproject_id*merge_request_iid*draft_note_id* | Publish a single draft note |
| bulk_publish_draft_notesproject_id*merge_request_iid*reviewer_statenoteinternal | Publish all draft notes for a merge request. Optionally sets reviewer_state and posts a summary note (GitLab 19.2+). Can set reviewer_state even with no drafts. |
| list_merge_request_emoji_reactionsproject_id*merge_request_iid* | List all emoji reactions on a merge request |
| list_merge_request_note_emoji_reactionsproject_id*merge_request_iid*note_id*discussion_id | List all emoji reactions on a merge request note. Pass discussion_id for discussion thread replies. |
| create_merge_request_emoji_reactionproject_id*merge_request_iid*name* | Add an emoji reaction to a merge request (e.g. thumbsup, rocket, eyes) |
| delete_merge_request_emoji_reactionproject_id*merge_request_iid*award_id* | Remove an emoji reaction from a merge request |
| create_merge_request_note_emoji_reactionproject_id*merge_request_iid*note_id*discussion_idname* | Add an emoji reaction to a merge request note. Pass discussion_id for discussion thread replies. |
| delete_merge_request_note_emoji_reactionproject_id*merge_request_iid*note_id*discussion_idaward_id* | Remove an emoji reaction from a merge request note. Pass discussion_id for discussion thread replies. |
| update_issue_noteproject_idissue_iiddiscussion_idnote_idbodyresolved | Modify an existing issue thread note |
| create_issue_noteproject_id*issue_iid*discussion_idbody*created_at | Add a note to an issue, optionally replying to a discussion thread |
| list_issue_emoji_reactionsproject_id*issue_iid* | List all emoji reactions on an issue |
| list_issue_note_emoji_reactionsproject_id*issue_iid*note_id*discussion_id | List all emoji reactions on an issue note. Pass discussion_id for discussion thread replies. |
| create_issue_emoji_reactionproject_id*issue_iid*name* | Add an emoji reaction to an issue (e.g. thumbsup, rocket, eyes) |
| delete_issue_emoji_reactionproject_id*issue_iid*award_id* | Remove an emoji reaction from an issue |
| create_issue_note_emoji_reactionproject_id*issue_iid*note_id*discussion_idname* | Add an emoji reaction to an issue note. Pass discussion_id for discussion thread replies. |
| delete_issue_note_emoji_reactionproject_id*issue_iid*note_id*discussion_idaward_id* | Remove an emoji reaction from an issue note. Pass discussion_id for discussion thread replies. |
| list_issuesproject_idassignee_idassignee_usernameauthor_idauthor_usernameconfidentialcreated_aftercreated_beforedue_datelabelsmilestoneissue_typeiteration_idscopesearchstateupdated_afterupdated_beforewith_labels_detailspageper_page | List issues (default: created by current user; use scope='all' for all) |
| my_issuesproject_idstatelabelsmilestonesearchcreated_aftercreated_beforeupdated_afterupdated_beforeper_pagepage | List issues assigned to the authenticated user |
| get_issueproject_id*issue_iid*full_response | Get details of a specific issue. Returns a slim milestone by default; set full_response=true for the complete milestone object |
| update_issueproject_id*issue_iid*titledescriptionassignee_idsconfidentialdiscussion_lockeddue_datelabelsmilestone_idstate_eventweightissue_typefull_response | Update an issue. Returns a slim confirmation by default; set full_response=true for the complete updated issue object |
| update_issue_description_patchproject_id*issue_iid*patch_type*patch*dry_runcreate_noteallow_multiple | Apply a patch (search/replace or unified diff) to an issue description. Reduces token usage by allowing small changes without sending the full description. Supports dry_run to preview changes and create_note to summarize updates. |
| delete_issueproject_id*issue_iid* | Delete an issue |
| list_todosactionauthor_idproject_idgroup_idstatetypepageper_page | List GitLab to-do items for the current user |
| mark_todo_doneid* | Mark a GitLab to-do item as done |
| mark_all_todos_done | Mark all pending GitLab to-do items as done for the current user |
| list_issue_linksproject_id*issue_iid* | List all issue links for a specific issue |
| list_issue_discussionsproject_id*issue_iid*pageper_page | List discussions for an issue |
| get_issue_linkproject_id*issue_iid*issue_link_id* | Get a specific issue link |
| create_issue_linkproject_id*issue_iid*target_project_id*target_issue_iid*link_type | Create an issue link between two issues |
| delete_issue_linkproject_id*issue_iid*issue_link_id* | Delete an issue link |
| list_namespacessearchownedpageper_page | List all namespaces (users and groups) available to the current user. Filter by kind='group' for groups only. |
| get_namespacenamespace_id* | Get details of a namespace (user or group) by ID or path. Groups are namespaces with kind='group'. |
| verify_namespacepath*parent_id | Verify if a namespace path exists. Use parent_id to scope the check to a specific parent namespace — required for nested namespaces where the same path may exist under different parents. |
| get_projectproject_id* | Get details of a specific project |
| list_projectssearchsearch_namespacesownedmembershipsimplearchivedvisibilityorder_bysortwith_issues_enabledwith_merge_requests_enabledmin_access_leveltopicpageper_page | List projects accessible by the current user |
| update_projectproject_idnamepathdescriptiondefault_branchvisibilitytopicsrequest_access_enabledremove_source_branch_after_mergeonly_allow_merge_if_pipeline_succeedsonly_allow_merge_if_all_discussions_are_resolvedsquash_optionmerge_methodissues_access_levelmerge_requests_access_levelbuilds_access_levelwiki_access_levelsnippets_access_levelcontainer_registry_access_levelenvironments_access_levelforking_access_levelpackage_registry_access_levelpages_access_level | Update project settings such as description, visibility, default branch, and feature access levels |
| list_project_membersproject_id*queryuser_idsskip_usersinclude_inheritanceper_pagepage | List members of a GitLab project |
| list_group_membersgroup_id*queryuser_idsskip_usersinclude_inheritanceper_pagepage | List members of a GitLab group with optional name or username search |
| list_labelsproject_id*with_countsinclude_ancestor_groupssearchpageper_page | List labels for a project |
| get_labelproject_id*label_id*include_ancestor_groups | Get a single label from a project |
| create_labelproject_id*name*color*descriptionpriority | Create a new label in a project |
| update_labelproject_id*label_id*new_namecolordescriptionpriority | Update an existing label in a project |
| delete_labelproject_id*label_id* | Delete a label from a project |
| list_group_projectsgroup_id*include_subgroupssearchorder_bysortarchivedvisibilitywith_issues_enabledwith_merge_requests_enabledmin_access_levelwith_programming_languagestarredstatisticswith_custom_attributeswith_security_reportstopicpageper_page | List projects in a group |
| get_repository_treeproject_id*pathrefrecursiveper_pagepage_tokenpagination | List files and directories in a repository |
| validate_ci_lintproject_id*content*dry_runinclude_jobsref | Validate provided GitLab CI/CD YAML content for a project |
| validate_project_ci_lintproject_id*content_refdry_rundry_run_refinclude_jobs | Validate an existing .gitlab-ci.yml configuration for a project |
| list_ci_catalog_resourcessearchfirstaftergroup_idsscopesorttopicsverification_level | List GitLab CI/CD Catalog resources/components visible to the user |
| get_ci_catalog_resourceversion_limitcomponent_limitcomponent_nameinclude_readmeidfull_path | Get details for a GitLab CI/CD Catalog resource, including versions and components |
| list_merge_requestsproject_idassignee_idassignee_usernameauthor_idauthor_usernamereviewer_idreviewer_usernameapproved_by_usernamescreated_aftercreated_beforeupdated_afterupdated_beforelabelsmilestonescopesearchstateorder_bysorttarget_branchsource_branchwipwith_labels_detailspageper_page | List merge requests (without project_id: user's MRs; with project_id: project MRs) |
| get_usersusernames* | Get GitLab user details by usernames |
| get_useruser_id* | Get user details by ID |
| whoami | Get current authenticated user details |
| list_commitsproject_id*ref_namesinceuntilpathauthorallwith_statsfirst_parentordertrailerspageper_page | List repository commits with filtering options |
| get_commitproject_id*sha*stats | Get details of a specific commit |
| get_commit_diffproject_id*sha*full_diff | Get changes/diffs of a specific commit |
| get_file_blameproject_idfile_path*ref*range_startrange_end | Get git blame for a file at a given ref. Each entry maps a contiguous range of source lines to the commit that last changed them (id, author, authored_date, message). Use range_start/range_end to limit blame to specific lines. |
| list_commit_statusesproject_id*sha*refstagenamepipeline_idorder_bysortallpageper_page | List statuses for a commit |
| create_commit_statusproject_id*sha*state*refnamecontexttarget_urldescriptioncoveragepipeline_id | Create or update the status of a commit |
| list_group_iterationsgroup_id*statesearchsearch_ininclude_ancestorsinclude_descendantsupdated_beforeupdated_afterpageper_page | List group iterations with filtering options |
| upload_markdownproject_id*file_path* | Upload a file for use in markdown content |
| download_attachmentproject_id*secret*filename*local_path | Download an uploaded file from a project (images returned as base64; use local_path to save to disk) |
| health_check | Verify server status and authentication. When authenticated, also reports the GitLab instance version from GET /api/v4/version (version, revision, enterprise). Version lookup failures do not fail the health check — those fields are omitted. |
| list_eventsactiontarget_typebeforeafterscopesortpageper_page | List events for the authenticated user (before/after: YYYY-MM-DD) |
| get_project_eventsproject_id*actiontarget_typebeforeaftersortpageper_page | List events for a project (before/after: YYYY-MM-DD) |
| discover_toolscategory | Discover and activate additional tool categories for this session. Available categories: merge_requests, issues, repositories, branches, projects, labels, ci, groups, pipelines, milestones, wiki, releases, tags, users, workitems, webhooks, search, variables, dependency_proxy, vulnerabilities. Already-active categories are listed in the response. |