Skip to main content
Glama

bulk_publish_draft_notes

Publish all draft notes for a merge request while optionally setting reviewer state and posting a summary note. Works even with no drafts, enabling bulk draft management in GitLab.

Instructions

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. Use this for the specific operation described; choose a sibling tool when you need a different resource or lifecycle action. It changes remote GitLab state and requires the necessary project or group permission; GitLab returns validation, conflict, permission, or rate-limit errors instead of silently applying an invalid request. When project_id or group_id is accepted, provide the numeric ID or complete URL-encoded path described by the schema; use required identifiers and pagination fields exactly as documented.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
noteNoSummary note body to post on the merge request (GitLab 19.2+)
internalNoIf true, the summary note is internal (GitLab 19.2+, default false)
project_idYesProject ID or complete URL-encoded path to project
reviewer_stateNoSet reviewer review state after publishing (GitLab 19.2+). Does not record a formal approval. Works even with no draft notes.
merge_request_iidYesThe IID of a merge request

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. Changed3 schema fields changedv2.1.43
    • addedInput schema / properties / internal
      Added value: +{
      +  "description": "If true, the summary note is internal (GitLab 19.2+, default false)",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / note
      Added value: +{
      +  "description": "Summary note body to post on the merge request (GitLab 19.2+)",
      +  "type": "string"
      +}
    • addedInput schema / properties / reviewer_state
      Added value: +{
      +  "description": "Set reviewer review state after publishing (GitLab 19.2+). Does not record a formal approval. Works even with no draft notes.",
      +  "enum": [
      +    "requested_changes",
      +    "reviewed"
      +  ],
      +  "type": "string"
      +}
  2. Addedv2.1.18
  3. Removedv2.1.14
  4. Addedv2.1.11
  5. Removedv2.1.10
  6. Changed2 schema fields changedv2.1.9
    • removedInput schema / additionalProperties
      Removed value: -false
    • addedInput schema / required
      Added value: +[
      +  "project_id",
      +  "merge_request_iid"
      +]
  7. First observedv1.0.0

TDQS

B3.1/5.0
Behavior3/5

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

States that it mutates remote GitLab state, requires project/group permission, and that GitLab returns validation, conflict, permission, and rate-limit errors rather than silently proceeding. This is genuinely useful operational guidance. Annotations add limited behavioral detail, so the description does real work here, though it stops short of describing the success response shape.

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

Conciseness3/5

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

Front-loaded with the core action, but the middle sections repeat boilerplate ('for the specific operation described', 'exactly as documented') that could be cut without losing information. Adequately organized, mildly padded.

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?

Covers the core action, optional fields, version constraints, permission, and error behavior. It doesn't clarify which identifier must be real vs. which scope (project_id vs group_id) is expected when both are accepted, and it stops short of describing the success response. Given mutation semantics and no output schema, these are moderate gaps, but the core call is well-constrained.

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 coverage is 100%, so the baseline is 3. The description adds the GitLab 19.2+ version gates for note/internal/reviewer_state fields, which is value beyond the enum descriptions)Skip: the numeric-ID-vs-URL-path line only restates what the schema already says, so it contributes nothing.

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?

Action and resource are explicit: publishes draft notes for a merge request, with optional reviewer_state and internal note. The phrase 'choose a sibling tool' is generic, not a real discriminator, so it doesn't fully pin down when this tool differs from publish_draft_note — but the core operation is unmistakable.

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

Usage Guidelines2/5

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

The guidance 'choose a sibling tool when you need a different resource or lifecycle action' is generic filler applicable to literally every tool in the catalog; it names no specific sibling. It does add useful version gating (GitLab 19.2+ for note/reviewer_state) and permission requirements, but the routing advice carries no concrete signal.

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

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/zereight/gitlab-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server