View as Markdown
GitLab icon

GitLab ACTION

Approve Merge Request

Approve a merge request as the authenticated user, or withdraw an earlier approval by setting Action to unapprove. Call Get Merge Request first to check the merge request is actually ready — its readiness rollup reports the pipeline status, conflicts and how many approvals are still required — and Get Merge Request Diffs to read the changes being approved. Two things commonly go wrong: GitLab refuses to let you approve your own merge request, and a project may require approval from a specific approval rule that the authenticated user does not satisfy; both surface as a 401. To approve as part of leaving review feedback in one step, use Create Merge Request Review with its Action set to approve instead. Optionally pass SHA to make the approval conditional on the merge request's head commit, so it fails rather than silently approving work that was pushed after you read the diff. See the documentation
  • Action
  • Writes data
  • OAuth
  • SDK
  • MCP

IMPLEMENTATION

Call this tool

Connect a user's GitLab account once, then configure and run Approve Merge Request from your backend or agent.

import { PipedreamClient } from "@pipedream/sdk"

const pd = new PipedreamClient({
  projectId: process.env.PIPEDREAM_PROJECT_ID!,
  clientId: process.env.PIPEDREAM_CLIENT_ID!,
  clientSecret: process.env.PIPEDREAM_CLIENT_SECRET!,
  projectEnvironment: "production",
})

const result = await pd.actions.run({
  id: "gitlab-approve-merge-request",
  externalUserId: "{external_user_id}", // any stable ID for this user in your system
  configuredProps: {
    gitlab: { authProvisionId: "apn_xxxxxxx" },
    projectId: "Project",
    mergeRequestIid: 10,
  },
})

console.log(result)

SCHEMA

Inputs

Pipedream supplies the connected account. Your application provides the operation-specific values below. Dynamic inputs are resolved against that user's account.

Approve Merge Request inputs
Property Type Description
projectId Project string
The project, given either as its path — group/project or group/subgroup/project, e.g. backend/payments — or as its numeric project ID. The path is what appears in the project URL and is usually what a user will name, so prefer it. A pasted GitLab URL also works. Use List Projects to find the path if you only know part of the name.
Required
mergeRequestIid Merge Request IID integer
The merge request's internal ID — the !N shown in the GitLab UI and the number at the end of the merge request URL. This is not the id field, which is a much larger instance-wide number; passing id here returns a 404. Use List Merge Requests or Search Merge Requests to resolve the IID from a title, branch or author.
Required
action Action string
approve (the default) records an approval; unapprove removes one the authenticated user gave earlier. There is no REST equivalent of GitLab's Request changes reviewer state — to block a merge request, unapprove it and explain why with Create Merge Request Comment.
Optional
sha SHA string
Optional head commit SHA to approve. When set, GitLab rejects the approval if the merge request's head has moved on — use the diff_refs.head_sha returned by Get Merge Request to be sure you are approving the code you read. Ignored when Action is unapprove.
Optional

REFERENCE

Tool details

Behavior hints are published with the component in the Pipedream registry and surface as MCP tool annotations, so an agent can reason about a tool before it calls it.

Registry key
gitlab-approve-merge-request
Version
0.0.1
App
GitLab
Authentication
OAuth
Read-only
No
Destructive
No
Open world
Yes