Skip to main content
Glama

unapprove_merge_request

Remove your approval from a merge request to change its review state. Requires approval permission; returns the updated result or an error if the request or approval is unavailable.

Instructions

Unapprove a merge request. Use this to remove the current user's approval from an existing merge request; use merge_merge_request only when you intend to merge. The operation changes review state and requires approval permission, and GitLab returns the updated result or an error when the request or approval is unavailable.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
jmespathNoOptional JMESPath expression filtering the JSON result before return.
project_idYesProject ID or complete URL-encoded path to project
merge_request_iidYesThe IID of the merge request to unapprove

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv2.1.66
    • addedInput schema / properties / jmespath
      Added value: +{
      +  "description": "Optional JMESPath expression filtering the JSON result before return.",
      +  "type": "string"
      +}
  2. Addedv2.1.18
  3. Removedv2.1.14
  4. Addedv2.1.11
  5. Removedv2.1.10
  6. Addedv2.1.9

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only include openWorldHint=true, so the description carries the burden of behavioral disclosure. It states that the operation 'changes review state' (explicit mutation) and 'requires approval permission' (auth requirement). It also describes the return behavior: 'GitLab returns the updated result or an error when the request or approval is unavailable.' This is valuable context beyond the schema. It does not detail reversibility or side effects, but for a simple unapprove action, this is adequate. Given the sparse annotations, a 4 is justified.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences: purpose, usage guidance, and behavior. It is front-loaded with the key action and keeps each sentence purposeful. No filler or repetition. While it could be slightly more compact, it is efficient and well-structured. A minor deduction for not being as tight as possible, but overall it is strong, so a 4.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a straightforward tool with two required parameters and no output schema, the description covers the essentials: what it does, when to use it, required permissions, and the nature of the result (updated result or error). It also mentions the effect on review state. There is no missing critical information an agent would need to invoke it correctly. A 4 is fitting given the simplicity of the tool; it could be a 5 if it also mentioned that it only removes the current user's approval (not others'), but that is implied by 'current user's approval' in the text.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already has 100% description coverage: `project_id` is described as 'Project ID or complete URL-encoded path to project' and `merge_request_iid` as 'The IID of the merge request to unapprove.' The tool description does not add any parameter-specific semantics beyond the schema. It mentions the current user's approval in the context, but that relates to the operation, not to a parameter. Since the schema fully documents both required parameters, the baseline of 3 applies without additional value from the description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a clear and specific action: 'Unapprove a merge request.' It uses a precise verb and resource, and immediately distinguishes itself from `merge_merge_request` by explicitly stating that tool is only for merging. This makes it unambiguous which sibling it is not, and the purpose is evident without needing to inspect the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives direct when-to-use guidance: 'Use this to remove the current user's approval from an existing merge request.' It also provides an exclusion: 'use `merge_merge_request` only when you intend to merge.' This distinguishes it from a key sibling. However, it does not mention the alternative `approve_merge_request` (the inverse operation), which could be relevant if the user wants to add approval instead. Since the purpose is already clear from the name, this is a minor gap, so a 4 is appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Deploy Server

Other Tools