Skip to main content
Glama

list_merge_requests

Read-only

Retrieve merge requests for a project or the current user, with filters for state, labels, author, assignee, and date to find and review relevant changes.

Instructions

List merge requests (without project_id: user's MRs; with project_id: project MRs). For one known resource, use the matching get tool.

Input Schema

NameRequiredDescriptionDefault
wipNoWIP filter
pageNoPage number (default 1)
sortNoasc or desc
scopeNoMR scope
stateNoMR state
labelsNoLabel names
searchNoSearch terms
summaryNoIf true, return only high-signal fields (id, iid, title, state, web_url, …). Default false keeps the full GitLab JSON.
jmespathNoOptional JMESPath expression filtering the JSON result before return.
order_byNoSort field
per_pageNoItems per page (max 100, default 20)
author_idNoAuthor user ID. Mutually exclusive with author_username.
milestoneNoMilestone title
project_idNoProject ID or URL-encoded path. Omit to list the user's accessible MRs.
assignee_idNoUser ID, none, or any. Mutually exclusive with assignee_username.
reviewer_idNoReviewer user ID, none, or any. Mutually exclusive with reviewer_username.
created_afterNoCreated after
source_branchNoSource branch
target_branchNoTarget branch
updated_afterNoUpdated after
created_beforeNoCreated before
updated_beforeNoUpdated before
author_usernameNoAuthor username. Mutually exclusive with author_id.
assignee_usernameNoUsername. Mutually exclusive with assignee_id.
reviewer_usernameNoReviewer username. Mutually exclusive with reviewer_id.
with_labels_detailsNoInclude label details
approved_by_usernamesNoApproved by these usernames

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed24 schema fields changedv2.3.22
    • changedInput schema / properties / approved_by_usernames / description
      Previous value: -"Returns merge requests approved by the given usernames (array)."New value: +"Approved by these usernames"
    • changedInput schema / properties / assignee_id / description
      Previous value: -"Return MRs assigned to the given user ID (integer), 'none', or 'any'. Mutually exclusive with assignee_username."New value: +"User ID, none, or any. Mutually exclusive with assignee_username."
    • changedInput schema / properties / assignee_username / description
      Previous value: -"Returns merge requests assigned to the given username. Mutually exclusive with assignee_id."New value: +"Username. Mutually exclusive with assignee_id."
    • changedInput schema / properties / author_id / description
      Previous value: -"Returns merge requests created by the given user ID (integer). Mutually exclusive with author_username."New value: +"Author user ID. Mutually exclusive with author_username."
    • changedInput schema / properties / author_username / description
      Previous value: -"Returns merge requests created by the given username. Mutually exclusive with author_id."New value: +"Author username. Mutually exclusive with author_id."
    • changedInput schema / properties / created_after / description
      Previous value: -"Return merge requests created after the given time"New value: +"Created after"
    • changedInput schema / properties / created_before / description
      Previous value: -"Return merge requests created before the given time"New value: +"Created before"
    • changedInput schema / properties / labels / description
      Previous value: -"Array of label names"New value: +"Label names"
    • changedInput schema / properties / order_by / description
      Previous value: -"Return merge requests ordered by the given field"New value: +"Sort field"
    • changedInput schema / properties / page / description
      Previous value: -"Page number for pagination (default: 1)"New value: +"Page number (default 1)"
    • changedInput schema / properties / per_page / description
      Previous value: -"Number of items per page (max: 100, default: 20)"New value: +"Items per page (max 100, default 20)"
    • changedInput schema / properties / project_id / description
      Previous value: -"Project ID or URL-encoded path (optional - if not provided, lists all merge requests the user has access to)"New value: +"Project ID or URL-encoded path. Omit to list the user's accessible MRs."
    • changedInput schema / properties / reviewer_id / description
      Previous value: -"Returns merge requests which have the user as a reviewer. Must be an integer, 'none', or 'any'. Mutually exclusive with reviewer_username."New value: +"Reviewer user ID, none, or any. Mutually exclusive with reviewer_username."
    • changedInput schema / properties / reviewer_username / description
      Previous value: -"Returns merge requests which have the user as a reviewer by username. Mutually exclusive with reviewer_id."New value: +"Reviewer username. Mutually exclusive with reviewer_id."
    • changedInput schema / properties / scope / description
      Previous value: -"Return merge requests from a specific scope"New value: +"MR scope"
    • changedInput schema / properties / search / description
      Previous value: -"Search for specific terms"New value: +"Search terms"
    • changedInput schema / properties / sort / description
      Previous value: -"Return merge requests sorted in ascending or descending order"New value: +"asc or desc"
    • changedInput schema / properties / source_branch / description
      Previous value: -"Return merge requests from a specific source branch"New value: +"Source branch"
    • changedInput schema / properties / state / description
      Previous value: -"Return merge requests with a specific state"New value: +"MR state"
    • changedInput schema / properties / target_branch / description
      Previous value: -"Return merge requests targeting a specific branch"New value: +"Target branch"
    • changedInput schema / properties / updated_after / description
      Previous value: -"Return merge requests updated after the given time"New value: +"Updated after"
    • changedInput schema / properties / updated_before / description
      Previous value: -"Return merge requests updated before the given time"New value: +"Updated before"
    • changedInput schema / properties / wip / description
      Previous value: -"Filter merge requests against their wip status"New value: +"WIP filter"
    • changedInput schema / properties / with_labels_details / description
      Previous value: -"Return more details for each label"New value: +"Include label details"
  2. Changed1 schema field changedv2.3.8
    • addedInput schema / properties / summary
      Added value: +{
      +  "description": "If true, return only high-signal fields (id, iid, title, state, web_url, …). Default false keeps the full GitLab JSON.",
      +  "type": "boolean"
      +}
  3. Changed1 schema field changedv2.1.66
    • addedInput schema / properties / jmespath
      Added value: +{
      +  "description": "Optional JMESPath expression filtering the JSON result before return.",
      +  "type": "string"
      +}
  4. Addedv2.1.18
  5. Removedv2.1.14
  6. Addedv2.1.11
  7. Removedv2.1.10
  8. Changed8 schema fields changedv2.1.9
    • removedInput schema / additionalProperties
      Removed value: -false
    • changedInput schema / properties / assignee_id / description
      Previous value: -"Return issues assigned to the given user ID. user id or none or any"New value: +"Return MRs assigned to the given user ID (integer), 'none', or 'any'. Mutually exclusive with assignee_username."
    • changedInput schema / properties / assignee_username / description
      Previous value: -"Returns merge requests assigned to the given username"New value: +"Returns merge requests assigned to the given username. Mutually exclusive with assignee_id."
    • changedInput schema / properties / author_id / description
      Previous value: -"Returns merge requests created by the given user ID"New value: +"Returns merge requests created by the given user ID (integer). Mutually exclusive with author_username."
    • changedInput schema / properties / author_username / description
      Previous value: -"Returns merge requests created by the given username"New value: +"Returns merge requests created by the given username. Mutually exclusive with author_id."
    • changedInput schema / properties / project_id / description
      Previous value: -"Project ID or URL-encoded path"New value: +"Project ID or URL-encoded path (optional - if not provided, lists all merge requests the user has access to)"
    • changedInput schema / properties / reviewer_id / description
      Previous value: -"Returns merge requests which have the user as a reviewer. user id or none or any"New value: +"Returns merge requests which have the user as a reviewer. Must be an integer, 'none', or 'any'. Mutually exclusive with reviewer_username."
    • changedInput schema / properties / reviewer_username / description
      Previous value: -"Returns merge requests which have the user as a reviewer"New value: +"Returns merge requests which have the user as a reviewer by username. Mutually exclusive with reviewer_id."
  9. First observedv1.0.0

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered; the description adds the scope-switching semantics, which is genuinely useful behavioral context. However it says nothing about pagination defaults, result size, or the summary/jmespath response-shaping options that materially change what comes back.

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

Conciseness5/5

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

Two compact sentences, front-loaded with the resource and scope rule, with zero redundant wording. Every clause carries a distinct instruction.

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

Completeness3/5

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

For a 27-parameter listing tool with no output schema, the description covers the key scope decision and the alternative tool but skips pagination behavior and the response-shaping options (summary, jmespath) that an agent must understand to get usable output. Adequate, not thorough.

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?

Schema description coverage is 100%, including enums, mutual-exclusion notes, and the summary/jmespath options, so the schema carries the parameter burden. The description only restates the project_id semantics that the schema already documents. Baseline 3 is appropriate.

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

Purpose4/5

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

States a specific verb and resource ('List merge requests') and immediately explains the two scoping modes: user's MRs when project_id is omitted, project MRs when supplied. It doesn't enumerate the filterable dimensions (state, scope, labels, dates) that distinguish it from other listing tools, so it falls short of a 5.

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?

Gives an explicit hand-off rule: for a single known resource, use the matching get tool (get_merge_request). It does not state when-not to use it (e.g. versus search-based sibling listing) or mention pagination expectations, but the core routing decision is spelled out.

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