Skip to main content
Glama
chntif
by chntif

mcp-gitlab-workflow

English | 简体中文

mcp-gitlab-workflow is an MCP server for issue-driven GitLab development.

It can take a requirement or an existing GitLab issue and drive a standardized delivery flow: requirement analysis, issue creation, branching, coding, merge request creation, and issue updates. It also provides a set of atomic GitLab API tools for custom orchestration and fine-grained control.

1. Core Capabilities

  • workflow_*: higher-level tools that package common requirement-to-delivery flows into a single tool call

  • gitlab_*: atomic GitLab API tools for custom orchestration and fine-grained control

Target projects for issues and code delivery are configured with WORKFLOW_ISSUE_PROJECT_ID and WORKFLOW_CODE_PROJECT_ID. See the environment variable section below for the full configuration matrix.

Workflow Tools

  • workflow_requirement_to_issue: analyze a requirement and create a GitLab issue

  • workflow_review_mr_post_comment: review a target merge request and post a review comment

  • workflow_issue_to_delivery: start from an existing issue and complete branch -> code change -> MR -> issue comment -> issue log

  • workflow_requirement_to_delivery: run the full end-to-end flow from a requirement

Atomic GitLab Tools

Issue tools fall back to WORKFLOW_ISSUE_PROJECT_ID by default, while code and merge request tools fall back to WORKFLOW_CODE_PROJECT_ID.

  • Users and labels: gitlab_get_current_user, gitlab_list_labels, gitlab_create_label, gitlab_update_label, gitlab_delete_label

  • Issues: gitlab_create_issue, gitlab_get_issue, gitlab_get_issue_notes, gitlab_add_issue_comment, gitlab_get_issue_images

  • Repository: gitlab_create_branch, gitlab_get_file, gitlab_commit_files, gitlab_upload_project_file

  • Merge requests: gitlab_get_merge_request, gitlab_get_mr_notes, gitlab_create_merge_request, gitlab_create_mr_note, gitlab_get_mr_changes, gitlab_approve_mr, gitlab_unapprove_mr

Related MCP server: GitLab MCP Server

2. Example

Using workflow_requirement_to_delivery as an example, it is best to explicitly name the tool in your prompt or wrap it in a higher-level custom instruction / skill so the LLM can reliably choose the intended workflow.

Input

Use workflow_requirement_to_delivery to add a forum interaction feature

Result

The workflow can automatically complete the flow below:

requirement analysis -> issue creation -> branch -> code change -> MR -> issue update

image-1

(1) Issue creation

Issue creation

(2) Code changes and MR submission based on the issue

MR

(3) Issue comment

Issue comment

(4) Local issue-log.md

issue-log.md

With this workflow, a developer can hand a requirement or an assigned issue directly to an agent and let it complete the full development flow in an issue-driven way.

3. Configuration

3.1 NPX

{
  "mcpServers": {
    "gitlab-workflow": {
      "command": "npx",
      "args": ["-y", "@chntif/mcp-gitlab-workflow"],
      "env": {
        "GITLAB_TOKEN": "YOUR_TOKEN",
        "GITLAB_API_BASE_URL": "https://gitlab.com/api/v4",
        "WORKFLOW_ISSUE_PROJECT_ID": "82346102",
        "WORKFLOW_ISSUE_PROJECT_PATH": "tchen1690/test",
        "WORKFLOW_CODE_PROJECT_ID": "82346102",
        "WORKFLOW_CODE_PROJECT_PATH": "tchen1690/test",
        "WORKFLOW_BASE_BRANCH": "develop",
        "WORKFLOW_TARGET_BRANCH": "develop",
        "WORKFLOW_LOCAL_REMOTE_NAME": "origin"
      }
    }
  }
}

3.2 Codex

(1) Add from the terminal

codex mcp add gitlab-workflow \
  --env GITLAB_TOKEN=YOUR_TOKEN \
  --env GITLAB_API_BASE_URL=https://gitlab.com/api/v4 \
  --env WORKFLOW_ISSUE_PROJECT_ID=80376102 \
  --env WORKFLOW_ISSUE_PROJECT_PATH=tchen1690/test \
  --env WORKFLOW_CODE_PROJECT_ID=80376102 \
  --env WORKFLOW_CODE_PROJECT_PATH=tchen1690/test \
  --env WORKFLOW_BASE_BRANCH=develop \
  --env WORKFLOW_TARGET_BRANCH=develop \
  --env WORKFLOW_LOCAL_REMOTE_NAME=origin \
  -- npx -y @chntif/mcp-gitlab-workflow

(2) Or add it to config.toml

[mcp_servers.gitlab-workflow]
command = "npx"
args = ["-y", "@chntif/mcp-gitlab-workflow"]

[mcp_servers.gitlab-workflow.env]
GITLAB_TOKEN = "YOUR_TOKEN"
GITLAB_API_BASE_URL = "https://gitlab.com/api/v4"
WORKFLOW_ISSUE_PROJECT_ID = "80376102"
WORKFLOW_ISSUE_PROJECT_PATH = "tchen1690/test"
WORKFLOW_CODE_PROJECT_ID = "80376102"
WORKFLOW_CODE_PROJECT_PATH = "tchen1690/test"
WORKFLOW_BASE_BRANCH = "develop"
WORKFLOW_TARGET_BRANCH = "develop"
WORKFLOW_LOCAL_REMOTE_NAME = "origin"

3.3 Claude Code

claude mcp add gitlab-workflow \
  -e GITLAB_TOKEN=YOUR_TOKEN \
  -e GITLAB_API_BASE_URL=https://gitlab.com/api/v4 \
  -e WORKFLOW_ISSUE_PROJECT_ID=80376102 \
  -e WORKFLOW_ISSUE_PROJECT_PATH=tchen1690/test \
  -e WORKFLOW_CODE_PROJECT_ID=80376102 \
  -e WORKFLOW_CODE_PROJECT_PATH=tchen1690/test \
  -e WORKFLOW_BASE_BRANCH=develop \
  -e WORKFLOW_TARGET_BRANCH=develop \
  -e WORKFLOW_LOCAL_REMOTE_NAME=origin \
  -- npx -y @chntif/mcp-gitlab-workflow

You can also directly write the configuration in 3.1 into Claude Code's configuration file.

3.4 Local startup

{
  "mcpServers": {
    "gitlab-workflow": {
      "command": "node",
      "args": ["/gitlab-workflow-server/dist/src/server.js"],
      "env": {
        "GITLAB_TOKEN": "YOUR_TOKEN",
        "GITLAB_API_BASE_URL": "https://gitlab.com/api/v4",
        "WORKFLOW_ISSUE_PROJECT_ID": "82346102",
        "WORKFLOW_ISSUE_PROJECT_PATH": "tchen1690/test",
        "WORKFLOW_CODE_PROJECT_ID": "82346102",
        "WORKFLOW_CODE_PROJECT_PATH": "tchen1690/test",
        "WORKFLOW_BASE_BRANCH": "develop",
        "WORKFLOW_TARGET_BRANCH": "develop",
        "WORKFLOW_LOCAL_REMOTE_NAME": "origin"
      }
    }
  }
}

3.5 About uv/uvx

This project is a Node.js package. npx is the recommended way to run it.

4. Environment Variables

Parameter resolution order:

tool args -> user-provided env -> built-in defaults

If the user does not explicitly pass a parameter such as project_id, the tool can use runtime configuration from environment variables. Some variables also have built-in defaults.

Environment Variable

Purpose

Default

Required

GITLAB_TOKEN

GitLab API access token used by the server and all GitLab operations

None

Yes

GITLAB_API_BASE_URL

Base URL for the GitLab API

https://gitlab.com/api/v4

No

WORKFLOW_ISSUE_PROJECT_ID

Default target project ID for issue-related tools

None

No

WORKFLOW_ISSUE_PROJECT_PATH

Default issue project path used in templates and references

None

No

WORKFLOW_CODE_PROJECT_ID

Default target project ID for repository, branch, commit, and MR tools

None

No

WORKFLOW_CODE_PROJECT_PATH

Default code project path used in templates, logs, and output

None

No

WORKFLOW_BASE_BRANCH

Default base branch used before creating a new delivery branch

develop

No

WORKFLOW_TARGET_BRANCH

Default merge request target branch

develop

No

WORKFLOW_LOCAL_REMOTE_NAME

Default git remote used by local git workflows

origin

No

WORKFLOW_LABEL

Default issue title prefix and fallback label

None

No

WORKFLOW_ASSIGNEE_USERNAME

Default assignee username for issues and merge requests

None

No

WORKFLOW_ISSUE_LOG_PATH

Path of the local issue log file

issue-log.md

No

WORKFLOW_UPDATE_ISSUE_LOG

Whether delivery workflows update the local issue log by default

true

No

WORKFLOW_DELIVERY_METHOD

Default delivery mode, supports local_git and remote_api

local_git

No

WORKFLOW_CHECKOUT_LOCAL_BRANCH

Whether remote_api delivery should sync and checkout the created branch locally

false

No

WORKFLOW_LOCK_ISSUE_PROJECT_ID

Restrict issue operations to a fixed issue project ID

None

No

WORKFLOW_LOCK_CODE_PROJECT_ID

Restrict code and MR operations to a fixed code project ID

None

No

  • GITLAB_TOKEN, GITLAB_API_BASE_URL: required to connect to GitLab

  • WORKFLOW_ISSUE_PROJECT_ID, WORKFLOW_CODE_PROJECT_ID: define the issue project and code project, and can point to the same project

  • WORKFLOW_ISSUE_PROJECT_PATH, WORKFLOW_CODE_PROJECT_PATH: improve rendered references and display output, but are optional

  • WORKFLOW_BASE_BRANCH, WORKFLOW_TARGET_BRANCH: should follow your team branching strategy

  • WORKFLOW_LOCAL_REMOTE_NAME: usually origin

If a specific operation should target values different from your default environment configuration, passing explicit tool arguments will override the configured values.

5. License

MIT

Available Tools

28 tools
gitlab_add_issue_commentA

Create issue note/comment. Supports direct body or auto-generation from MR changed files (by MR IID or source branch).

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idNoGitLab project ID. Omit this field unless the user explicitly provided a value. When omitted, the current runtime config value is used (WORKFLOW_ISSUE_PROJECT_ID overrides the built-in default when configured). If the runtime config is still unset, the tool returns a missing-parameter error. Do not infer or auto-generate this value.
issue_iidNoIssue IID.
bodyNoComment markdown body. If provided, auto-generation fields are ignored.
auto_generate_from_mr_changesNoWhen true and body is missing, generate comment from MR changed-file analysis.
code_project_idNoCode project ID used for MR lookup/changes when auto_generate_from_mr_changes=true. Omit this field unless the user explicitly provided a value. When omitted, the current runtime config value is used (WORKFLOW_CODE_PROJECT_ID overrides the built-in default when configured). If the runtime config is still unset, the tool returns a missing-parameter error. Do not infer or auto-generate this value.
mr_iidNoOptional MR IID for changed-file analysis.
branch_nameNoOptional source branch for MR lookup when mr_iid is not provided.
target_branchNoOptional target branch filter while resolving MR by branch_name.
local_repo_pathNoOptional local repo path used to detect current branch when branch_name is missing.
include_issue_contextNoWhether generated comment includes compact issue requirement context. Default true.
max_changed_filesNoMaximum number of changed files included in generated comment. Default 30.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the tool call succeeded.
toolYesTool name.
dataNoCreated GitLab issue note payload.
error_typeNoError type when ok=false.
messageNoError message when ok=false.

TDQS

A3.7/5.0
Behavior2/5

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

No annotations exist, so the description must fully disclose behavior. It states a write operation (create) but omits side effects, authorization requirements, rate limits, or error scenarios. The auto-generation logic is mentioned but not detailed. Minimal added transparency beyond the tool name.

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 sentences totaling 18 words, front-loaded with the core purpose. Every word earns its place; no fluff.

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?

Given 11 parameters and an existing output schema, the description covers the two primary use cases. However, it lacks guidance on when to use this vs siblings, does not mention required permissions or prerequisites, and does not describe the return value (though output schema likely covers it). Adequate but with gaps.

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% with detailed descriptions. The tool description adds value by summarizing the two usage patterns (direct body vs auto-generation), helping agents understand parameter grouping, but does not add new details beyond the schema.

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 clearly states the tool creates an issue note/comment and specifies two modes: direct body or auto-generation from MR changes. The verb 'Create' and resource 'issue note/comment' are precise and distinguish it from sibling tools like gitlab_create_mr_note, which comments on MRs.

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 implies when to use direct body vs auto-generation and provides context on how to specify the MR (by IID or source branch). However, it does not explicitly state when not to use this tool or mention alternatives like gitlab_create_mr_note for MR comments. Still, given the sibling list, the differentiation is reasonably clear.

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

gitlab_approve_mrB

Approve merge request by GitLab approval API.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idNoGitLab project ID. Omit this field unless the user explicitly provided a value. When omitted, the current runtime config value is used (WORKFLOW_CODE_PROJECT_ID overrides the built-in default when configured). If the runtime config is still unset, the tool returns a missing-parameter error. Do not infer or auto-generate this value.
mr_iidNoMerge request IID.
shaNoOptional expected HEAD SHA for optimistic locking during approval.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the tool call succeeded.
toolYesTool name.
dataNoGitLab merge request approval payload.
error_typeNoError type when ok=false.
messageNoError message when ok=false.

TDQS

B3.1/5.0
Behavior2/5

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

No annotations provided, so the description must disclose behavioral traits. It only states the basic action without mentioning idempotency, side effects of approving an already approved MR, authentication requirements, or whether approval is reversible.

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?

Single sentence, highly concise. However, it could briefly mention prerequisites or refer to parameters without losing compactness.

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

Completeness2/5

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

Despite having an output schema, the description lacks essential context like prerequisites, permission requirements, or behavior when the MR is already approved. The tool has 3 parameters, but the description does not explain their role or the tool's overall workflow.

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%, providing detailed descriptions for all parameters, especially project_id. The tool description adds no additional parameter context, so baseline 3 applies.

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 explicitly states the action (Approve) and the resource (merge request) with the method (GitLab approval API), making the purpose very clear. It distinguishes from the sibling tool 'gitlab_unapprove_mr' which reverses the action.

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?

No guidance on when to use this tool, prerequisites (e.g., MR must be open, user needs approval permissions), or when to avoid it. Without context, the agent must infer usage from the tool name alone.

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

gitlab_commit_filesB

Create one commit with multiple file actions via GitLab commits API.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idNoGitLab project ID. Omit this field unless the user explicitly provided a value. When omitted, the current runtime config value is used (WORKFLOW_CODE_PROJECT_ID overrides the built-in default when configured). If the runtime config is still unset, the tool returns a missing-parameter error. Do not infer or auto-generate this value.
branchNoTarget branch.
commit_messageNoCommit message.
start_branchNoOptional source branch when committing to a new branch.
actionsNoCommit actions list.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the tool call succeeded.
toolYesTool name.
dataNoCreated GitLab commit payload.
error_typeNoError type when ok=false.
messageNoError message when ok=false.

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It states the tool creates a commit, which implies a mutation, but it does not disclose any behavioral traits such as required permissions, rate limits, idempotency, or side effects (e.g., whether it pushes the commit immediately). The description is too brief to adequately inform an AI agent about the tool's behavior.

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 a single concise sentence that front-loads the main action. However, it is so brief that it may sacrifice clarity on usage context. Still, there is no fluff, and it earns a high score for conciseness.

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?

Given the tool has 5 parameters including nested objects and an output schema, the description is minimal. It provides no context beyond the basic action, such as when to use multiple actions, error scenarios, or integration with workflows. The existence of an output schema reduces the burden for return values, but additional context is needed for completeness.

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 has 100% description coverage, providing detailed semantics for each parameter (e.g., project_id includes runtime config instructions). The tool description itself adds no additional meaning beyond the schema, so a baseline of 3 is appropriate.

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 clearly states the tool creates one commit with multiple file actions via the GitLab commits API. It specifies the verb 'create' and the resource 'one commit with multiple file actions', which distinguishes it from sibling tools like gitlab_create_branch or gitlab_get_file that do not perform commits.

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 description does not provide any guidance on when to use this tool versus alternatives. It does not mention when not to use it, prerequisites (e.g., branch existence), or compare to potential alternatives like creating separate commits. The usage context is only implied by the purpose.

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

gitlab_create_branchB

Create repository branch by GitLab REST API.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idNoGitLab project ID. Omit this field unless the user explicitly provided a value. When omitted, the current runtime config value is used (WORKFLOW_CODE_PROJECT_ID overrides the built-in default when configured). If the runtime config is still unset, the tool returns a missing-parameter error. Do not infer or auto-generate this value.
branchNoBranch name to create.
refNoSource ref (branch/tag/SHA).

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the tool call succeeded.
toolYesTool name.
dataNoCreated GitLab branch payload.
error_typeNoError type when ok=false.
messageNoError message when ok=false.

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries full behavioral burden but fails to disclose traits like error handling (e.g., branch already exists), permissions needed, or mutability. The terse description is insufficient.

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 a single sentence with the verb front-loaded. It is concise but could include additional behavioral context without harming conciseness.

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

Completeness2/5

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

Although an output schema exists and schema coverage is high, the description omits important contextual details (e.g., idempotency, ref validity). The minimalism leaves gaps for an AI agent.

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?

Input schema provides 100% description coverage for all three parameters, including detailed guidance on project_id. The tool description adds no extra meaning beyond the schema, meeting baseline but not exceeding.

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 'Create repository branch by GitLab REST API' clearly states a specific verb (create) and resource (repository branch), distinguishing it from sibling tools like gitlab_create_issue or gitlab_create_merge_request.

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?

No guidance on when to use this tool versus alternatives (e.g., gitlab_commit_files) or what prerequisites are needed. The description lacks context for tool selection.

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

gitlab_create_issueB

Create an issue with GitLab REST API /projects/:id/issues.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idNoGitLab project ID. Omit this field unless the user explicitly provided a value. When omitted, the current runtime config value is used (WORKFLOW_ISSUE_PROJECT_ID overrides the built-in default when configured). If the runtime config is still unset, the tool returns a missing-parameter error. Do not infer or auto-generate this value.
titleNoIssue title.
descriptionNoIssue description markdown.
labelsNoIssue labels array.
assignee_idsNoAssignee user IDs.
assignee_usernamesNoOptional assignee GitLab usernames. Resolved to assignee_ids internally.
assign_to_current_user_if_missingNoWhen true, assign issue to current token user if no assignee is provided.
milestone_idNoMilestone ID.
due_dateNoDue date in YYYY-MM-DD.
confidentialNoWhether issue is confidential.
issue_typeNoGitLab issue_type value.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the tool call succeeded.
toolYesTool name.
dataNoCreated GitLab issue payload.
error_typeNoError type when ok=false.
messageNoError message when ok=false.

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits. It only mentions the API endpoint but fails to describe important aspects like authentication requirements, side effects of creation, error conditions (e.g., missing project_id behavior), or any rate limits. This is insufficient for safe agent invocation.

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 a single sentence with no wasted words. It is appropriately sized for a clear purpose, though it could be slightly expanded with usage guidance without losing conciseness. Rating 4 for efficient but not perfect communication.

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

Completeness2/5

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

Despite having an output schema (implied), the description does not mention return values, error handling, or any special behavior. Given the complexity of 11 parameters and many options, the description lacks the context needed for a complete understanding. It falls short of what is minimally required.

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 has 100% description coverage for its 11 parameters, so the description adds no additional meaning. Baseline is 3 because the schema carries the burden; the description's minimal statement does not enhance parameter understanding beyond what is already structured.

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 clearly states the action ('Create an issue') and the resource ('GitLab REST API /projects/:id/issues'), making the tool's primary purpose unmistakable. It distinguishes from sibling tools like gitlab_get_issue or gitlab_create_merge_request through the specific verb and resource.

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

Usage Guidelines3/5

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

The description does not provide explicit guidance on when to use this tool versus alternatives (e.g., gitlab_create_merge_request) or when not to use it. Usage is implied through the purpose, but no contextual advice is given.

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

gitlab_create_labelB

Create a project label (/projects/:id/labels).

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idNoGitLab project ID. Omit this field unless the user explicitly provided a value. When omitted, the tool tries the current runtime config defaults from WORKFLOW_ISSUE_PROJECT_ID or WORKFLOW_CODE_PROJECT_ID. If both are unset, or both are set to different values, the tool returns a missing-parameter error and you must pass project_id explicitly. Do not infer or auto-generate this value.
nameNoLabel name.
colorNoLabel color, e.g. #FF8800.
descriptionNoLabel description.
priorityNoLabel priority.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the tool call succeeded.
toolYesTool name.
dataNoCreated label payload.
error_typeNoError type when ok=false.
messageNoError message when ok=false.

TDQS

B3.4/5.0
Behavior2/5

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

No annotations provided, and the description only gives the endpoint. It does not disclose authentication needs, side effects, rate limits, or any constraints beyond what the schema already offers.

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?

Single sentence with no wasted words. Action and resource are front-loaded.

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

Completeness2/5

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

Despite a complete schema and output schema, the description lacks context on tool behavior, such as success outcomes or edge cases. It is minimal for a tool with five parameters.

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%, so the schema already documents all parameters. The description adds no further semantic value beyond the endpoint context.

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?

Clearly states the action (create) and resource (project label), and provides the API endpoint for reference. Distinct from siblings like gitlab_delete_label and gitlab_update_label.

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

Usage Guidelines3/5

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

Implied usage: when a new label is needed. However, no explicit guidance on when to use this tool versus alternatives like gitlab_update_label or gitlab_list_labels.

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

gitlab_create_merge_requestB

Create merge request by GitLab REST API /projects/:id/merge_requests.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idNoGitLab project ID. Omit this field unless the user explicitly provided a value. When omitted, the current runtime config value is used (WORKFLOW_CODE_PROJECT_ID overrides the built-in default when configured). If the runtime config is still unset, the tool returns a missing-parameter error. Do not infer or auto-generate this value.
source_branchNoSource branch.
target_branchNoTarget branch.
titleNoMerge request title.
descriptionNoMerge request description.
issue_project_idNoOptional issue project ID used to render related issue reference in MR description. Omit this field unless the user explicitly provided a value. When omitted, the current runtime config value is used (WORKFLOW_ISSUE_PROJECT_ID overrides the built-in default when configured). If the runtime config is still unset, the tool returns a missing-parameter error. Do not infer or auto-generate this value.
issue_project_pathNoOptional issue project path used to render related issue reference. Omit this field unless the user explicitly provided a value. When omitted, the current runtime config value is used (WORKFLOW_ISSUE_PROJECT_PATH overrides the built-in default when configured). If the runtime config is still unset, the tool returns a missing-parameter error. Do not infer or auto-generate this value.
issue_iidNoOptional related issue IID. If provided, MR description will include related issue section.
labelsNoLabels array.
assignee_idsNoAssignee user IDs.
reviewer_idsNoReviewer user IDs.
remove_source_branchNoRemove source branch after merge.
squashNoEnable squash on merge.
draftNoCreate MR as draft.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the tool call succeeded.
toolYesTool name.
dataNoCreated GitLab merge request payload.
error_typeNoError type when ok=false.
messageNoError message when ok=false.

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are present, so the description must disclose behavioral traits. It only states the API endpoint, omitting details about idempotency, side effects (e.g., triggering pipelines), authentication, or error conditions. The input schema provides some constraints, but the tool description itself lacks behavioral context.

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 a single concise sentence that front-loads the core action. It is efficient and wastes no words, though it could benefit from slightly more depth.

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

Completeness2/5

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

Given 14 parameters, no annotations, and the presence of an output schema, the description is far too minimal. It does not explain the overall workflow, return values, or how the tool fits into a larger process. The input schema compensates somewhat, but the description lacks context.

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%, so the baseline is 3. The tool description adds no extra meaning beyond the schema; the parameter descriptions in the schema are detailed (e.g., for project_id, referencing runtime config), but the top-level description does not enhance them.

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 clearly states the verb 'Create' and resource 'merge request', and explicitly references the GitLab REST API endpoint. This distinguishes it from sibling tools like gitlab_get_merge_request and gitlab_approve_mr.

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 description provides no guidance on when to use this tool versus alternatives (e.g., when to create a merge request vs. approving or getting one). No context about prerequisites or when not to use it is given.

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

gitlab_create_mr_noteC

Create merge-request note/comment.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idNoGitLab project ID. Omit this field unless the user explicitly provided a value. When omitted, the current runtime config value is used (WORKFLOW_CODE_PROJECT_ID overrides the built-in default when configured). If the runtime config is still unset, the tool returns a missing-parameter error. Do not infer or auto-generate this value.
mr_iidNoMerge request IID.
bodyNoComment markdown body.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the tool call succeeded.
toolYesTool name.
dataNoCreated GitLab merge request note payload.
error_typeNoError type when ok=false.
messageNoError message when ok=false.

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It only states the action without disclosing any behavioral traits such as side effects, authentication needs, or data mutations. For example, it does not indicate whether adding a note triggers notifications or requires specific permissions.

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?

The description is a single sentence, which is concise, but it lacks structure. Important information about usage and behavior is missing, making it too sparse for a tool with three parameters and no annotations.

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

Completeness2/5

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

The tool has a simple purpose but the description is incomplete. It does not explain what a note/comment is, the format of the body, any constraints (e.g., markdown support), or the return value. With no annotations and an output schema present, the description should provide more context.

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 has 100% description coverage for all three parameters (project_id, mr_iid, body), with clear explanations. The description does not add any additional semantic meaning beyond what the schema provides, so the baseline score of 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?

The description clearly states the tool creates a merge-request note or comment. The verb 'create' and resource 'merge-request note' are specific, distinguishing it from issue comment tools like gitlab_add_issue_comment. However, it lacks additional context that could further differentiate it from related tools like gitlab_get_mr_notes.

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?

No guidance on when to use this tool versus alternatives such as gitlab_add_issue_comment or gitlab_approve_mr. The description does not mention use cases, prerequisites, or when not to use it.

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

gitlab_delete_labelB

Delete a project label (/projects/:id/labels/:label_id).

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idNoGitLab project ID. Omit this field unless the user explicitly provided a value. When omitted, the tool tries the current runtime config defaults from WORKFLOW_ISSUE_PROJECT_ID or WORKFLOW_CODE_PROJECT_ID. If both are unset, or both are set to different values, the tool returns a missing-parameter error and you must pass project_id explicitly. Do not infer or auto-generate this value.
label_nameNoLabel name to delete.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the tool call succeeded.
toolYesTool name.
dataNoLabel deletion result payload.
error_typeNoError type when ok=false.
messageNoError message when ok=false.

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are present, so the description carries full burden. It only states the action and API path, without disclosing side effects (e.g., permanence, permission requirements, or impact on issues). This is insufficient for an agent to understand behavioral implications.

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 a single, short sentence that efficiently conveys the core action without extraneous words. It is well front-loaded.

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

Completeness2/5

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

Given the deletion action and absence of annotations, the description lacks important context such as idempotency, error conditions, or whether deletion is reversible. Although an output schema exists (not shown), the description does not address the tool's overall completeness for an AI agent.

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% with detailed parameter descriptions, including fallback logic for project_id. The tool description adds no extra semantic meaning beyond what the schema already provides, so baseline 3 is appropriate.

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 clearly states the verb ('Delete') and resource ('project label'), and includes the API endpoint for additional clarity. Among sibling tools like gitlab_create_label and gitlab_update_label, the purpose 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 description does not provide explicit guidance on when to use this tool versus alternatives. There is no mention of appropriate contexts, prerequisites, or situations where this tool should be avoided. The usage is only implied by the action name.

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

gitlab_get_current_userA

Get current authenticated GitLab user (/user).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the tool call succeeded.
toolYesTool name.
dataNoCurrent authenticated GitLab user payload.
error_typeNoError type when ok=false.
messageNoError message when ok=false.

TDQS

A4.3/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It accurately describes a read-only operation with no side effects. While it doesn't mention authentication or error scenarios, the tool's simplicity and the presence of an output schema mitigate the need for extensive behavioral disclosure.

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?

The description is a single, concise sentence that is front-loaded with the verb and resource. No extraneous information is present.

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

Completeness5/5

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

Given the tool's simplicity (no parameters, output schema present), the description is complete. It tells the agent exactly what the tool does and references the API endpoint.

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

Parameters4/5

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

There are no parameters, and schema description coverage is 100%. The description adds no parameter information, but none is needed. Baseline 4 is appropriate.

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 clearly states the tool's purpose with a specific verb ('Get') and resource ('current authenticated GitLab user'), and includes the API endpoint for clarity. It is easily distinguishable from sibling tools which focus on issues, merge requests, etc.

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

Usage Guidelines3/5

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

The description implies usage when needing the current user's information, but does not provide explicit guidance on when to use this tool versus alternatives. No when-not-to-use or context is given.

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

gitlab_get_fileB

Get repository file by GitLab REST API /repository/files/:file_path.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idNoGitLab project ID. Omit this field unless the user explicitly provided a value. When omitted, the current runtime config value is used (WORKFLOW_CODE_PROJECT_ID overrides the built-in default when configured). If the runtime config is still unset, the tool returns a missing-parameter error. Do not infer or auto-generate this value.
file_pathNoRepository file path.
refNoBranch/tag/SHA to read. Optional; when omitted GitLab HEAD is used.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the tool call succeeded.
toolYesTool name.
dataNoGitLab file payload with decoded content.
error_typeNoError type when ok=false.
messageNoError message when ok=false.

TDQS

B3.1/5.0
Behavior3/5

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

With no annotations provided, the description carries the burden. 'Get' implies a read operation, but it does not explicitly state idempotency, safety (read-only), error handling, or authentication needs. Adequate but not thorough.

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?

A single sentence, no redundancy or fluff. However, it is overly brief and could expand on usage or behavior without harming conciseness.

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

Completeness2/5

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

Given the tool's simplicity and presence of an output schema (which explains return values), the description is still too minimal. It lacks context about runtime config for project_id, branch fallback behavior, and what constitutes a successful response.

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?

Input schema covers 100% of parameters (project_id, file_path, ref). The description adds the API endpoint context but does not enhance parameter meaning beyond the schema descriptions. 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?

Description clearly states verb 'Get' and resource 'repository file', along with the API endpoint. This is specific, but does not explicitly distinguish from sibling tools like gitlab_upload_project_file, which also deals with files.

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?

No guidance on when to use this tool versus alternatives (e.g., gitlab_commit_files for writing, or other read tools). No conditions or exclusions are mentioned.

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

gitlab_get_issueB

Get one issue by project_id + issue_iid.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idNoGitLab project ID. Omit this field unless the user explicitly provided a value. When omitted, the current runtime config value is used (WORKFLOW_ISSUE_PROJECT_ID overrides the built-in default when configured). If the runtime config is still unset, the tool returns a missing-parameter error. Do not infer or auto-generate this value.
issue_iidNoIssue IID (internal ID).

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the tool call succeeded.
toolYesTool name.
dataNoGitLab issue payload.
error_typeNoError type when ok=false.
messageNoError message when ok=false.

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations provided, the description should disclose behavioral traits. It only says 'Get one issue' without mentioning idempotency, read-only nature, or any side effects. The output schema exists but the description adds no behavioral context.

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?

The description is a single sentence with no unnecessary words. It is appropriately sized and front-loaded.

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?

Given the output schema exists, the description does not need to explain return values. However, it omits details like the possibility of a missing-parameter error or the runtime config behavior for project_id, which are only in the schema. It is adequate but 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%, so the schema already describes both parameters well. The description repeats 'by project_id + issue_iid' but adds no new meaning beyond the schema, earning a baseline of 3.

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 clearly states the verb 'Get' and the resource 'issue' with the required identifiers (project_id and issue_iid). This distinguishes it from siblings like gitlab_create_issue or gitlab_get_issue_notes.

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 description does not provide any guidance on when to use this tool versus alternatives, such as when to use gitlab_get_issue_notes instead. No explicit context or exclusions are given.

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

gitlab_get_issue_imagesA

Extract image references from issue description/notes. When include_base64=true, download each image, return base64 metadata, and attach MCP image content blocks so the model can inspect the image itself.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idNoGitLab project ID. Omit this field unless the user explicitly provided a value. When omitted, the current runtime config value is used (WORKFLOW_ISSUE_PROJECT_ID overrides the built-in default when configured). If the runtime config is still unset, the tool returns a missing-parameter error. Do not infer or auto-generate this value.
issue_iidNoIssue IID.
include_notesNoWhether to extract images from issue notes as well.
include_base64NoWhether to download every extracted image and include base64.
max_imagesNoMaximum number of image references to return.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the tool call succeeded.
toolYesTool name.
dataNoParsed issue image references with optional base64 payloads.
error_typeNoError type when ok=false.
messageNoError message when ok=false.

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It explains that include_base64 triggers downloading images, returning base64, and attaching MCP content blocks. However, it does not disclose potential side effects like network timeouts or permission requirements, which would push it to a 5.

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?

The description consists of two concise sentences. It front-loads the core purpose and then adds a conditional behavior. No redundant words or tangential details.

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?

Given 5 parameters, an output schema, and reasonable complexity, the description covers the main functionality. However, it lacks details like default values for max_images or the format of image references, which would make it more complete. The presence of an output schema partially compensates.

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 context for include_base64 but does not elaborate on other parameters beyond what the schema says. The schema descriptions are already quite detailed (e.g., project_id usage rules), so the description adds minimal extra value.

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 clearly states the tool extracts image references from issue description/notes, with a specific verb-noun combination. It distinguishes from sibling tools like gitlab_get_issue, which retrieves issue fields, and gitlab_get_issue_notes, which gets notes. The mention of include_base64 behavior further clarifies the scope.

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?

No guidance is given on when to use this tool versus alternatives. For example, it does not indicate that this tool is for extracting images versus getting the full issue or notes. A user would have to infer usage from the description and sibling names.

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

gitlab_get_issue_notesB

Get issue notes/comments by project_id + issue_iid.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idNoGitLab project ID. Omit this field unless the user explicitly provided a value. When omitted, the current runtime config value is used (WORKFLOW_ISSUE_PROJECT_ID overrides the built-in default when configured). If the runtime config is still unset, the tool returns a missing-parameter error. Do not infer or auto-generate this value.
issue_iidNoIssue IID (internal ID).
sortNoSort order.
order_byNoField used for ordering.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the tool call succeeded.
toolYesTool name.
dataNoGitLab issue notes list.
error_typeNoError type when ok=false.
messageNoError message when ok=false.

TDQS

B3.3/5.0
Behavior2/5

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

No annotations provided. The description only states 'Get' indicating a read operation, but lacks details on authentication, rate limits, pagination, or potential side effects. Minimal behavioral disclosure.

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?

Single sentence, front-loaded with the core purpose. No redundant words, efficient.

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?

Output schema exists, covering return values. However, the description omits behavioral context such as default sorting, the optionality of project_id (runtime config fallback), and error conditions. Adequate but not fully comprehensive.

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 schema already documents all parameters. The description reiterates the two key parameters (project_id, issue_iid) but adds no additional meaning beyond what the schema provides.

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 clearly states the tool retrieves issue notes/comments using project_id and issue_iid. It distinguishes from siblings like gitlab_get_issue (issue details) and gitlab_add_issue_comment (add comment).

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?

No guidance on when to use this tool versus alternatives. It does not mention when to prefer get_issue_notes over get_issue or add_issue_comment.

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

gitlab_get_merge_requestB

Get merge request detail (/projects/:id/merge_requests/:mr_iid).

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idNoGitLab project ID. Omit this field unless the user explicitly provided a value. When omitted, the current runtime config value is used (WORKFLOW_CODE_PROJECT_ID overrides the built-in default when configured). If the runtime config is still unset, the tool returns a missing-parameter error. Do not infer or auto-generate this value.
mr_iidNoMerge request IID.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the tool call succeeded.
toolYesTool name.
dataNoMerge request detail payload.
error_typeNoError type when ok=false.
messageNoError message when ok=false.

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, and the description does not disclose any behavioral traits such as authentication requirements, rate limits, or whether all fields are returned. The minimal description fails to add value beyond the verb.

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 a single concise sentence that front-loads the verb and resource. It earns its place but could be slightly expanded for clarity without becoming wordy.

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?

Given the output schema exists and parameters are well-documented, the description is minimally adequate. However, it omits error conditions or any hints about the response structure, which would be helpful for a complete understanding.

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%, so the schema already documents both parameters. The description includes the API path which indirectly shows parameter roles, but it adds no additional semantic meaning beyond the schema.

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 clearly states 'Get merge request detail' with the exact API path, differentiating it from sibling tools like 'gitlab_get_mr_changes' and 'gitlab_get_mr_notes' which handle related but distinct resources.

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

Usage Guidelines3/5

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

No explicit guidance on when to use this tool versus alternatives like 'gitlab_get_mr_changes' or 'gitlab_get_mr_notes'. Usage is implied by the resource name, but no exclusions or conditions are provided.

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

gitlab_get_mr_changesB

Get merge request changes/diff metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idNoGitLab project ID. Omit this field unless the user explicitly provided a value. When omitted, the current runtime config value is used (WORKFLOW_CODE_PROJECT_ID overrides the built-in default when configured). If the runtime config is still unset, the tool returns a missing-parameter error. Do not infer or auto-generate this value.
mr_iidNoMerge request IID.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the tool call succeeded.
toolYesTool name.
dataNoGitLab merge request changes payload.
error_typeNoError type when ok=false.
messageNoError message when ok=false.

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits. It fails to mention the tool is read-only, the effect of invalid parameters, or any rate limits.

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?

Single sentence with no wasted words. It is appropriately sized and front-loaded.

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?

The tool is simple with 2 parameters and has an output schema, so the description need not explain return values. However, it lacks context like required permissions or typical use cases, leaving the agent underinformed.

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%, so baseline is 3. The description does not add information about parameters beyond what the schema provides.

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 clearly states the tool retrieves merge request changes/diff metadata using the verb 'get' and specific resource. It distinguishes from sibling tools like gitlab_get_merge_request (which gets MR details) and gitlab_get_mr_notes.

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?

No guidance on when to use this tool versus alternatives like gitlab_get_merge_request. No exclusions or prerequisites mentioned.

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

gitlab_get_mr_notesC

Get merge request notes/comments (/projects/:id/merge_requests/:mr_iid/notes).

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idNoGitLab project ID. Omit this field unless the user explicitly provided a value. When omitted, the current runtime config value is used (WORKFLOW_CODE_PROJECT_ID overrides the built-in default when configured). If the runtime config is still unset, the tool returns a missing-parameter error. Do not infer or auto-generate this value.
mr_iidNoMerge request IID.
sortNoSort order.
order_byNoField used for ordering.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the tool call succeeded.
toolYesTool name.
dataNoMerge request notes list payload.
error_typeNoError type when ok=false.
messageNoError message when ok=false.

TDQS

C2.9/5.0
Behavior2/5

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

Without annotations, the description carries full burden for behavioral disclosure. It only states a read operation (get notes), but does not disclose pagination, rate limits, authentication needs, error modes, or response structure. The description is minimal and leaves important behavioral traits unspecified.

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 a single sentence that is concise and includes the endpoint path for clarity. It is front-loaded and contains no extraneous information. However, it could be slightly more structured to improve readability.

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?

Given the tool has 4 parameters and an output schema, the description is minimal. It does not reference the output schema or explain what the returned notes contain. It lacks information about filtering, sorting, or potential edge cases, making it adequate but not complete.

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%, so the baseline is 3. The description adds no additional meaning beyond what the input schema already provides for each parameter. It does not elaborate on parameter values or usage tips.

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?

The description clearly states the tool retrieves merge request notes/comments and includes the API endpoint path. It is specific about the resource and action, but does not explicitly differentiate from sibling tools like gitlab_get_mr_changes or gitlab_create_mr_note.

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?

No guidance is provided on when to use this tool versus alternatives. There is no mention of when not to use it, prerequisites, or recommendations for sibling tools that might be more appropriate in certain scenarios.

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

gitlab_list_labelsB

List labels of a GitLab project (/projects/:id/labels).

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idNoGitLab project ID. Omit this field unless the user explicitly provided a value. When omitted, the tool tries the current runtime config defaults from WORKFLOW_ISSUE_PROJECT_ID or WORKFLOW_CODE_PROJECT_ID. If both are unset, or both are set to different values, the tool returns a missing-parameter error and you must pass project_id explicitly. Do not infer or auto-generate this value.
searchNoSearch text for label name/description.
pageNoPage number.
per_pageNoItems per page.
with_countsNoWhether to include issue counts.
include_ancestor_groupsNoWhether to include ancestor group labels.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the tool call succeeded.
toolYesTool name.
dataNoLabel list payload for the target project.
error_typeNoError type when ok=false.
messageNoError message when ok=false.

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits. It only mentions the endpoint and does not describe pagination, rate limits, or whether the operation is read-only (though implied).

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 a single, concise sentence that states the purpose without fluff. However, it could be slightly more informative without losing brevity.

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?

Given the tool has 6 parameters and an output schema is present, the description could explain pagination behavior or search functionality. The existing description is adequate but not complete.

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%, so baseline is 3. The description adds no parameter-specific information beyond the schema's own descriptions.

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 clearly states the verb 'List' and the resource 'labels of a GitLab project', with the endpoint path. This distinguishes it from sibling tools like gitlab_create_label (create) and gitlab_delete_label (delete).

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?

No guidance on when to use this tool versus alternatives such as gitlab_create_label or gitlab_update_label. The description only states the action, leaving the agent to infer usage context.

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

gitlab_unapprove_mrB

Remove approval from merge request.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idNoGitLab project ID. Omit this field unless the user explicitly provided a value. When omitted, the current runtime config value is used (WORKFLOW_CODE_PROJECT_ID overrides the built-in default when configured). If the runtime config is still unset, the tool returns a missing-parameter error. Do not infer or auto-generate this value.
mr_iidNoMerge request IID.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the tool call succeeded.
toolYesTool name.
dataNoGitLab merge request unapproval payload.
error_typeNoError type when ok=false.
messageNoError message when ok=false.

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided. The description only states the action without disclosing side effects, error states (e.g., if no approval exists), or permission requirements. Minimal transparency.

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 a single, concise sentence that gets straight to the point. No unnecessary words, though it could benefit from slightly more detail.

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?

Given the simple nature of the action and the presence of output schema, the description is adequate but lacks details on preconditions (e.g., must be approved first) and possible outcomes.

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% with detailed parameter descriptions. The tool description adds no additional meaning beyond the schema, so baseline score of 3 is appropriate.

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 'Remove approval from merge request' uses a specific verb and resource, clearly indicating the action. It distinguishes from sibling 'gitlab_approve_mr' which adds approval.

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

Usage Guidelines3/5

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

No explicit guidance on when to use this tool vs alternatives. The sibling 'gitlab_approve_mr' is present, but conditions like needing prior approval or error states are not mentioned.

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

gitlab_update_labelB

Update a project label (/projects/:id/labels).

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idNoGitLab project ID. Omit this field unless the user explicitly provided a value. When omitted, the tool tries the current runtime config defaults from WORKFLOW_ISSUE_PROJECT_ID or WORKFLOW_CODE_PROJECT_ID. If both are unset, or both are set to different values, the tool returns a missing-parameter error and you must pass project_id explicitly. Do not infer or auto-generate this value.
nameNoExisting label name.
new_nameNoNew label name.
colorNoNew color, e.g. #00AAFF.
descriptionNoNew label description.
priorityNoNew label priority.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the tool call succeeded.
toolYesTool name.
dataNoUpdated label payload.
error_typeNoError type when ok=false.
messageNoError message when ok=false.

TDQS

B3.2/5.0
Behavior2/5

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

No annotations provided, and the description does not disclose mutation behavior, required fields for identification, or error handling; it only states the action.

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?

Extremely concise single sentence, but could marginally include usage conditions without sacrificing brevity.

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?

Given the simple update operation and presence of output schema, the description covers basic purpose but lacks context like prerequisites or field dependencies.

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% with good descriptions for each parameter; the tool description adds no additional meaning, warranting baseline score.

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 clearly states 'Update a project label' with the endpoint, distinguishing it from sibling tools like create, delete, and list.

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?

No explicit guidance on when to use this tool versus alternatives; the description only restates the name without context for selection.

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

gitlab_upload_project_fileB

Upload binary file to project markdown uploads and return markdown/url metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idNoGitLab project ID. Omit this field unless the user explicitly provided a value. When omitted, the tool tries the current runtime config defaults from WORKFLOW_ISSUE_PROJECT_ID or WORKFLOW_CODE_PROJECT_ID. If both are unset, or both are set to different values, the tool returns a missing-parameter error and you must pass project_id explicitly. Do not infer or auto-generate this value.
filenameNoOriginal file name.
content_base64NoFile content encoded in base64.
content_typeNoOptional MIME type, e.g. image/png.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the tool call succeeded.
toolYesTool name.
dataNoProject markdown upload payload.
error_typeNoError type when ok=false.
messageNoError message when ok=false.

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It does not disclose side effects (e.g., file modification, permissions needed, rate limits, or error conditions). The return metadata is implied but not detailed; output schema partially covers return format but behavioral aspects are missing.

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 a single concise sentence that communicates the core purpose. It is efficient with no redundant words, though additional structure (e.g., bullet points for output) could be beneficial.

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

Completeness2/5

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

For a tool with 4 parameters and an output schema, the description lacks context about when to use it, behavioral expectations, and error handling. It is minimal and leaves gaps for the agent to infer.

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%, with detailed descriptions for each parameter (especially project_id). The description does not add extra semantics beyond the schema; baseline 3 applies.

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 clearly states the action (upload binary file), target (project markdown uploads), and what is returned (markdown/url metadata). It distinguishes from siblings like gitlab_get_file or gitlab_commit_files which handle different operations.

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?

No guidance on when to use this tool versus alternatives. It does not mention prerequisites, when not to use it, or suggest other tools for different purposes. The description only states functionality without context.

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

workflow_issue_log_appendA

Use when only local issue log markdown should be appended. This tool does not create MR or commit.

ParametersJSON Schema
NameRequiredDescriptionDefault
issue_titleYesIssue title.
issue_iidYesIssue IID.
issue_web_urlYesIssue web URL.
branch_nameYesCode branch name.
summaryYesShort issue summary.
statusYesStatus text.
issue_project_idNoIssue project ID. Omit this field unless the user explicitly provided a value. When omitted, the current runtime config value is used (WORKFLOW_ISSUE_PROJECT_ID overrides the built-in default when configured). If the runtime config is still unset, the tool returns a missing-parameter error. Do not infer or auto-generate this value.
issue_project_pathNoIssue project path. Omit this field unless the user explicitly provided a value. When omitted, the current runtime config value is used (WORKFLOW_ISSUE_PROJECT_PATH overrides the built-in default when configured). If the runtime config is still unset, the tool returns a missing-parameter error. Do not infer or auto-generate this value.
code_project_idNoCode project ID. Omit this field unless the user explicitly provided a value. When omitted, the current runtime config value is used (WORKFLOW_CODE_PROJECT_ID overrides the built-in default when configured). If the runtime config is still unset, the tool returns a missing-parameter error. Do not infer or auto-generate this value.
code_project_pathNoCode project path. Omit this field unless the user explicitly provided a value. When omitted, the current runtime config value is used (WORKFLOW_CODE_PROJECT_PATH overrides the built-in default when configured). If the runtime config is still unset, the tool returns a missing-parameter error. Do not infer or auto-generate this value.
repo_pathYesLocal repository path used as the base for resolving log_path.
log_pathNoIssue log path. Omit this field unless the user explicitly provided a value. When omitted, the current runtime config value is used (WORKFLOW_ISSUE_LOG_PATH overrides the built-in default when configured). If the runtime config is still unset, the tool returns a missing-parameter error. Do not infer or auto-generate this value.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the tool call succeeded.
toolYesTool name.
dataNoIssue log append result.
error_typeNoError type when ok=false.
messageNoError message when ok=false.

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the full behavioral disclosure. It only states the action and a negative constraint, but lacks details on side effects, error conditions, permissions, or output behavior. With 12 parameters, more context is needed.

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 very brief (two sentences) and front-loads the purpose. No extraneous content. However, given the tool's complexity (12 parameters), it could potentially include more useful information without being wasteful.

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

Completeness2/5

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

Despite the existence of an output schema, the description does not mention return values or behavior details. With 12 parameters, no annotations, and only two sentences of description, the tool is not fully specified for an agent to use reliably.

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 schema already describes all parameters. The tool description adds no additional parameter information beyond the schema. Some parameters have helpful notes in the schema itself, but the description does not contribute to their semantics.

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 clearly states the action ('append') and the resource ('local issue log markdown'), and distinguishes from siblings by explicitly noting it does not create MR or commit. This is specific and unambiguous.

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 says 'Use when only local issue log markdown should be appended,' which indicates the primary use case. It also says what the tool does not do (create MR or commit), implying alternative tools. However, it does not explicitly mention sibling tools or when to use them.

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

workflow_issue_to_deliveryA

Use when an existing issue_iid should be delivered end-to-end: branch, commit, MR, issue comment, local sync, and issue log. Before composing commit_actions, first call workflow_prepare_delivery_workspace and use its preparation_key here. Then inspect the issue text and any screenshots. If the issue may contain image references, call gitlab_get_issue_images(project_id, issue_iid, include_base64=true) first and review the returned image blocks. Do not call this twice for the same issue or same user request. If the issue and MR may already exist, inspect GitLab first before retrying.

ParametersJSON Schema
NameRequiredDescriptionDefault
preparation_keyYesRequired key returned by workflow_prepare_delivery_workspace. Delivery is rejected if the prepared base branch is no longer current.
delivery_methodNoDelivery implementation mode. Omit this field unless the user explicitly provided a value. When omitted, the current runtime config value is used (WORKFLOW_DELIVERY_METHOD overrides the built-in default when configured). If the runtime config is still unset, the tool returns a missing-parameter error. Do not infer or auto-generate this value.
issue_project_idNoIssue project ID. Omit this field unless the user explicitly provided a value. When omitted, the current runtime config value is used (WORKFLOW_ISSUE_PROJECT_ID overrides the built-in default when configured). If the runtime config is still unset, the tool returns a missing-parameter error. Do not infer or auto-generate this value.
issue_project_pathNoIssue project path. Omit this field unless the user explicitly provided a value. When omitted, the current runtime config value is used (WORKFLOW_ISSUE_PROJECT_PATH overrides the built-in default when configured). If the runtime config is still unset, the tool returns a missing-parameter error. Do not infer or auto-generate this value.
issue_iidYesIssue IID.
issue_images_reviewedNoSet to true only after you have inspected issue images with gitlab_get_issue_images(..., include_base64=true). Required when the target issue contains screenshots or image references.
code_project_idNoCode project ID. Omit this field unless the user explicitly provided a value. When omitted, the current runtime config value is used (WORKFLOW_CODE_PROJECT_ID overrides the built-in default when configured). If the runtime config is still unset, the tool returns a missing-parameter error. Do not infer or auto-generate this value.
code_project_pathNoCode project path. Omit this field unless the user explicitly provided a value. When omitted, the current runtime config value is used (WORKFLOW_CODE_PROJECT_PATH overrides the built-in default when configured). If the runtime config is still unset, the tool returns a missing-parameter error. Do not infer or auto-generate this value.
target_branchNoMR target branch. Omit this field unless the user explicitly provided a value. When omitted, the current runtime config value is used (WORKFLOW_TARGET_BRANCH overrides the built-in default when configured). If the runtime config is still unset, the tool returns a missing-parameter error. Do not infer or auto-generate this value.
branch_nameNoOptional branch name override.
english_slugNoOptional English slug used when generating branch name.
work_typeNoOptional git/conventional work type override like feat, fix, docs, refactor, hotfix, feature.
summaryNoOptional summary used for branch/commit/MR title.
commit_messageNoOptional commit message.
commit_actionsNoCommit actions list. Required when delivery_method=remote_api.
change_summaryYesChange summary used in MR description and issue log.
test_planYesTest/acceptance plan used in MR description.
labelNoOptional MR label. Omit this field unless the user explicitly provided a value. When omitted, the current runtime config value is used (WORKFLOW_LABEL overrides the built-in default when configured). If the runtime config is still unset, the tool returns a missing-parameter error. Do not infer or auto-generate this value.
assignee_usernameNoOptional assignee username for MR. Omit this field unless the user explicitly provided a value. When omitted, the current runtime config value is used (WORKFLOW_ASSIGNEE_USERNAME overrides the built-in default when configured). If the runtime config is still unset, the tool returns a missing-parameter error. Do not infer or auto-generate this value.
checkout_local_branchNoWhether to fetch/pull and switch local repo to target branch. Omit this field unless the user explicitly provided a value. When omitted, the current runtime config value is used (WORKFLOW_CHECKOUT_LOCAL_BRANCH overrides the built-in default when configured). If the runtime config is still unset, the tool returns a missing-parameter error. Do not infer or auto-generate this value.
issue_comment_bodyNoDirect issue comment body.
implementation_summaryNoImplementation summary for generated issue comment.
acceptance_stepsNoAcceptance steps for generated issue comment.
update_logNoWhether to update local issue log. Omit this field unless the user explicitly provided a value. When omitted, the current runtime config value is used (WORKFLOW_UPDATE_ISSUE_LOG overrides the built-in default when configured). If the runtime config is still unset, the tool returns a missing-parameter error. Do not infer or auto-generate this value.
log_pathNoIssue log path. Omit this field unless the user explicitly provided a value. When omitted, the current runtime config value is used (WORKFLOW_ISSUE_LOG_PATH overrides the built-in default when configured). If the runtime config is still unset, the tool returns a missing-parameter error. Do not infer or auto-generate this value. This field matters only when update_log=true.
log_statusNoIssue log status text.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the tool call succeeded.
toolYesTool name.
dataNoIssue to MR full-chain workflow result.
error_typeNoError type when ok=false.
messageNoError message when ok=false.

TDQS

A5/5.0
Behavior5/5

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

With no annotations provided, the description fully discloses the tool's behavioral scope: it creates a branch, commits, MR, issue comment, performs local sync, and updates the issue log. It warns about the preparation_key rejection if base branch is outdated. No contradictions; the tool's actions are clearly described.

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?

The description is a single well-structured paragraph that front-loads the primary purpose. Every sentence adds value: prerequisites, image inspection, idempotency warning, and parameter usage. No redundant or missing information.

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

Completeness5/5

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

Given the tool's complexity (26 parameters, 4 required) and the presence of an output schema, the description covers the full workflow: prerequisite call, image review, parameter usage rules, and warnings. The agent has all necessary context to invoke the tool correctly.

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

Parameters5/5

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

Schema coverage is 100%, and the description adds significant context beyond the schema. For example, it explains when to omit fields (if not explicitly provided by user), that runtime config overrides apply, and for 'issue_images_reviewed' it specifies the prerequisite action. The commit_actions parameter description ties it to delivery_method.

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 explicitly states the tool's purpose: delivering an issue end-to-end (branch, commit, MR, issue comment, local sync, issue log). It uses a specific verb 'delivered' and resource 'issue_iid', clearly distinguishing it from sibling tools like gitlab_create_merge_request or workflow_requirement_to_delivery.

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

Usage Guidelines5/5

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

The description provides explicit guidance on when to use the tool (for existing issue_iid), prerequisites (call workflow_prepare_delivery_workspace first), when to inspect images (if issue may contain image references), and prohibitions ('Do not call this twice for the same issue or same user request'). It also advises checking GitLab first if issue/MR may already exist.

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

workflow_prepare_delivery_workspaceA

Use before delivery workflows. Pass the explicit local repo_path for the target project. This tool verifies a clean local repo, refreshes the latest base branch, and returns a preparation_key that workflow_issue_to_delivery/workflow_requirement_to_delivery must provide. When delivery_method=local_git, it also creates and checks out the local working branch where code changes should be made.

ParametersJSON Schema
NameRequiredDescriptionDefault
repo_pathYesLocal repository path.
delivery_methodNoDelivery implementation mode. Omit this field unless the user explicitly provided a value. When omitted, the current runtime config value is used (WORKFLOW_DELIVERY_METHOD overrides the built-in default when configured). If the runtime config is still unset, the tool returns a missing-parameter error. Do not infer or auto-generate this value.
remote_nameNoGit remote name. Omit this field unless the user explicitly provided a value. When omitted, the current runtime config value is used (WORKFLOW_LOCAL_REMOTE_NAME overrides the built-in default when configured). If the runtime config is still unset, the tool returns a missing-parameter error. Do not infer or auto-generate this value.
base_branchNoBase branch to refresh before code generation. Omit this field unless the user explicitly provided a value. When omitted, the current runtime config value is used (WORKFLOW_BASE_BRANCH overrides the built-in default when configured). If the runtime config is still unset, the tool returns a missing-parameter error. Do not infer or auto-generate this value.
branch_nameNoOptional branch name override. Required for local_git when no summary/requirement_text is provided.
english_slugNoOptional English slug used when generating a local working branch.
work_typeNoOptional git/conventional work type override when generating a local working branch.
summaryNoOptional summary used to help generate a local working branch.
requirement_textNoOptional requirement text used to help generate a local working branch.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the tool call succeeded.
toolYesTool name.
dataNoPrepared local workspace state used to generate delivery commit_actions.
error_typeNoError type when ok=false.
messageNoError message when ok=false.

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries full burden. It discloses core behaviors: verification of clean repo, base branch refresh, preparation_key return, and optional branch creation. Missing details include error handling (e.g., what if repo is not clean) and auth/permissions. The output schema likely covers return structure, but description doesn't reference it.

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?

Three sentences, each serving a distinct purpose: set context, state main function and key output, add conditional behavior. No redundant or extraneous information. Efficiency and clarity are excellent.

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?

Given the presence of an output schema (references preparation_key) and sibling tools, the description covers essential aspects. It could mention error scenarios or prerequisites (e.g., git installed), but overall it provides enough context for an agent to understand when and how to invoke the tool.

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% with detailed parameter descriptions (e.g., omitting fields unless user provided). The description adds minimal value by contextualizing repo_path as explicit and delivery_method behavior, but it largely summarizes what's already in the schema. Baseline 3 is appropriate.

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 clearly states the tool's purpose: preparation before delivery workflows. It specifies actions (verify clean repo, refresh base branch, return preparation_key) and distinguishes itself from sibling tools by naming the exact tools that require its output (workflow_issue_to_delivery/workflow_requirement_to_delivery). The verb 'prepare' and resource 'delivery workspace' are specific.

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 explicitly says 'Use before delivery workflows' and names the sibling tools that require the preparation_key, providing clear context for when to use. It also notes the conditional behavior for local_git. However, it does not explicitly state when not to use or mention alternatives beyond the siblings.

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

workflow_requirement_to_deliveryA

Use when requirement text should run the full chain once: create issue, then continue in the same workflow through branch, commit, MR, issue comment, local sync, and issue log. Before composing commit_actions, first call workflow_prepare_delivery_workspace and use its preparation_key here. Do not combine this with workflow_requirement_to_issue or workflow_issue_to_delivery for the same user request.

ParametersJSON Schema
NameRequiredDescriptionDefault
requirement_textYesRaw user requirement text.
preparation_keyYesRequired key returned by workflow_prepare_delivery_workspace. Delivery is rejected if the prepared base branch is no longer current.
delivery_methodNoDelivery implementation mode. Omit this field unless the user explicitly provided a value. When omitted, the current runtime config value is used (WORKFLOW_DELIVERY_METHOD overrides the built-in default when configured). If the runtime config is still unset, the tool returns a missing-parameter error. Do not infer or auto-generate this value.
source_textNoOptional extra background text for the default issue template.
issue_templateNoOptional full issue markdown template. Supported built-in variables include {{summary}}, {{requirement_text}}, {{source_text}}, {{expected_change}}, {{issue_project_id}}, {{code_project_id}}, {{issue_project_path}}, {{code_project_path}}, {{branch_name}}, {{work_type}}, {{label}}.
template_variablesNoOptional custom variables map merged into issue_template rendering.
english_slugNoOptional branch slug.
work_typeNoOptional git/conventional work type override like feat, fix, docs, refactor, hotfix, feature.
summaryNoOptional short summary used for issue and MR title.
issue_project_idNoIssue project ID. Omit this field unless the user explicitly provided a value. When omitted, the current runtime config value is used (WORKFLOW_ISSUE_PROJECT_ID overrides the built-in default when configured). If the runtime config is still unset, the tool returns a missing-parameter error. Do not infer or auto-generate this value.
issue_project_pathNoIssue project path. Omit this field unless the user explicitly provided a value. When omitted, the current runtime config value is used (WORKFLOW_ISSUE_PROJECT_PATH overrides the built-in default when configured). If the runtime config is still unset, the tool returns a missing-parameter error. Do not infer or auto-generate this value.
code_project_idNoCode project ID. Omit this field unless the user explicitly provided a value. When omitted, the current runtime config value is used (WORKFLOW_CODE_PROJECT_ID overrides the built-in default when configured). If the runtime config is still unset, the tool returns a missing-parameter error. Do not infer or auto-generate this value.
code_project_pathNoCode project path. Omit this field unless the user explicitly provided a value. When omitted, the current runtime config value is used (WORKFLOW_CODE_PROJECT_PATH overrides the built-in default when configured). If the runtime config is still unset, the tool returns a missing-parameter error. Do not infer or auto-generate this value.
labelsNoIssue labels list.
labelNoIssue title prefix and fallback issue label. Omit this field unless the user explicitly provided a value. When omitted, the current runtime config value is used (WORKFLOW_LABEL overrides the built-in default when configured). If the runtime config is still unset, the tool returns a missing-parameter error. Do not infer or auto-generate this value.
auto_create_labelsNoWhether to auto-create missing labels.
assignee_usernameNoSingle assignee username. Omit this field unless the user explicitly provided a value. When omitted, the current runtime config value is used (WORKFLOW_ASSIGNEE_USERNAME overrides the built-in default when configured). If the runtime config is still unset, the tool returns a missing-parameter error. Do not infer or auto-generate this value.
assignee_usernamesNoAssignee usernames list.
assign_to_current_user_if_missingNoWhether to assign issue to current user when no assignee is provided.
target_branchNoMR target branch. Omit this field unless the user explicitly provided a value. When omitted, the current runtime config value is used (WORKFLOW_TARGET_BRANCH overrides the built-in default when configured). If the runtime config is still unset, the tool returns a missing-parameter error. Do not infer or auto-generate this value.
branch_nameNoOptional branch name override.
commit_messageNoOptional commit message.
commit_actionsNoCommit actions list. Required when delivery_method=remote_api.
change_summaryYesChange summary used in MR/log.
test_planYesTest/acceptance plan used in MR description and issue comment.
checkout_local_branchNoWhether to sync and switch local repo to created branch. Omit this field unless the user explicitly provided a value. When omitted, the current runtime config value is used (WORKFLOW_CHECKOUT_LOCAL_BRANCH overrides the built-in default when configured). If the runtime config is still unset, the tool returns a missing-parameter error. Do not infer or auto-generate this value.
issue_comment_bodyNoDirect issue comment body.
implementation_summaryNoImplementation summary for generated issue comment.
acceptance_stepsNoAcceptance steps for generated issue comment.
update_logNoWhether to update local issue log. Omit this field unless the user explicitly provided a value. When omitted, the current runtime config value is used (WORKFLOW_UPDATE_ISSUE_LOG overrides the built-in default when configured). If the runtime config is still unset, the tool returns a missing-parameter error. Do not infer or auto-generate this value.
log_pathNoIssue log path. Omit this field unless the user explicitly provided a value. When omitted, the current runtime config value is used (WORKFLOW_ISSUE_LOG_PATH overrides the built-in default when configured). If the runtime config is still unset, the tool returns a missing-parameter error. Do not infer or auto-generate this value. This field matters only when update_log=true.
log_statusNoIssue log status text.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the tool call succeeded.
toolYesTool name.
dataNoRequirement to delivery full workflow result.
error_typeNoError type when ok=false.
messageNoError message when ok=false.

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description must disclose behavioral traits. It describes the high-level workflow steps but lacks explicit mention of potential side effects (e.g., creating issues, branches, commits, MRs, modifying repository) or required permissions. It does not mention error conditions or what happens on failure.

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?

The description is concise (three sentences) and front-loaded with purpose. It efficiently conveys when to use, prerequisite, and exclusions without extraneous content.

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?

Given the tool's complexity (32 parameters, nested objects, 4 required), the description provides a clear high-level workflow. An output schema exists, so return value details are likely covered there. However, the description could mention expected outcomes (e.g., created MR URL or issue ID) to be more complete.

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% (all parameters have descriptions). The description adds minimal semantic value beyond the schema; it reinforces the prerequisite role of preparation_key but does not enhance understanding of other parameters. Baseline of 3 is appropriate.

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 clearly states the tool's purpose: to run the full chain from requirement to delivery (create issue, branch, commit, MR, comment, sync, log). It distinguishes from sibling tools like workflow_requirement_to_issue and workflow_issue_to_delivery by specifying the complete workflow.

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

Usage Guidelines5/5

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

The description explicitly states when to use this tool (full chain), what prerequisite to fulfill first (call workflow_prepare_delivery_workspace), and which tools not to combine with. This provides clear guidance for agent selection.

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

workflow_requirement_to_issueA

Use when requirement text should only create a GitLab issue and stop there. Do not combine this with workflow_requirement_to_delivery for the same user request. If the issue is already created, continue with workflow_issue_to_delivery instead of calling this tool again.

ParametersJSON Schema
NameRequiredDescriptionDefault
requirement_textYesRaw user requirement text.
source_textNoOptional extra background text for the default issue template.
issue_templateNoOptional full issue markdown template. Supported built-in variables include {{summary}}, {{requirement_text}}, {{source_text}}, {{expected_change}}, {{issue_project_id}}, {{code_project_id}}, {{issue_project_path}}, {{code_project_path}}, {{branch_name}}, {{work_type}}, {{label}}.
template_variablesNoOptional custom variables map merged into issue_template rendering.
english_slugNoOptional branch slug.
work_typeNoOptional git/conventional work type override like feat, fix, docs, refactor, hotfix, feature.
summaryNoOptional issue summary.
issue_project_idNoIssue project ID. Omit this field unless the user explicitly provided a value. When omitted, the current runtime config value is used (WORKFLOW_ISSUE_PROJECT_ID overrides the built-in default when configured). If the runtime config is still unset, the tool returns a missing-parameter error. Do not infer or auto-generate this value.
issue_project_pathNoIssue project path for issue template variables. Omit this field unless the user explicitly provided a value. When omitted, the current runtime config value is used (WORKFLOW_ISSUE_PROJECT_PATH overrides the built-in default when configured). If the runtime config is still unset, the tool returns a missing-parameter error. Do not infer or auto-generate this value.
code_project_idNoOptional code project ID used in issue template variables. Omit this field unless the user explicitly provided a value. When omitted, the current runtime config value is used (WORKFLOW_CODE_PROJECT_ID overrides the built-in default when configured). If the runtime config is still unset, the tool returns a missing-parameter error. Do not infer or auto-generate this value.
code_project_pathNoCode project path for template/render context. Omit this field unless the user explicitly provided a value. When omitted, the current runtime config value is used (WORKFLOW_CODE_PROJECT_PATH overrides the built-in default when configured). If the runtime config is still unset, the tool returns a missing-parameter error. Do not infer or auto-generate this value.
labelsNoIssue labels list.
labelNoIssue title prefix label and fallback issue label. Omit this field unless the user explicitly provided a value. When omitted, the current runtime config value is used (WORKFLOW_LABEL overrides the built-in default when configured). If the runtime config is still unset, the tool returns a missing-parameter error. Do not infer or auto-generate this value.
auto_create_labelsNoWhen true, create missing labels in issue project automatically.
assignee_usernameNoSingle assignee username. Omit this field unless the user explicitly provided a value. When omitted, the current runtime config value is used (WORKFLOW_ASSIGNEE_USERNAME overrides the built-in default when configured). If the runtime config is still unset, the tool returns a missing-parameter error. Do not infer or auto-generate this value.
assignee_usernamesNoAssignee usernames list.
assign_to_current_user_if_missingNoWhen true, assign issue to current token user if no assignee is provided.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the tool call succeeded.
toolYesTool name.
dataNoAnalyze requirement and create issue workflow result.
error_typeNoError type when ok=false.
messageNoError message when ok=false.

TDQS

A4/5.0
Behavior2/5

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

No annotations provided; description lacks behavioral details like destructive actions, authentication, or failure modes. Only usage guidance is given.

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?

Extremely concise (3 sentences) with clear, actionable information; no redundancy.

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?

With output schema present and detailed input schema, the description provides sufficient usage context; however, it omits behavioral details.

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 baseline 3; description adds no extra parameter meaning beyond schema.

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 clearly states the tool creates a GitLab issue from requirement text and stops, distinguishing it from sibling workflow_requirement_to_delivery.

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

Usage Guidelines5/5

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

Explicitly provides when-to-use, when-not-to-combine, and what to do if issue already exists (use workflow_issue_to_delivery).

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

workflow_review_mr_post_commentA

Two-step MR review workflow. Step 1: call with prepare_review_context=true to fetch review_prompt + diffs for LLM review. Step 2: let the LLM inspect that context, then call again with review_comment_body to post the final review comment (optional approval).

ParametersJSON Schema
NameRequiredDescriptionDefault
code_project_idNoCode project ID. Omit this field unless the user explicitly provided a value. When omitted, the current runtime config value is used (WORKFLOW_CODE_PROJECT_ID overrides the built-in default when configured). If the runtime config is still unset, the tool returns a missing-parameter error. Do not infer or auto-generate this value.
mr_iidYesMerge request IID.
review_comment_bodyNoStep 2 of 2. Final review comment markdown body, generated after the LLM inspects prepared_review.review_prompt + prepared_review.diffs from the prepare step.
prepare_review_contextNoStep 1 of 2. When true, do not post a comment. Return concise review prompt text plus MR diff context for an external LLM. After the LLM generates review_comment_body, call this tool again without prepare_review_context to post the comment.
review_summaryNoShort review summary used when review_comment_body is missing.
include_changesNoWhether to include changed files list in generated review comment.
include_existing_notesNoWhether to load existing MR notes and include count in generated comment.
approveNoWhether to approve MR after posting review comment.
shaNoOptional expected MR HEAD SHA when approve=true.
max_changed_filesNoMaximum number of changed files included in prepared review context. Default 20.
max_diff_chars_per_fileNoMaximum diff characters returned per file in prepared review context. Default 12000.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the tool call succeeded.
toolYesTool name.
dataNoReview merge request and create comment workflow result.
error_typeNoError type when ok=false.
messageNoError message when ok=false.

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries full burden. It discloses the two-step behavior, returns of step 1 (review_prompt + diffs), and the posting of comments with optional approval. It lacks details on idempotency, error handling (e.g., both step parameters provided), auth requirements, or rate limits, leaving some behavioral gaps.

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 well-structured sentences that front-load the critical two-step workflow information. No redundant or verbose content. Every sentence serves a purpose.

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?

Given the complexity (11 parameters, two-step workflow), the description covers the core workflow and key behaviors. An output schema exists (not shown) but the description explains step 1's return. Lacks details on error conditions (e.g., invalid parameter combinations) and edge cases, but overall sufficient for an AI agent to use the tool correctly.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description adds value by explaining the workflow roles of key parameters (prepare_review_context and review_comment_body as steps) and the approval parameter, which goes beyond the schema's individual field descriptions. This clarifies how parameters interact in the two-step process.

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 clearly defines the tool as a two-step MR review workflow, with specific verbs ('fetch review_prompt + diffs' and 'post the final review comment') and distinct resources. It differentiates from siblings like gitlab_approve_mr and gitlab_create_mr_note by combining review generation and comment posting in a workflow.

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 explicitly outlines the two-step process (Step 1 with prepare_review_context, Step 2 with review_comment_body) and mentions optional approval. However, it does not explicitly state when to avoid this tool (e.g., for simple approval, use gitlab_approve_mr), though this is implied by sibling tools.

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

workflow_sync_local_branchA

Use when local repository should fetch/pull and switch to a target branch. Local git operations only.

ParametersJSON Schema
NameRequiredDescriptionDefault
branch_nameYesTarget branch to checkout locally.
repo_pathYesLocal repository path.
remote_nameNoGit remote name. Omit this field unless the user explicitly provided a value. When omitted, the current runtime config value is used (WORKFLOW_LOCAL_REMOTE_NAME overrides the built-in default when configured). If the runtime config is still unset, the tool returns a missing-parameter error. Do not infer or auto-generate this value.
base_branchNoOptional base branch to pull before checkout. Omit this field unless the user explicitly provided a value. When omitted, the current runtime config value is used (WORKFLOW_BASE_BRANCH overrides the built-in default when configured). If the runtime config is still unset, the tool returns a missing-parameter error. Do not infer or auto-generate this value.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the tool call succeeded.
toolYesTool name.
dataNoLocal repository sync and branch checkout result.
error_typeNoError type when ok=false.
messageNoError message when ok=false.

TDQS

A4/5.0
Behavior2/5

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

No annotations are provided, so the description must convey behavioral traits. It states 'Local git operations only' and implies fetch/pull and branch switching, but lacks details on side effects like conflicts, uncommitted changes, or branch creation fallback.

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?

The description is a single, efficient sentence that clearly communicates purpose and scope without unnecessary words.

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?

An output schema exists, so return values are covered. The description adequately explains the main action and scope, but could mention prerequisites like repository existence or error scenarios for a more complete picture.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description adds significant meaning for 'remote_name' and 'base_branch' by advising to omit unless user-provided and explaining runtime config fallback, which is valuable beyond the schema.

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 clearly states the tool synchronizes a local repository by fetching/pulling and switching to a target branch. The phrase 'Local git operations only' distinguishes it from sibling tools that operate on remote GitLab resources.

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 explicitly says 'Use when local repository should fetch/pull and switch to a target branch.' It provides clear context for when to use the tool and implies exclusion for remote operations via 'Local git operations only.'

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

TDQS

B3.3/5.0
Disambiguation4/5

Most tools have distinct purposes targeting specific GitLab resources (issues, MRs, labels, files). A few potential overlaps exist (e.g., gitlab_add_issue_comment vs gitlab_create_mr_note) but they apply to different resources, and descriptions clarify the difference.

Naming Consistency3/5

Tools use two prefixes ('gitlab_' and 'workflow_'), creating a split. Within each prefix, naming follows verb_noun pattern, but verbs are inconsistent (e.g., 'add' vs 'create', 'get' vs 'list'). Overall pattern is present but not uniform.

Tool Count4/5

28 tools cover both low-level GitLab API actions and high-level workflow orchestrations, which is appropriate for a full-featured workflow server. While on the higher side, each tool serves a distinct role.

Completeness3/5

Core operations for issues, MRs, labels, and files are covered, but notable gaps exist: no tool to list issues, no update issue tool, and no delete for issues/MRs. The high-level workflows partially compensate but leave some CRUD incomplete.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    C
    quality
    D
    maintenance
    An MCP server that enables communication with GitLab repositories, allowing interaction with GitLab's API to manage projects, issues, and repositories through natural language.
    45
    123,899
    1
    MIT
  • A
    license
    C
    quality
    A
    maintenance
    A production-ready MCP server for GitLab enabling AI assistants to read and manage GitLab projects, merge requests, issues, pipelines, wikis, releases, and more through a unified interface.
    100
    302
    10
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    An MCP server that enables AI agents to perform automated code reviews on GitLab merge requests, including fetching details, reading diffs, posting inline comments, managing labels, and approving or unapproving MRs.
    302
    MIT

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/chntif/mcp-gitlab-workflow'

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