GitLab CI/CD · Capability

GitLab API — merge_request_approvals

GitLab API — merge_request_approvals. 6 operations. Lead operation: Change approval-related configuration. Self-contained Naftiko capability covering one Gitlab Ci business surface.

Run with Naftiko Gitlab Cimerge_request_approvals

What You Can Do

GET
Getapiv4projectsidmergerequestsmergerequestiidapprovalstate — Get approval state of merge request
/v1/api/v4/projects/{id}/merge-requests/{merge-request-iid}/approval-state
GET
Getapiv4projectsidmergerequestsmergerequestiidapprovals — List approvals for merge request
/v1/api/v4/projects/{id}/merge-requests/{merge-request-iid}/approvals
POST
Postapiv4projectsidmergerequestsmergerequestiidapprovals — Change approval-related configuration
/v1/api/v4/projects/{id}/merge-requests/{merge-request-iid}/approvals
POST
Postapiv4projectsidmergerequestsmergerequestiidapprove — Approve a merge request
/v1/api/v4/projects/{id}/merge-requests/{merge-request-iid}/approve
PUT
Putapiv4projectsidmergerequestsmergerequestiidresetapprovals — Remove all merge request approvals
/v1/api/v4/projects/{id}/merge-requests/{merge-request-iid}/reset-approvals
POST
Postapiv4projectsidmergerequestsmergerequestiidunapprove — Remove an approval from a merge request
/v1/api/v4/projects/{id}/merge-requests/{merge-request-iid}/unapprove

MCP Tools

get-approval-state-merge-request

Get approval state of merge request

read-only idempotent
list-approvals-merge-request

List approvals for merge request

read-only idempotent
change-approval-related-configuration

Change approval-related configuration

approve-merge-request

Approve a merge request

remove-all-merge-request-approvals

Remove all merge request approvals

idempotent
remove-approval-merge-request

Remove an approval from a merge request

Capability Spec

gitlab-ci-merge-request-approvals.yaml Raw ↑
naftiko: 1.0.0-alpha2
info:
  label: GitLab API — merge_request_approvals
  description: 'GitLab API — merge_request_approvals. 6 operations. Lead operation: Change approval-related configuration.
    Self-contained Naftiko capability covering one Gitlab Ci business surface.'
  tags:
  - Gitlab Ci
  - merge_request_approvals
  created: '2026-05-19'
  modified: '2026-05-19'
binds:
- namespace: env
  keys:
    GITLAB_CI_API_KEY: GITLAB_CI_API_KEY
capability:
  consumes:
  - type: http
    namespace: gitlab-ci-merge-request-approvals
    baseUri: https://gitlab.com
    description: GitLab API — merge_request_approvals business capability. Self-contained, no shared references.
    resources:
    - name: api-v4-projects-id-merge_requests-merge_request_iid-approval_state
      path: /api/v4/projects/{id}/merge_requests/{merge_request_iid}/approval_state
      operations:
      - name: getapiv4projectsidmergerequestsmergerequestiidapprovalstate
        method: GET
        description: Get approval state of merge request
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: string
          description: The ID or URL-encoded path of the project
          required: true
        - name: merge_request_iid
          in: path
          type: integer
          description: The IID of a merge request
          required: true
    - name: api-v4-projects-id-merge_requests-merge_request_iid-approvals
      path: /api/v4/projects/{id}/merge_requests/{merge_request_iid}/approvals
      operations:
      - name: getapiv4projectsidmergerequestsmergerequestiidapprovals
        method: GET
        description: List approvals for merge request
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: integer
          required: true
        - name: merge_request_iid
          in: path
          type: integer
          required: true
      - name: postapiv4projectsidmergerequestsmergerequestiidapprovals
        method: POST
        description: Change approval-related configuration
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: string
          description: The ID or URL-encoded path of the project
          required: true
        - name: merge_request_iid
          in: path
          type: integer
          description: The IID of a merge request
          required: true
        - name: postApiV4ProjectsIdMergeRequestsMergeRequestIidApprovals
          in: body
          type: string
          required: true
    - name: api-v4-projects-id-merge_requests-merge_request_iid-approve
      path: /api/v4/projects/{id}/merge_requests/{merge_request_iid}/approve
      operations:
      - name: postapiv4projectsidmergerequestsmergerequestiidapprove
        method: POST
        description: Approve a merge request
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: integer
          required: true
        - name: merge_request_iid
          in: path
          type: integer
          required: true
        - name: postApiV4ProjectsIdMergeRequestsMergeRequestIidApprove
          in: body
          type: string
          required: true
    - name: api-v4-projects-id-merge_requests-merge_request_iid-reset_approvals
      path: /api/v4/projects/{id}/merge_requests/{merge_request_iid}/reset_approvals
      operations:
      - name: putapiv4projectsidmergerequestsmergerequestiidresetapprovals
        method: PUT
        description: Remove all merge request approvals
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: integer
          required: true
        - name: merge_request_iid
          in: path
          type: integer
          required: true
    - name: api-v4-projects-id-merge_requests-merge_request_iid-unapprove
      path: /api/v4/projects/{id}/merge_requests/{merge_request_iid}/unapprove
      operations:
      - name: postapiv4projectsidmergerequestsmergerequestiidunapprove
        method: POST
        description: Remove an approval from a merge request
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: integer
          required: true
        - name: merge_request_iid
          in: path
          type: integer
          required: true
  exposes:
  - type: rest
    namespace: gitlab-ci-merge-request-approvals-rest
    port: 8080
    description: REST adapter for GitLab API — merge_request_approvals. One Spectral-compliant resource per consumed operation,
      prefixed with /v1.
    resources:
    - path: /v1/api/v4/projects/{id}/merge-requests/{merge-request-iid}/approval-state
      name: api-v4-projects-id-merge-requests-merge-request-iid-approval-state
      description: REST surface for api-v4-projects-id-merge_requests-merge_request_iid-approval_state.
      operations:
      - method: GET
        name: getapiv4projectsidmergerequestsmergerequestiidapprovalstate
        description: Get approval state of merge request
        call: gitlab-ci-merge-request-approvals.getapiv4projectsidmergerequestsmergerequestiidapprovalstate
        with:
          id: rest.id
          merge_request_iid: rest.merge_request_iid
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/api/v4/projects/{id}/merge-requests/{merge-request-iid}/approvals
      name: api-v4-projects-id-merge-requests-merge-request-iid-approvals
      description: REST surface for api-v4-projects-id-merge_requests-merge_request_iid-approvals.
      operations:
      - method: GET
        name: getapiv4projectsidmergerequestsmergerequestiidapprovals
        description: List approvals for merge request
        call: gitlab-ci-merge-request-approvals.getapiv4projectsidmergerequestsmergerequestiidapprovals
        with:
          id: rest.id
          merge_request_iid: rest.merge_request_iid
        outputParameters:
        - type: object
          mapping: $.
      - method: POST
        name: postapiv4projectsidmergerequestsmergerequestiidapprovals
        description: Change approval-related configuration
        call: gitlab-ci-merge-request-approvals.postapiv4projectsidmergerequestsmergerequestiidapprovals
        with:
          id: rest.id
          merge_request_iid: rest.merge_request_iid
          postApiV4ProjectsIdMergeRequestsMergeRequestIidApprovals: rest.postApiV4ProjectsIdMergeRequestsMergeRequestIidApprovals
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/api/v4/projects/{id}/merge-requests/{merge-request-iid}/approve
      name: api-v4-projects-id-merge-requests-merge-request-iid-approve
      description: REST surface for api-v4-projects-id-merge_requests-merge_request_iid-approve.
      operations:
      - method: POST
        name: postapiv4projectsidmergerequestsmergerequestiidapprove
        description: Approve a merge request
        call: gitlab-ci-merge-request-approvals.postapiv4projectsidmergerequestsmergerequestiidapprove
        with:
          id: rest.id
          merge_request_iid: rest.merge_request_iid
          postApiV4ProjectsIdMergeRequestsMergeRequestIidApprove: rest.postApiV4ProjectsIdMergeRequestsMergeRequestIidApprove
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/api/v4/projects/{id}/merge-requests/{merge-request-iid}/reset-approvals
      name: api-v4-projects-id-merge-requests-merge-request-iid-reset-approvals
      description: REST surface for api-v4-projects-id-merge_requests-merge_request_iid-reset_approvals.
      operations:
      - method: PUT
        name: putapiv4projectsidmergerequestsmergerequestiidresetapprovals
        description: Remove all merge request approvals
        call: gitlab-ci-merge-request-approvals.putapiv4projectsidmergerequestsmergerequestiidresetapprovals
        with:
          id: rest.id
          merge_request_iid: rest.merge_request_iid
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/api/v4/projects/{id}/merge-requests/{merge-request-iid}/unapprove
      name: api-v4-projects-id-merge-requests-merge-request-iid-unapprove
      description: REST surface for api-v4-projects-id-merge_requests-merge_request_iid-unapprove.
      operations:
      - method: POST
        name: postapiv4projectsidmergerequestsmergerequestiidunapprove
        description: Remove an approval from a merge request
        call: gitlab-ci-merge-request-approvals.postapiv4projectsidmergerequestsmergerequestiidunapprove
        with:
          id: rest.id
          merge_request_iid: rest.merge_request_iid
        outputParameters:
        - type: object
          mapping: $.
  - type: mcp
    namespace: gitlab-ci-merge-request-approvals-mcp
    port: 9090
    transport: http
    description: MCP adapter for GitLab API — merge_request_approvals. One tool per consumed operation, routed inline through
      this capability's consumes block.
    tools:
    - name: get-approval-state-merge-request
      description: Get approval state of merge request
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: gitlab-ci-merge-request-approvals.getapiv4projectsidmergerequestsmergerequestiidapprovalstate
      with:
        id: tools.id
        merge_request_iid: tools.merge_request_iid
      outputParameters:
      - type: object
        mapping: $.
    - name: list-approvals-merge-request
      description: List approvals for merge request
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: gitlab-ci-merge-request-approvals.getapiv4projectsidmergerequestsmergerequestiidapprovals
      with:
        id: tools.id
        merge_request_iid: tools.merge_request_iid
      outputParameters:
      - type: object
        mapping: $.
    - name: change-approval-related-configuration
      description: Change approval-related configuration
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: gitlab-ci-merge-request-approvals.postapiv4projectsidmergerequestsmergerequestiidapprovals
      with:
        id: tools.id
        merge_request_iid: tools.merge_request_iid
        postApiV4ProjectsIdMergeRequestsMergeRequestIidApprovals: tools.postApiV4ProjectsIdMergeRequestsMergeRequestIidApprovals
      outputParameters:
      - type: object
        mapping: $.
    - name: approve-merge-request
      description: Approve a merge request
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: gitlab-ci-merge-request-approvals.postapiv4projectsidmergerequestsmergerequestiidapprove
      with:
        id: tools.id
        merge_request_iid: tools.merge_request_iid
        postApiV4ProjectsIdMergeRequestsMergeRequestIidApprove: tools.postApiV4ProjectsIdMergeRequestsMergeRequestIidApprove
      outputParameters:
      - type: object
        mapping: $.
    - name: remove-all-merge-request-approvals
      description: Remove all merge request approvals
      hints:
        readOnly: false
        destructive: false
        idempotent: true
      call: gitlab-ci-merge-request-approvals.putapiv4projectsidmergerequestsmergerequestiidresetapprovals
      with:
        id: tools.id
        merge_request_iid: tools.merge_request_iid
      outputParameters:
      - type: object
        mapping: $.
    - name: remove-approval-merge-request
      description: Remove an approval from a merge request
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: gitlab-ci-merge-request-approvals.postapiv4projectsidmergerequestsmergerequestiidunapprove
      with:
        id: tools.id
        merge_request_iid: tools.merge_request_iid
      outputParameters:
      - type: object
        mapping: $.