Skip to main content
Glama

GitLab MCP Server

MCP Server for the GitLab API, enabling project management, file operations, and more. Forked from https://github.com/modelcontextprotocol

Table of Contents

Related MCP server: GitLab MCP Server

Installation

npx @therealchristhomas/gitlab-mcp-server

Global Installation

npm install -g @therealchristhomas/gitlab-mcp-server
gitlab-mcp

Features

  • Automatic Branch Creation: When creating/updating files or pushing changes, branches are automatically created if they don't exist

  • Comprehensive Error Handling: Clear error messages for common issues

  • Git History Preservation: Operations maintain proper Git history without force pushing

  • Batch Operations: Support for both single-file and multi-file operations

  • Project Workflow Management: Label and milestone management for better project organization

  • Repository Management: Search, create, and fork GitLab projects

  • File Operations: Create, update, and retrieve file contents

  • Branch Management: Create branches and manage repository structure

  • Issue Management: Create, list, update, search, and comment on issues

  • Merge Request Management: List, update, merge, and comment on merge requests

  • Label Management: Create, update, and delete project labels

  • Project Milestones: Create, update, and delete project-level milestones

  • Group Milestones: Create, update, and delete group-level milestones that span multiple projects

Group Milestones vs Project Milestones

This server supports both project milestones and group milestones:

Project Milestones

  • Scoped to a single project

  • Use tools: list_milestones, create_milestone, update_milestone, delete_milestone

  • Example: Track features for my-webapp project

Group Milestones

  • Span multiple projects within a group

  • Use tools: list_group_milestones, create_group_milestone, update_group_milestone, delete_group_milestone

  • Support advanced filtering with include_ancestors, include_descendants

  • Example: Track a release across my-webapp, my-api, and my-admin

Group Milestone Examples

List Group Milestones

{
  "group_id": "my-organization",
  "state": "active",
  "include_descendants": true
}

Create Group Milestone

{
  "group_id": "my-organization",
  "title": "Q1 2025 Release",
  "description": "Major feature release including new tools and performance improvements",
  "due_date": "2025-03-31",
  "start_date": "2025-01-01"
}
{
  "group_id": "my-organization/core",
  "search": "release",
  "include_ancestors": true,
  "updated_after": "2024-01-01T00:00:00Z"
}

Based on the GitLab Group Milestones API, group milestones are ideal for coordinating releases and features across multiple projects in your organization.

Practical Workflow: Finding Groups and Creating Milestones

Here's a typical workflow for working with group milestones:

1. Search for Groups

First, find the group you want to work with:

{
  "search": "my-organization",
  "owned": true
}

2. List Existing Group Milestones

Check what milestones already exist:

{
  "group_id": "my-organization",
  "state": "active"
}

3. Create a Group Milestone

Create a milestone that spans multiple projects:

{
  "group_id": "my-organization",
  "title": "Q1 2025 Release",
  "description": "Cross-project release including webapp, API, and admin features",
  "due_date": "2025-03-31"
}

This workflow is especially useful for large organizations with multiple related projects under the same group.

Tools

File Operations

  1. create_or_update_file

    • Create or update a single file in a project

    • Inputs:

      • project_id (string): Project ID or URL-encoded path

      • file_path (string): Path where to create/update the file

      • content (string): Content of the file

      • commit_message (string): Commit message

      • branch (string): Branch to create/update the file in

      • previous_path (optional string): Path of the file to move/rename

    • Returns: File content and commit details

  2. push_files

    • Push multiple files in a single commit

    • Inputs:

      • project_id (string): Project ID or URL-encoded path

      • branch (string): Branch to push to

      • files (array): Files to push, each with file_path and content

      • commit_message (string): Commit message

    • Returns: Updated branch reference

  3. get_file_contents

    • Get contents of a file or directory

    • Inputs:

      • project_id (string): Project ID or URL-encoded path

      • file_path (string): Path to file/directory

      • ref (optional string): Branch/tag/commit to get contents from

    • Returns: File/directory contents

Repository Management

  1. search_repositories

    • Search for GitLab projects

    • Inputs:

      • search (string): Search query

      • page (optional number): Page number for pagination

      • per_page (optional number): Results per page (default 20)

    • Returns: Project search results

  2. create_repository

    • Create a new GitLab project

    • Inputs:

      • name (string): Project name

      • description (optional string): Project description

      • visibility (optional string): 'private', 'internal', or 'public'

      • initialize_with_readme (optional boolean): Initialize with README

    • Returns: Created project details

  3. fork_repository

    • Fork a project

    • Inputs:

      • project_id (string): Project ID or URL-encoded path

      • namespace (optional string): Namespace to fork to

    • Returns: Forked project details

  4. create_branch

    • Create a new branch

    • Inputs:

      • project_id (string): Project ID or URL-encoded path

      • branch (string): Name for new branch

      • ref (optional string): Source branch/commit for new branch

    • Returns: Created branch reference

Group Operations

  1. search_groups

    • Search for GitLab groups

    • Inputs:

      • search (string): Search query for groups

      • page (optional number): Page number for pagination

      • per_page (optional number): Results per page (default 20)

      • owned (optional boolean): Limit by groups owned by the current user

      • min_access_level (optional number): Minimum access level (10=Guest, 20=Reporter, 30=Developer, 40=Maintainer, 50=Owner)

    • Returns: Group search results

Issue Management

  1. create_issue

    • Create a new issue

    • Inputs:

      • project_id (string): Project ID or URL-encoded path

      • title (string): Issue title

      • description (optional string): Issue description

      • assignee_ids (optional number[]): User IDs to assign

      • labels (optional string[]): Labels to add

      • milestone_id (optional number): Milestone ID

    • Returns: Created issue details

  2. list_issues

    • List all issues in a GitLab project

    • Inputs:

      • project_id (string): Project ID or URL-encoded path

      • state (optional string): 'opened', 'closed', or 'all'

      • labels (optional string): Comma-separated list of label names

      • milestone (optional string): Milestone title

      • assignee_id (optional number): User ID of assignee

      • author_id (optional number): User ID of author

      • search (optional string): Search against title and description

      • created_after (optional string): Return issues created after date (ISO 8601)

      • created_before (optional string): Return issues created before date (ISO 8601)

      • updated_after (optional string): Return issues updated after date (ISO 8601)

      • updated_before (optional string): Return issues updated before date (ISO 8601)

      • sort (optional string): Sort issues by various criteria

      • order_by (optional string): 'asc' or 'desc'

      • page (optional number): Page number for pagination

      • per_page (optional number): Results per page (default 20)

      • with_labels_details (optional boolean): If true, returns more details for each label. Default is false.

    • Returns: Array of issue objects

  3. update_issue

    • Update an existing issue in a GitLab project

    • Inputs:

      • project_id (string): Project ID or URL-encoded path

      • issue_iid (number): Issue internal ID

      • title (optional string): New issue title

      • description (optional string): New issue description

      • state_event (optional string): 'close' or 'reopen'

      • labels (optional string[]): Array of label names

      • assignee_ids (optional number[]): Array of user IDs to assign

      • milestone_id (optional number): Milestone ID to assign

    • Returns: Updated issue details

  4. search_issues

    • Search for issues in a GitLab project

    • Inputs:

      • project_id (string): Project ID or URL-encoded path

      • search (string): Search term for title and description

      • state (optional string): 'opened', 'closed', or 'all'

      • labels (optional string): Comma-separated list of label names

      • page (optional number): Page number for pagination

      • per_page (optional number): Results per page (default 20)

    • Returns: Array of matching issue objects

  5. add_issue_comment

    • Add a comment to an issue in a GitLab project

    • Inputs:

      • project_id (string): Project ID or URL-encoded path

      • issue_iid (number): Issue internal ID

      • body (string): Content of the comment

    • Returns: Created comment details

Merge Request Management

  1. create_merge_request

  • Create a new merge request

  • Inputs:

    • project_id (string): Project ID or URL-encoded path

    • title (string): MR title

    • description (optional string): MR description

    • source_branch (string): Branch containing changes

    • target_branch (string): Branch to merge into

    • draft (optional boolean): Create as draft MR

    • allow_collaboration (optional boolean): Allow commits from upstream members

  • Returns: Created merge request details

  1. list_merge_requests

    • List all merge requests in a GitLab project

    • Inputs:

      • project_id (string): Project ID or URL-encoded path

      • state (optional string): 'opened', 'closed', 'locked', 'merged', or 'all'

      • target_branch (optional string): Filter by target branch

      • source_branch (optional string): Filter by source branch

      • labels (optional string): Comma-separated list of label names

      • milestone (optional string): Milestone title

      • assignee_id (optional number): User ID of assignee

      • author_id (optional number): User ID of author

      • search (optional string): Search against title and description

      • created_after (optional string): Return MRs created after date (ISO 8601)

      • created_before (optional string): Return MRs created before date (ISO 8601)

      • updated_after (optional string): Return MRs updated after date (ISO 8601)

      • updated_before (optional string): Return MRs updated before date (ISO 8601)

      • sort (optional string): Sort merge requests

      • order_by (optional string): 'asc' or 'desc'

      • page (optional number): Page number for pagination

      • per_page (optional number): Results per page (default 20)

    • Returns: Array of merge request objects

  2. update_merge_request

    • Update an existing merge request in a GitLab project

    • Inputs:

      • project_id (string): Project ID or URL-encoded path

      • merge_request_iid (number): Merge request internal ID

      • title (optional string): New merge request title

      • description (optional string): New merge request description

      • state_event (optional string): 'close' or 'reopen'

      • target_branch (optional string): New target branch

      • labels (optional string[]): Array of label names

      • assignee_ids (optional number[]): Array of user IDs to assign

      • milestone_id (optional number): Milestone ID to assign

      • remove_source_branch (optional boolean): Remove source branch when merged

    • Returns: Updated merge request details

  3. merge_merge_request

    • Merge a merge request in a GitLab project

    • Inputs:

      • project_id (string): Project ID or URL-encoded path

      • merge_request_iid (number): Merge request internal ID

      • merge_commit_message (optional string): Custom merge commit message

      • should_remove_source_branch (optional boolean): Remove source branch after merge

      • merge_when_pipeline_succeeds (optional boolean): Merge when pipeline succeeds

      • sha (optional string): SHA that must match the source branch HEAD

    • Returns: Merged merge request details

  4. add_merge_request_comment

    • Add a comment to a merge request in a GitLab project

    • Inputs:

      • project_id (string): Project ID or URL-encoded path

      • merge_request_iid (number): Merge request internal ID

      • body (string): Content of the comment

    • Returns: Created comment details

Label Management

  1. list_labels

    • List all labels in a project

    • Inputs:

      • project_id (string): Project ID or URL-encoded path

      • page (optional number): Page number for pagination

      • per_page (optional number): Results per page (default 20)

    • Returns: Array of label objects

  2. create_label

    • Create a new label

    • Inputs:

      • project_id (string): Project ID or URL-encoded path

      • name (string): Label name

      • color (string): Label color (hex code)

      • description (optional string): Label description

      • priority (optional number): Label priority

    • Returns: Created label details

  3. update_label

    • Update an existing label

    • Inputs:

      • project_id (string): Project ID or URL-encoded path

      • name (string): Current label name

      • new_name (optional string): New label name

      • color (optional string): New label color

      • description (optional string): New label description

      • priority (optional number): New label priority

    • Returns: Updated label details

  4. delete_label

    • Delete a label

    • Inputs:

      • project_id (string): Project ID or URL-encoded path

      • name (string): Label name to delete

    • Returns: Success confirmation

Milestone Management

  1. list_milestones

    • List all milestones in a project

    • Inputs:

      • project_id (string): Project ID or URL-encoded path

      • state (optional string): 'active' or 'closed'

      • page (optional number): Page number for pagination

      • per_page (optional number): Results per page (default 20)

    • Returns: Array of milestone objects

  2. create_milestone

    • Create a new milestone

    • Inputs:

      • project_id (string): Project ID or URL-encoded path

      • title (string): Milestone title

      • description (optional string): Milestone description

      • due_date (optional string): Due date (YYYY-MM-DD)

      • start_date (optional string): Start date (YYYY-MM-DD)

    • Returns: Created milestone details

  3. update_milestone

    • Update an existing milestone

    • Inputs:

      • project_id (string): Project ID or URL-encoded path

      • milestone_id (number): Milestone ID

      • title (optional string): New title

      • description (optional string): New description

      • due_date (optional string): New due date

      • start_date (optional string): New start date

      • state_event (optional string): 'close' or 'activate'

    • Returns: Updated milestone details

  4. delete_milestone

    • Delete a milestone

    • Inputs:

      • project_id (string): Project ID or URL-encoded path

      • milestone_id (number): Milestone ID to delete

    • Returns: Success confirmation

  5. list_group_milestones

    • List all milestones in a GitLab group

    • Inputs:

      • group_id (string): Group ID or URL-encoded path

      • state (optional string): 'active' or 'closed'

      • title (optional string): Filter by milestone title (case-sensitive)

      • search (optional string): Search in title or description

      • search_title (optional string): Search in title only

      • include_ancestors (optional boolean): Include parent group milestones

      • include_descendants (optional boolean): Include subgroup milestones

      • updated_before (optional string): Filter by update date (ISO 8601)

      • updated_after (optional string): Filter by update date (ISO 8601)

      • containing_date (optional string): Milestones containing given date

      • start_date (optional string): Filter where due_date >= start_date

      • end_date (optional string): Filter where start_date <= end_date

      • page (optional number): Page number for pagination

      • per_page (optional number): Results per page (default 20)

    • Returns: Array of group milestone objects

  6. create_group_milestone

    • Create a new milestone in a GitLab group

    • Inputs:

      • group_id (string): Group ID or URL-encoded path

      • title (string): Milestone title

      • description (optional string): Milestone description

      • due_date (optional string): Due date (YYYY-MM-DD)

      • start_date (optional string): Start date (YYYY-MM-DD)

    • Returns: Created group milestone details

  7. update_group_milestone

    • Update an existing milestone in a GitLab group

    • Inputs:

      • group_id (string): Group ID or URL-encoded path

      • milestone_id (number): Milestone ID

      • title (optional string): New title

      • description (optional string): New description

      • due_date (optional string): New due date

      • start_date (optional string): New start date

      • state_event (optional string): 'close' or 'activate'

    • Returns: Updated group milestone details

  8. delete_group_milestone

    • Delete a milestone from a GitLab group

    • Inputs:

      • group_id (string): Group ID or URL-encoded path

      • milestone_id (number): Milestone ID to delete

    • Returns: Success confirmation

Setup

Personal Access Token

Create a GitLab Personal Access Token with appropriate permissions:

  • Go to User Settings > Access Tokens in GitLab

  • Select the required scopes:

    • api for full API access

    • read_api for read-only access

    • read_repository and write_repository for repository operations

  • Create the token and save it securely

Usage with Claude Desktop

Add the following to your claude_desktop_config.json:

{
  "mcpServers": {
    "gitlab": {
      "command": "npx",
      "args": ["-y", "@therealchristhomas/gitlab-mcp-server"],
      "env": {
        "GITLAB_PERSONAL_ACCESS_TOKEN": "<YOUR_TOKEN>",
        "GITLAB_API_URL": "https://gitlab.com/api/v4"
      }
    }
  }
}

Usage with Cursor/VSCode/Winsurf

Add the following to your MCP configuration:

{
  "mcpServers": {
    "gitlab": {
      "command": "npx",
      "args": ["-y", "@therealchristhomas/gitlab-mcp-server"],
      "env": {
        "GITLAB_PERSONAL_ACCESS_TOKEN": "<YOUR_TOKEN>",
        "GITLAB_API_URL": "https://gitlab.com/api/v4"
      }
    }
  }
}

Note: Replace <YOUR_TOKEN> with your actual GitLab Personal Access Token. Also, replace with your Gitlab API URL if you're not using gitlab.com

Environment Variables

  • GITLAB_PERSONAL_ACCESS_TOKEN: Your GitLab personal access token (required)

  • GITLAB_API_URL: Base URL for GitLab API (optional, defaults to https://gitlab.com/api/v4)

For self-hosted GitLab instances, update the GITLAB_API_URL to point to your instance:

"GITLAB_API_URL": "https://your-gitlab-instance.com/api/v4"

Development

Build

npm run build

Development Mode

npm run dev

Watch Mode

npm run watch

License

This MCP server is licensed under the MIT License. This means you are free to use, modify, and distribute the software, subject to the terms and conditions of the MIT License. For more details, please see the LICENSE file in the project repository.

Available Tools

30 tools
add_issue_commentC

Add a comment to an issue in a GitLab project

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID or URL-encoded path
issue_iidYesIssue internal ID
bodyYesContent of the comment

TDQS

C2.9/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 burden for behavioral disclosure. It states it's an 'Add' operation (implying mutation) but doesn't mention required permissions, whether it's idempotent, rate limits, or what happens on success/failure. This leaves significant gaps for a mutation tool.

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 gets straight to the point with zero wasted words. It's appropriately sized for a straightforward tool and front-loads the essential information.

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 mutation tool with no annotations and no output schema, the description is inadequate. It doesn't explain what happens after adding the comment (e.g., returns comment ID, success confirmation), error conditions, or behavioral constraints. The 100% schema coverage helps but doesn't compensate for missing behavioral 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 schema already documents all three parameters. The description doesn't add any additional meaning about parameters beyond what's in the schema. Baseline 3 is appropriate when the schema does the heavy lifting.

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 action ('Add a comment') and target resource ('to an issue in a GitLab project'), making the purpose immediately understandable. It doesn't explicitly differentiate from sibling tools like 'add_merge_request_comment', but the specificity of 'issue' vs 'merge request' provides implicit distinction.

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 like 'update_issue' or 'add_merge_request_comment'. The description states what it does but offers no context about appropriate scenarios, prerequisites, or exclusions.

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

add_merge_request_commentC

Add a comment to a merge request in a GitLab project

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID or URL-encoded path
merge_request_iidYesMerge request internal ID
bodyYesContent of the comment

TDQS

C2.9/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 burden for behavioral disclosure. While 'Add a comment' implies a write operation, it doesn't specify authentication requirements, rate limits, whether comments are editable/deletable, or what happens on success/failure. For a mutation tool with zero annotation coverage, this leaves significant 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?

The description is a single, efficient sentence that communicates the core purpose without unnecessary words. It's appropriately sized for a straightforward tool and front-loads the essential information.

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 mutation tool with no annotations and no output schema, the description is inadequate. It doesn't explain what happens after adding a comment (success response, error conditions), permissions needed, or how this operation fits into GitLab's workflow. The combination of missing behavioral context and output information creates significant 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 description coverage is 100%, so the schema already documents all three parameters thoroughly. The description doesn't add any parameter-specific information beyond what's in the schema, such as format examples for project_id or character limits for body. The baseline 3 is appropriate when the schema does the heavy lifting.

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 action ('Add a comment') and target resource ('to a merge request in a GitLab project'), providing a specific verb+resource combination. However, it doesn't explicitly differentiate from its closest sibling 'add_issue_comment' beyond the different resource type, missing an opportunity for clearer distinction.

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 like 'add_issue_comment' for commenting on issues, or 'update_merge_request' for modifying the merge request itself. There's no mention of prerequisites, permissions required, or contextual constraints for commenting on merge requests.

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

create_branchC

Create a new branch in a GitLab project

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID or URL-encoded path
branchYesName for the new branch
refNoSource branch/commit for new branch

TDQS

C2.9/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 of behavioral disclosure. It states 'Create a new branch,' implying a write/mutation operation, but doesn't disclose any behavioral traits such as permissions required, whether it's idempotent, error handling for duplicate branches, or rate limits. This leaves significant gaps for an agent to understand how to use it effectively.

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 front-loads the core purpose without any wasted words. It's appropriately sized for a straightforward tool, making it easy for an agent to parse quickly.

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 complexity (a mutation tool with no annotations and no output schema), the description is incomplete. It lacks information on behavioral aspects like permissions, error cases, or what the tool returns. While the schema covers parameters well, the overall context for safe and effective use is insufficient, especially for a creation operation.

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 description adds no parameter semantics beyond what the input schema provides. With 100% schema description coverage, the schema already documents all three parameters (project_id, branch, ref) clearly. The baseline score of 3 is appropriate as the schema does the heavy lifting, but the description doesn't compensate with additional context like examples or constraints.

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 action ('Create a new branch') and resource ('in a GitLab project'), making the purpose immediately understandable. It distinguishes this from sibling tools like create_issue or create_merge_request by specifying it's about branches. However, it doesn't explicitly mention what distinguishes it from fork_repository or push_files, which also involve branch-like 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?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing an existing project), when not to use it (e.g., if a branch already exists), or direct alternatives among siblings like fork_repository for creating branches in a different context. Usage is implied but not explicitly stated.

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

create_group_milestoneC

Create a new milestone in a GitLab group

ParametersJSON Schema
NameRequiredDescriptionDefault
group_idYesGroup ID or URL-encoded path
titleYesThe title of the milestone
descriptionNoThe description of the milestone
due_dateNoThe due date of the milestone (YYYY-MM-DD)
start_dateNoThe start date of the milestone (YYYY-MM-DD)

TDQS

C2.9/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 burden but only states the creation action without disclosing behavioral traits like required permissions, whether it's idempotent, error handling, or what happens on success/failure. 'Create' implies mutation but lacks details on side effects or system impact.

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 with zero wasted words. It's front-loaded with the core action and resource, making it immediately understandable without unnecessary elaboration.

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 mutation tool with no annotations and no output schema, the description is inadequate. It doesn't explain what a 'milestone' represents in GitLab, what happens after creation, or what the tool returns. Given the complexity of creating a resource in a version control system, more context is needed for an agent to use it effectively.

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%, providing clear documentation for all 5 parameters. The description adds no additional parameter semantics beyond implying 'group_id' targets a GitLab group, which is already evident from the schema. Baseline 3 is appropriate when schema does the heavy lifting.

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 action ('Create a new milestone') and target resource ('in a GitLab group'), which is specific and unambiguous. It distinguishes from sibling 'create_milestone' by specifying 'group' context, though it doesn't explicitly contrast them.

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 like 'create_milestone' (likely for project-level milestones) or 'update_group_milestone'. The description implies it's for group milestones but doesn't clarify prerequisites, exclusions, or comparative use cases.

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

create_issueC

Create a new issue in a GitLab project

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID or URL-encoded path
titleYesIssue title
descriptionNoIssue description
assignee_idsNoArray of user IDs to assign
labelsNoArray of label names
milestone_idNoMilestone ID to assign

TDQS

C2.9/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 burden for behavioral disclosure. It states the tool creates an issue but lacks critical details: required permissions (e.g., developer access), whether creation is idempotent, error handling (e.g., duplicate titles), or rate limits. The description covers basic intent but misses operational context needed for safe use.

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, direct sentence with zero wasted words. It front-loads the core purpose ('Create a new issue') and specifies the context ('in a GitLab project') efficiently. Every element earns its place without redundancy or ambiguity.

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 mutation tool with no annotations and no output schema, the description is insufficient. It doesn't explain what happens post-creation (e.g., returns issue ID or object), error conditions, or side effects. Given the complexity of creating an issue with multiple optional fields, more behavioral and output 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?

Schema description coverage is 100%, providing clear documentation for all 6 parameters. The description adds no parameter-specific information beyond what the schema already states (e.g., it doesn't clarify format examples or constraints). This meets the baseline score of 3 since the schema handles parameter semantics adequately.

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 action ('Create') and resource ('new issue in a GitLab project'), making the purpose immediately understandable. It doesn't explicitly differentiate from sibling tools like 'update_issue' or 'list_issues', but the verb 'Create' inherently distinguishes it from read/update 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?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing project access), contrast with 'update_issue' for modifications, or indicate when 'list_issues' might be more appropriate for retrieval. Usage context is entirely implied rather than stated.

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

create_labelC

Create a new label in a GitLab project

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes
nameYes
colorYes
descriptionNo
priorityNo

TDQS

C2.8/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 burden for behavioral disclosure. It states it's a creation tool (implying mutation) but doesn't cover permissions needed, side effects, error handling, or what happens on success/failure. This leaves significant gaps for a mutation operation.

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 with no wasted words. It's front-loaded with the core action and resource, making it easy to parse quickly.

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 mutation tool with 5 parameters, 0% schema coverage, no annotations, and no output schema, the description is severely incomplete. It lacks details on behavior, parameters, outputs, and usage context, making it insufficient for reliable tool invocation.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate but adds no parameter information. It doesn't explain what 'project_id', 'name', 'color', etc., mean or their formats (e.g., color as hex code). This is inadequate for 5 parameters with no schema descriptions.

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 action ('Create') and resource ('new label in a GitLab project'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'update_label' or 'delete_label' beyond the basic verb, which prevents a perfect score.

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 like 'update_label' or 'list_labels', nor does it mention prerequisites or context for label creation. It's a bare statement of function with no usage context.

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

create_merge_requestC

Create a new merge request in a GitLab project

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID or URL-encoded path
titleYesMerge request title
descriptionNoMerge request description
source_branchYesBranch containing changes
target_branchYesBranch to merge into
draftNoCreate as draft merge request
allow_collaborationNoAllow commits from upstream members

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. While 'Create' implies a write operation, it doesn't specify required permissions, whether the operation is idempotent, potential side effects (e.g., notifications sent), or error conditions. This leaves significant gaps in understanding how the tool behaves beyond basic creation.

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, clear sentence that efficiently communicates the core purpose without unnecessary words. It's front-loaded with the essential action and resource, making it easy to parse quickly.

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 creation tool with no annotations and no output schema, the description is insufficient. It doesn't explain what happens upon success (e.g., returns merge request ID), error handling, or important behavioral aspects like permissions or side effects. Given the complexity of creating a merge request in GitLab, more context is needed for effective use.

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 schema description coverage is 100%, so all parameters are documented in the schema. The description adds no additional parameter information beyond what's in the schema, such as explaining relationships between parameters (e.g., source_branch must exist) or providing examples. This meets the baseline for high schema coverage.

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 action ('Create a new merge request') and the resource ('in a GitLab project'), making the purpose immediately understandable. However, it doesn't differentiate this tool from sibling tools like 'update_merge_request' or 'merge_merge_request', which would require more specific context about when to use each.

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 like 'update_merge_request' or 'merge_merge_request'. It also doesn't mention prerequisites (e.g., needing appropriate permissions or existing branches) or contextual constraints, leaving the agent to 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.

create_milestoneC

Create a new milestone in a GitLab project

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes
titleYes
descriptionNo
due_dateNo
start_dateNo

TDQS

C2.8/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 burden for behavioral disclosure. It states this is a creation operation, implying mutation, but doesn't address permissions required, whether it's idempotent, error conditions, or what happens on success (e.g., returns milestone ID). For a mutation tool with zero annotation coverage, this 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.

Conciseness5/5

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

The description is a single, direct sentence with no wasted words. It's appropriately sized for a basic tool description and front-loads the essential information. Every word earns its place.

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 mutation tool with 5 parameters, 0% schema coverage, no annotations, and no output schema, the description is incomplete. It doesn't explain what the tool returns, error handling, or parameter details. Given the complexity and lack of structured data, more context is needed for effective use.

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

Parameters2/5

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

The description provides no information about parameters beyond what's implied by the tool name. With 5 parameters and 0% schema description coverage, the description doesn't compensate by explaining what 'project_id', 'title', 'description', 'due_date', or 'start_date' mean or how they should be formatted. This leaves significant gaps in understanding.

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 action ('Create') and resource ('new milestone in a GitLab project'), making the purpose immediately understandable. However, it doesn't distinguish this tool from its sibling 'create_group_milestone' or other creation tools like 'create_issue' or 'create_label', which would require more specific differentiation.

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 about when to use this tool versus alternatives. The description doesn't mention prerequisites (e.g., project access), when to choose this over 'create_group_milestone', or how it relates to other milestone tools like 'list_milestones' or 'update_milestone'. This leaves the agent without contextual direction.

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

create_or_update_fileC

Create or update a single file in a GitLab project

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID or URL-encoded path
file_pathYesPath where to create/update the file
contentYesContent of the file
commit_messageYesCommit message
branchYesBranch to create/update the file in
previous_pathNoPath of the file to move/rename

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the action ('create or update') but doesn't specify critical details like required authentication levels, whether it's idempotent, potential rate limits, or what happens on conflicts (e.g., if the file already exists). This leaves significant gaps for an agent to understand 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.

Conciseness5/5

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

The description is a single, clear sentence that directly states the tool's purpose without any fluff or redundant information. It's appropriately front-loaded and wastes no words.

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 mutation tool with no annotations and no output schema, the description is insufficient. It doesn't cover behavioral aspects like error conditions, response format, or side effects (e.g., creating commits). Given the complexity of file operations in GitLab, more context is needed for an agent to use this tool effectively.

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 thoroughly. The description adds no additional semantic context about parameters beyond what's in the schema (e.g., explaining how 'previous_path' relates to renaming). This meets the baseline for high schema coverage.

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 action ('create or update') and resource ('a single file in a GitLab project'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'push_files' or 'get_file_contents', which could handle similar file 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?

The description provides no guidance on when to use this tool versus alternatives like 'push_files' (which might handle multiple files) or 'get_file_contents' (for reading). There's no mention of prerequisites, such as needing appropriate permissions, or when to choose create vs. update scenarios.

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

create_repositoryC

Create a new GitLab project

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesRepository name
descriptionNoRepository description
visibilityNoRepository visibility level
initialize_with_readmeNoInitialize with README.md

TDQS

C2.9/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 burden for behavioral disclosure. It states the tool creates something, implying a mutation, but lacks details on permissions required, whether it's idempotent, error handling, or what happens on success (e.g., returns a project ID). This is a significant gap for a mutation tool with zero annotation coverage.

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 states the tool's purpose without unnecessary words. It's front-loaded and wastes no space, making it easy for an agent to parse quickly.

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 mutation tool with no annotations and no output schema, the description is incomplete. It doesn't address behavioral aspects like authentication needs, error conditions, or what the tool returns. Given the complexity of creating a repository and the lack of structured data, more context is needed for effective use.

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 fully documents all parameters. The description adds no parameter-specific information beyond what's in the schema (e.g., it doesn't explain default values or constraints). Baseline 3 is appropriate when the schema does the heavy lifting.

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 action ('Create') and resource ('new GitLab project'), making the purpose immediately understandable. It distinguishes from siblings like 'fork_repository' by specifying creation rather than forking. However, it doesn't explicitly differentiate from other creation tools like 'create_issue' or 'create_label', which keeps it from a perfect score.

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. It doesn't mention prerequisites (e.g., authentication, permissions), nor does it contrast with similar tools like 'fork_repository' for creating repositories from existing ones. 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.

delete_group_milestoneC

Delete a milestone from a GitLab group

ParametersJSON Schema
NameRequiredDescriptionDefault
group_idYesGroup ID or URL-encoded path
milestone_idYesThe ID of the group milestone

TDQS

C2.9/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 burden for behavioral disclosure. It states the destructive action ('Delete') but doesn't mention whether deletion is permanent/reversible, what happens to associated issues/merge requests, rate limits, authentication requirements, or error conditions. This is inadequate for a destructive operation.

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 communicates the core purpose without unnecessary words. It's appropriately front-loaded with the key action and resource.

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 destructive tool with no annotations and no output schema, the description is incomplete. It doesn't address critical context like permissions needed, side effects, confirmation requirements, or what the tool returns (success/failure indicators). The 100% schema coverage helps with parameters but doesn't compensate for missing behavioral information.

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 both parameters clearly documented in the schema. The description doesn't add any additional semantic context about parameters beyond what the schema provides (e.g., format examples, validation rules, or relationship between group_id and milestone_id).

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 action ('Delete') and resource ('a milestone from a GitLab group'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'delete_milestone' or 'delete_label', which would require specifying it's for group-level milestones specifically.

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. It doesn't mention prerequisites (e.g., needing admin permissions), when deletion is appropriate versus updating, or how it differs from 'delete_milestone' (which appears to be for project-level milestones based on sibling names).

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

delete_labelC

Delete a label from a GitLab project

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes
nameYes

TDQS

C2.9/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 of behavioral disclosure. It states the tool deletes a label, implying a destructive mutation, but does not cover critical aspects such as permissions required (e.g., project maintainer access), whether deletion is permanent or reversible, error conditions (e.g., if the label doesn't exist), or rate limits. This leaves significant gaps for safe and effective use.

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, direct sentence with no wasted words, making it highly concise and front-loaded. It efficiently communicates the core action without unnecessary elaboration.

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 destructive nature (implied by 'Delete'), lack of annotations, no output schema, and minimal parameter guidance, the description is incomplete. It fails to address key contextual elements like success/error responses, side effects, or integration with sibling tools (e.g., 'list_labels'), leaving the agent poorly equipped for reliable invocation.

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 description does not add any meaning beyond the input schema, which has 0% description coverage. It does not explain what 'project_id' or 'name' represent (e.g., project identifier format, label name constraints). However, with only 2 parameters and no schema descriptions, the baseline is 3 as the description does not compensate for the lack of schema details but also does not mislead.

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 action ('Delete') and resource ('a label from a GitLab project'), making the purpose unambiguous. However, it does not differentiate from sibling tools like 'delete_group_milestone' or 'delete_milestone' by specifying what type of label (e.g., issue label vs. other label types) or any scope limitations.

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. For example, it does not mention prerequisites (e.g., the label must exist), when not to use it (e.g., if the label is in use), or refer to sibling tools like 'list_labels' for checking existing labels or 'update_label' for modifications instead of deletion.

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

delete_milestoneC

Delete a milestone from a GitLab project

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes
milestone_idYes

TDQS

C2.9/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 burden but offers minimal behavioral insight. It states it's a deletion operation (implying destructive), but doesn't cover critical aspects like permissions required, irreversibility, effects on associated issues, or error handling (e.g., if milestone doesn't exist).

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, direct sentence with zero wasted words. It front-loads the core action and resource efficiently, making it easy to parse without unnecessary elaboration.

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 destructive tool with no annotations and no output schema, the description is inadequate. It misses essential context: no information on return values (e.g., success confirmation or error), side effects, or behavioral constraints, leaving significant gaps for safe agent invocation.

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 0%, so the description must compensate but adds no parameter details. It implies 'project_id' and 'milestone_id' are needed but doesn't explain their formats (e.g., numeric vs. string IDs) or sources. Baseline is 3 since schema covers parameters structurally, but semantics are lacking.

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 action ('Delete') and the resource ('a milestone from a GitLab project'), making the purpose immediately understandable. It distinguishes itself from siblings like 'delete_group_milestone' by specifying 'project' context, though it doesn't explicitly contrast with other deletion tools like 'delete_label'.

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. It doesn't mention prerequisites (e.g., needing existing milestones), exclusions (e.g., cannot delete active milestones), or comparisons with siblings like 'delete_group_milestone' for group-level deletions.

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

fork_repositoryC

Fork a GitLab project to your account or specified namespace

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID or URL-encoded path
namespaceNoNamespace to fork to (full path)

TDQS

C2.9/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 of behavioral disclosure. It states the action ('Fork') but doesn't mention permissions required, whether it's idempotent, rate limits, or what happens if the fork already exists. This leaves critical behavioral traits undocumented for a mutation operation.

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 with zero waste. It front-loads the key action and resource, making it easy to scan and understand quickly without unnecessary details.

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 mutation tool with no annotations and no output schema, the description is incomplete. It lacks information on permissions, error conditions, return values, and how it differs from similar operations. Given the complexity of forking in GitLab, more context is needed to guide effective use.

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 fully documents both parameters. The description adds minimal value by implying the 'namespace' parameter is optional (since it says 'or specified namespace'), but this is already clear from the schema's required fields. No additional semantics beyond the schema are provided.

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 action ('Fork') and resource ('a GitLab project'), specifying the target ('to your account or specified namespace'). It distinguishes from siblings like 'create_repository' by focusing on forking rather than creating from scratch. However, it doesn't explicitly differentiate from tools like 'push_files' or 'update_merge_request' in terms of Git 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?

The description provides no guidance on when to use this tool versus alternatives like 'create_repository' or other Git operations. It mentions the target namespace but doesn't specify prerequisites, such as needing access to the source project or when forking is appropriate versus cloning or creating new repositories.

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

get_file_contentsC

Get the contents of a file or directory from a GitLab project

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID or URL-encoded path
file_pathYesPath to the file or directory
refNoBranch/tag/commit to get contents from

TDQS

C2.9/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 of behavioral disclosure. It states the tool retrieves contents but doesn't specify whether it returns raw text, metadata, or directory structures, nor does it mention potential errors (e.g., if the file doesn't exist) or rate limits. This leaves significant gaps in understanding how the tool behaves beyond its basic purpose.

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 directly states the tool's purpose without any fluff or redundancy. It's front-loaded with the core action and resource, making it easy to parse quickly, which is ideal for conciseness in tool descriptions.

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 complexity of a file retrieval tool with no annotations and no output schema, the description is incomplete. It doesn't explain what the return values look like (e.g., file content format, error responses) or address behavioral aspects like authentication needs or limitations. This makes it inadequate for the agent to fully understand how to use the tool effectively.

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 three parameters (project_id, file_path, ref) with clear descriptions. The description adds no additional meaning beyond implying these parameters are used to locate the file, which aligns with the schema. This meets the baseline score of 3, as the schema handles parameter documentation adequately.

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 action ('Get the contents') and resource ('a file or directory from a GitLab project'), which is specific and unambiguous. However, it doesn't explicitly differentiate from sibling tools like 'push_files' or 'create_or_update_file', which involve file manipulation rather than retrieval, leaving some room for improvement in sibling distinction.

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. It doesn't mention prerequisites, such as needing read access to the project, or clarify scenarios like retrieving raw file content versus directory listings, which could help the agent choose appropriately among siblings like 'search_repositories' or other file-related tools.

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

list_group_milestonesC

List all milestones in a GitLab group

ParametersJSON Schema
NameRequiredDescriptionDefault
group_idYesGroup ID or URL-encoded path
stateNoReturn only active or closed milestones
titleNoReturn only milestones with the given title (case-sensitive)
searchNoReturn only milestones with title or description matching the string
search_titleNoReturn only milestones with title matching the string
include_ancestorsNoInclude milestones for all parent groups
include_descendantsNoInclude milestones for group and its descendants
updated_beforeNoReturn only milestones updated before the given datetime (ISO 8601)
updated_afterNoReturn only milestones updated after the given datetime (ISO 8601)
containing_dateNoReturn only milestones containing the given date
start_dateNoReturn only milestones where due_date >= start_date
end_dateNoReturn only milestones where start_date <= end_date
pageNoPage number for pagination (default: 1)
per_pageNoNumber of results per page (default: 20)

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states it's a list operation, implying read-only behavior, but lacks details on permissions, rate limits, pagination defaults, error handling, or output format. For a tool with 14 parameters and no annotation coverage, this leaves significant gaps in understanding its behavior.

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, clear sentence with zero wasted words. It's front-loaded with the core purpose and efficiently conveys the essential action and scope without unnecessary elaboration, making it easy to parse quickly.

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 complexity (14 parameters, no annotations, no output schema), the description is insufficient. It doesn't address behavioral aspects like pagination, permissions, or error handling, nor does it explain the return format. For a list operation with many filtering options, more context is needed to use it effectively beyond the schema.

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 schema description coverage is 100%, with all parameters well-documented in the schema itself. The description adds no parameter-specific information beyond implying a 'group_id' is needed. This meets the baseline of 3 since the schema does the heavy lifting, but the description doesn't enhance understanding of parameter usage or interactions.

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 verb ('List') and resource ('milestones in a GitLab group'), making the purpose unambiguous. It distinguishes from sibling tools like 'list_milestones' (likely project-level) by specifying 'group' scope, though it doesn't explicitly contrast with all siblings like 'search_groups' or 'list_issues'.

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. It doesn't mention sibling tools like 'list_milestones' (likely for projects) or 'search_groups', nor does it specify prerequisites such as needing group access or authentication. The description is purely functional without contextual advice.

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

list_issuesA

List issues in a GitLab project. By default fetches ALL issues automatically across all pages. Only specify 'page' parameter if you need a specific page for manual pagination.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID or URL-encoded path
stateNoFilter issues by state
labelsNoComma-separated list of label names
milestoneNoMilestone title
assignee_idNoUser ID of assignee
author_idNoUser ID of author
searchNoSearch against title and description
created_afterNoReturn issues created after date (ISO 8601)
created_beforeNoReturn issues created before date (ISO 8601)
updated_afterNoReturn issues updated after date (ISO 8601)
updated_beforeNoReturn issues updated before date (ISO 8601)
sortNoSort issues
order_byNoSort order
pageNoPage number for pagination. ONLY specify this if you need a specific page - by default ALL issues are fetched automatically
per_pageNoNumber of results per page (default: 20)
with_labels_detailsNoIf true, returns more details for each label. Default is false.

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It discloses key behavioral traits: automatic pagination across all pages by default, and the conditional use of the 'page' parameter. However, it doesn't mention rate limits, authentication requirements, or error handling, leaving some 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?

The description is front-loaded with the core purpose and key behavioral detail in just two sentences. Every word earns its place—no fluff or redundancy. It efficiently communicates essential information without unnecessary elaboration.

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 (16 parameters, no annotations, no output schema), the description is reasonably complete. It covers the main behavioral aspect (automatic pagination) but could better address authentication, rate limits, or error scenarios to fully prepare an agent for real-world use.

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 schema description coverage is 100%, so the schema already documents all 16 parameters thoroughly. The description adds minimal value beyond the schema by emphasizing the default pagination behavior for the 'page' parameter, but doesn't provide additional semantic context for other parameters.

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 resource ('issues in a GitLab project'), making the purpose specific. It distinguishes from sibling tools like 'search_issues' by emphasizing it fetches ALL issues automatically across pages, while search_issues likely performs text-based searches.

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 'page' parameter ('Only specify if you need a specific page for manual pagination') and contrasts with the default behavior of fetching all pages automatically. This gives clear context for parameter usage.

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

list_labelsC

List all labels in a GitLab project

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes
pageNo
per_pageNo

TDQS

C2.8/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 burden for behavioral disclosure. It states this is a list operation, implying it's read-only, but doesn't mention pagination behavior (despite page/per_page parameters), rate limits, authentication requirements, or what the return format looks like. This leaves significant gaps for a tool with pagination parameters.

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 gets straight to the point with zero wasted words. It's appropriately sized for a simple list operation and front-loads the essential information.

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 3 parameters (including pagination), no annotations, and no output schema, the description is inadequate. It doesn't explain the pagination behavior, return format, or how labels are structured. The agent would need to guess about important operational aspects despite the tool's relative simplicity.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate but provides no parameter information. It doesn't explain what project_id should be (numeric ID vs path), what page and per_page do, default values, or constraints. The description adds no meaning beyond what the bare schema provides.

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 action ('List all labels') and resource ('in a GitLab project'), making the purpose immediately understandable. However, it doesn't differentiate this tool from other list tools (like list_issues, list_merge_requests) beyond the resource type, which prevents a perfect score.

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 about when to use this tool versus alternatives. The description doesn't mention prerequisites, when this tool is appropriate versus other label-related tools (like create_label, update_label, delete_label), or any context about filtering or sorting options.

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

list_merge_requestsC

List all merge requests in a GitLab project

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID or URL-encoded path
stateNoFilter merge requests by state
target_branchNoFilter by target branch
source_branchNoFilter by source branch
labelsNoComma-separated list of label names
milestoneNoMilestone title
assignee_idNoUser ID of assignee
author_idNoUser ID of author
searchNoSearch against title and description
created_afterNoReturn MRs created after date (ISO 8601)
created_beforeNoReturn MRs created before date (ISO 8601)
updated_afterNoReturn MRs updated after date (ISO 8601)
updated_beforeNoReturn MRs updated before date (ISO 8601)
sortNoSort merge requests
order_byNoSort order
pageNoPage number for pagination (default: 1)
per_pageNoNumber of results per page (default: 20)

TDQS

C2.9/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 burden for behavioral disclosure. It states it's a list operation (implying read-only), but doesn't mention pagination behavior, rate limits, authentication requirements, or what the output format looks like. For a tool with 17 parameters, this leaves significant gaps in understanding how it behaves.

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 states exactly what the tool does without any wasted words. It's appropriately sized and front-loaded with the essential information.

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 17 parameters, no annotations, and no output schema, the description is insufficiently complete. It doesn't explain what the tool returns, how pagination works, authentication requirements, or error conditions. The agent would need to guess about important behavioral aspects despite the comprehensive parameter schema.

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, so all parameters are documented in the schema itself. The description adds no additional parameter information beyond what's in the schema. According to guidelines, when schema_description_coverage is high (>80%), the baseline is 3 even with no param info in the description.

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 verb ('List') and resource ('merge requests in a GitLab project'), making the purpose immediately understandable. It doesn't explicitly differentiate from siblings like 'list_issues' or 'search_issues', but the resource specificity is sufficient for basic clarity.

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 like 'search_issues' or 'list_issues', nor does it mention prerequisites or context for usage. It's a bare statement of function without any operational context.

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

list_milestonesC

List all milestones in a GitLab project

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes
stateNo
pageNo
per_pageNo

TDQS

C2.8/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 burden for behavioral disclosure but only states the basic action. It doesn't mention whether this is a read-only operation, how pagination works (despite 'page' and 'per_page' parameters), what authentication is required, rate limits, or what the return format looks like. This leaves significant gaps for a tool with 4 parameters.

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 gets straight to the point with zero wasted words. It's appropriately sized for a basic list operation and front-loads the essential information.

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, 0% schema description coverage, no annotations, and no output schema, the description is inadequate. It doesn't explain the tool's behavior, parameter meanings, return values, or differentiation from siblings. The conciseness comes at the expense of necessary contextual information.

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

Parameters2/5

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

The schema description coverage is 0%, so the description must compensate but adds no parameter information. It doesn't explain what 'project_id' represents, what 'state' filtering does, or how pagination parameters work. The description provides no semantic context beyond what's minimally implied by the tool name.

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 action ('List') and resource ('milestones in a GitLab project'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'list_group_milestones' or 'list_issues', which would require specifying what makes milestones distinct from those other list 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?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when to choose 'list_milestones' over 'list_group_milestones' or other list tools, nor does it specify prerequisites or context for usage beyond the basic action.

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

merge_merge_requestC

Merge a merge request in a GitLab project

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID or URL-encoded path
merge_request_iidYesMerge request internal ID
merge_commit_messageNoCustom merge commit message
should_remove_source_branchNoRemove source branch after merge
merge_when_pipeline_succeedsNoMerge when pipeline succeeds
shaNoSHA that must match the source branch HEAD

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action ('merge') which implies a destructive/write operation, but doesn't disclose critical behavioral traits: whether it requires specific permissions, what happens on success/failure (e.g., branch deletion based on parameters), rate limits, or what the tool returns. For a mutation tool with zero annotation coverage, this is a significant gap.

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 states exactly what the tool does with zero wasted words. It's appropriately sized for a tool with well-documented parameters in the schema, and the information is front-loaded with the core action immediately clear.

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 mutation tool with no annotations and no output schema, the description is insufficient. It doesn't explain what happens after merging (e.g., branch status changes), what the tool returns, error conditions, or permissions required. Given the complexity of merging in Git (which can fail due to conflicts, pipeline status, etc.), the description should provide more context about the operation's behavior and 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%, so the schema already documents all 6 parameters thoroughly. The description adds no parameter-specific information beyond what's in the schema - it doesn't explain parameter interactions, default behaviors, or provide examples. The baseline of 3 is appropriate when the schema does all the parameter documentation work.

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 action ('merge') and resource ('a merge request in a GitLab project'), making the purpose immediately understandable. It distinguishes from siblings like 'update_merge_request' by specifying the merge action rather than general updates. However, it doesn't explicitly differentiate from other merge-related operations that might exist in a broader context.

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. It doesn't mention prerequisites (e.g., merge request must be in mergeable state), when not to use it (e.g., if conflicts exist), or how it differs from related tools like 'update_merge_request' which might have overlapping functionality. The agent must infer usage from the name alone.

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

push_filesC

Push multiple files to a GitLab project in a single commit

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID or URL-encoded path
branchYesBranch to push to
filesYesArray of files to push
commit_messageYesCommit message

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries full burden but only states the basic operation. It lacks details on permissions needed, whether it overwrites existing files, error handling, rate limits, or commit behavior (e.g., atomicity). This is inadequate for a mutation tool with zero annotation coverage.

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 with no wasted words. It front-loads the core action and scope appropriately, making it easy to parse.

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 mutation tool with no annotations and no output schema, the description is insufficient. It misses critical behavioral details (e.g., side effects, error responses) and doesn't compensate for the lack of structured metadata, leaving gaps in understanding how the tool operates.

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 parameters are well-documented in the schema. The description adds no additional semantic context beyond implying batch processing, which aligns with the 'files' array parameter but doesn't elaborate on format or constraints.

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 action ('push multiple files') and target ('to a GitLab project in a single commit'), making the purpose evident. It distinguishes from siblings like 'create_or_update_file' by emphasizing batch operations, though it doesn't explicitly name alternatives.

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 like 'create_or_update_file' or 'create_branch'. The description implies batch file creation but doesn't specify prerequisites, error conditions, or contextual constraints.

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

search_groupsC

Search for GitLab groups

ParametersJSON Schema
NameRequiredDescriptionDefault
searchYesSearch query for groups
pageNoPage number for pagination (default: 1)
per_pageNoNumber of results per page (default: 20)
ownedNoLimit by groups owned by the current user
min_access_levelNoLimit by minimum access level (10=Guest, 20=Reporter, 30=Developer, 40=Maintainer, 50=Owner)

TDQS

C2.9/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 burden but offers minimal behavioral insight. It doesn't disclose whether this is a read-only operation, what authentication is needed, rate limits, pagination behavior beyond schema hints, or what the response format looks like. 'Search for' implies a query operation, but lacks detail on scope or limitations.

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 extremely concise - a single sentence that directly states the tool's purpose without any fluff. It's front-loaded with the essential information, making it efficient and easy to parse.

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 search tool with 5 parameters and no output schema, the description is insufficient. It doesn't explain what the search returns, how results are structured, or any behavioral aspects like pagination handling. With no annotations and no output schema, the description should provide more context about the operation's behavior and results.

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%, providing good documentation for all parameters. The description adds no additional parameter semantics beyond what's in the schema, so it meets the baseline for high schema coverage without compensating with extra context.

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 action ('Search for') and resource ('GitLab groups'), making the purpose immediately understandable. It distinguishes this from sibling tools that create, update, or delete resources, though it doesn't explicitly differentiate from other search tools like search_issues or search_repositories.

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. While the name implies searching groups specifically, there's no mention of when this is preferred over other search tools or list operations, nor any prerequisites or constraints for usage.

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

search_issuesC

Search for issues in a GitLab project

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID or URL-encoded path
searchYesSearch term for title and description
stateNoFilter issues by state
labelsNoComma-separated list of label names
pageNoPage number for pagination (default: 1)
per_pageNoNumber of results per page (default: 20)

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. While 'Search' implies a read operation, the description doesn't address important behavioral aspects like authentication requirements, rate limits, pagination behavior beyond what's in the schema, error conditions, or what the return format looks like. This leaves significant gaps for an agent to understand how to properly interact with this tool.

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 communicates the core functionality without any wasted words. It's appropriately sized and front-loaded with the essential information, making it easy for an agent to parse quickly.

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 search tool with 6 parameters, no annotations, and no output schema, the description is insufficiently complete. It doesn't explain what constitutes a successful search, what format results are returned in, how pagination works beyond the parameter definitions, or any error conditions. The agent would need to guess about many aspects of tool behavior.

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 schema description coverage is 100%, meaning all parameters are well-documented in the schema itself. The description doesn't add any meaningful parameter semantics beyond what's already in the schema fields. According to the scoring rules, when schema coverage is high (>80%), the baseline is 3 even with no additional parameter information in the description.

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 action ('Search for issues') and resource ('in a GitLab project'), making the purpose immediately understandable. However, it doesn't differentiate this tool from sibling tools like 'list_issues' or 'search_groups', which would require more specific scope or context information.

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 like 'list_issues' or 'search_groups'. There's no mention of prerequisites, appropriate contexts, or exclusions that would help an agent choose between similar tools in this server's toolset.

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

search_repositoriesC

Search for GitLab projects

ParametersJSON Schema
NameRequiredDescriptionDefault
searchYesSearch query
pageNoPage number for pagination (default: 1)
per_pageNoNumber of results per page (default: 20)

TDQS

C2.9/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 burden for behavioral disclosure. 'Search for GitLab projects' implies a read-only operation but doesn't mention authentication requirements, rate limits, search scope limitations, or what happens with pagination beyond what's in the schema. For a search tool with zero annotation coverage, this is inadequate.

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 with zero wasted words. It's appropriately sized for a search tool and front-loads the essential information. Every word earns its place in this minimal description.

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 purpose (searching repositories), no annotations, and no output schema, the description is insufficient. It doesn't explain what results look like, how search queries work, authentication requirements, or how this differs from other search/list tools. For a search operation that likely returns complex data, more context is needed.

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 schema description coverage is 100%, so the schema already fully documents all three parameters. The description adds no additional parameter semantics beyond what's in the schema. According to scoring rules, when schema_description_coverage is high (>80%), the baseline is 3 even with no param info in the description.

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 verb ('Search') and resource ('GitLab projects'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'search_groups' or 'search_issues' that also perform searches on different GitLab entities, which prevents a perfect score.

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. There are multiple sibling search tools (search_groups, search_issues) and list tools (list_issues, list_labels) that might overlap in functionality, but the description offers no context about when this specific repository search is appropriate versus other options.

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

update_group_milestoneC

Update an existing milestone in a GitLab group

ParametersJSON Schema
NameRequiredDescriptionDefault
group_idYesGroup ID or URL-encoded path
milestone_idYesThe ID of the group milestone
titleNoThe title of the milestone
descriptionNoThe description of the milestone
due_dateNoThe due date of the milestone (YYYY-MM-DD)
start_dateNoThe start date of the milestone (YYYY-MM-DD)
state_eventNoThe state event of the milestone

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states this is an update operation, implying mutation, but doesn't describe what happens on success/failure, whether changes are reversible, authentication requirements, rate limits, or error conditions. For a mutation tool with zero annotation coverage, this leaves significant 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?

The description is a single, efficient sentence that front-loads the essential information ('Update an existing milestone in a GitLab group'). There's no wasted verbiage or redundancy, making it easy to parse quickly.

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 this is a mutation tool with 7 parameters, no annotations, and no output schema, the description is incomplete. It doesn't cover behavioral aspects (permissions, side effects), usage context versus siblings, or what the tool returns. The high schema coverage helps, but the description alone is insufficient for safe and effective use.

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 7 parameters thoroughly. The description adds no additional parameter semantics beyond what's in the schema (e.g., it doesn't explain relationships between parameters like how 'state_event' interacts with other fields). The baseline of 3 is appropriate when the schema does the heavy lifting.

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 action ('Update') and resource ('an existing milestone in a GitLab group'), making the purpose immediately understandable. It distinguishes this from creation tools like 'create_group_milestone' by specifying 'existing', but doesn't explicitly differentiate it from similar update tools like 'update_milestone' (which appears to be for project-level milestones).

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. It doesn't mention prerequisites (e.g., needing edit permissions), when not to use it, or how it differs from sibling tools like 'update_milestone' (likely for project milestones) or 'update_issue' (for different resources). Usage is implied but not explicitly defined.

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

update_issueC

Update an existing issue in a GitLab project

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID or URL-encoded path
issue_iidYesIssue internal ID
titleNoNew issue title
descriptionNoNew issue description
state_eventNoChange issue state
labelsNoArray of label names
assignee_idsNoArray of user IDs to assign
milestone_idNoMilestone ID to assign

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure but offers minimal information. It states this is an update operation but doesn't cover permissions required, whether changes are reversible, rate limits, error conditions, or what happens to unspecified fields. For a mutation tool with zero annotation coverage, this is inadequate.

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 directly states the tool's purpose without unnecessary words. It's appropriately sized and front-loaded, making it easy to parse quickly.

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 mutation tool with 8 parameters, no annotations, and no output schema, the description is insufficient. It lacks critical context such as authentication requirements, side effects, error handling, and response format. The high parameter count and mutation nature demand more comprehensive guidance than provided.

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 schema description coverage is 100%, so all parameters are documented in the schema itself. The description adds no additional parameter semantics beyond what's in the schema (e.g., it doesn't explain parameter interactions or provide examples). This meets the baseline for high schema coverage but doesn't enhance understanding.

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 action ('Update') and resource ('an existing issue in a GitLab project'), making the purpose immediately understandable. However, it doesn't differentiate this tool from similar sibling tools like 'update_merge_request' or 'update_milestone' beyond the resource type, which prevents a perfect score.

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. It doesn't mention prerequisites (e.g., needing an existing issue), when not to use it, or how it differs from sibling tools like 'create_issue' or 'add_issue_comment' for issue modifications.

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

update_labelC

Update an existing label in a GitLab project

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes
nameYes
new_nameNo
colorNo
descriptionNo
priorityNo

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states it's an update operation, implying mutation, but doesn't cover permissions needed, side effects, error handling, or response format. This leaves significant gaps for a tool with 6 parameters and no output schema.

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, straightforward sentence with no wasted words. It's front-loaded with the core action and resource, making it efficient and easy to parse.

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 complexity (6 parameters, no schema descriptions, no annotations, no output schema), the description is inadequate. It doesn't explain parameter usage, behavioral traits, or output expectations, leaving the agent with insufficient information to invoke the tool correctly.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate for undocumented parameters. It only mentions 'label' generically, without explaining what parameters like 'color', 'priority', or 'new_name' do or their expected formats. This fails to add meaningful semantics beyond the schema.

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 action ('Update') and resource ('an existing label in a GitLab project'), making the purpose evident. However, it doesn't differentiate from sibling tools like 'create_label' or 'delete_label' beyond the verb, missing explicit distinction.

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 like 'create_label' or 'delete_label'. The description implies usage for modifying labels but lacks context about prerequisites, constraints, or specific scenarios.

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

update_merge_requestC

Update an existing merge request in a GitLab project

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID or URL-encoded path
merge_request_iidYesMerge request internal ID
titleNoNew merge request title
descriptionNoNew merge request description
state_eventNoChange merge request state
target_branchNoNew target branch
labelsNoArray of label names
assignee_idsNoArray of user IDs to assign
milestone_idNoMilestone ID to assign
remove_source_branchNoRemove source branch when merged

TDQS

C2.9/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 burden for behavioral disclosure but offers minimal information. It states this is an update operation, implying mutation, but doesn't cover critical aspects like required permissions, whether changes are reversible, rate limits, or what happens to unspecified fields. This leaves significant gaps for a mutation tool.

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, direct sentence with zero wasted words. It's front-loaded with the core action and resource, making it easy to parse quickly without unnecessary elaboration.

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 complexity of a 10-parameter mutation tool with no annotations and no output schema, the description is inadequate. It lacks information on behavioral traits, usage context, and expected outcomes, leaving the agent with insufficient guidance to use the tool effectively beyond basic parameter passing.

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 schema description coverage is 100%, with all parameters well-documented in the schema itself. The description adds no additional parameter semantics beyond implying that updates apply to an existing merge request, which is already clear from the tool name and schema. This meets the baseline for high schema coverage.

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 action ('Update') and resource ('an existing merge request in a GitLab project'), making the purpose immediately understandable. However, it doesn't distinguish this tool from similar sibling tools like 'update_issue' or 'update_milestone' beyond the resource type, missing explicit differentiation.

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. It doesn't mention prerequisites (e.g., needing an existing merge request), compare it to 'create_merge_request' for initial creation, or specify scenarios where updates are appropriate versus other operations like commenting or merging.

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

update_milestoneC

Update an existing milestone in a GitLab project

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes
milestone_idYes
titleNo
descriptionNo
due_dateNo
start_dateNo
state_eventNo

TDQS

C2.8/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 burden for behavioral disclosure. It states this is an update operation (implying mutation) but provides no information about permissions required, whether changes are reversible, rate limits, error conditions, or what the response contains. This leaves significant gaps for a mutation tool.

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 with zero wasted words. It's appropriately sized for a basic tool description and front-loads the essential information.

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 mutation tool with 7 parameters, 0% schema description coverage, no annotations, and no output schema, the description is inadequate. It doesn't explain what happens when the tool is invoked, what fields are optional versus required beyond the schema minimum, or what the expected outcome is. Significant context is missing.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate but provides no parameter information. It doesn't explain what 'project_id' or 'milestone_id' should be, what fields can be updated, or the meaning of parameters like 'state_event' with its enum values. The description adds no value beyond what the bare schema provides.

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 action ('Update') and target resource ('an existing milestone in a GitLab project'), which is specific and unambiguous. It distinguishes from sibling tools like 'create_milestone' by specifying 'existing', but doesn't explicitly differentiate from 'update_group_milestone' or other update tools.

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. The description doesn't mention prerequisites (e.g., needing an existing milestone), when not to use it, or how it differs from similar tools like 'update_group_milestone' or 'create_milestone'.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 30 tool updatesv1.5.2
    • First observedadd_issue_comment
    • First observedadd_merge_request_comment
    • First observedcreate_branch
    • First observedcreate_group_milestone
    • First observedcreate_issue
    • First observedcreate_label
    • First observedcreate_merge_request
    • First observedcreate_milestone
    • First observedcreate_or_update_file
    • First observedcreate_repository
    • First observeddelete_group_milestone
    • First observeddelete_label
    • First observeddelete_milestone
    • First observedfork_repository
    • First observedget_file_contents
    • First observedlist_group_milestones
    • First observedlist_issues
    • First observedlist_labels
    • First observedlist_merge_requests
    • First observedlist_milestones
    • First observedmerge_merge_request
    • First observedpush_files
    • First observedsearch_groups
    • First observedsearch_issues
    • First observedsearch_repositories
    • First observedupdate_group_milestone
    • First observedupdate_issue
    • First observedupdate_label
    • First observedupdate_merge_request
    • First observedupdate_milestone

TDQS

B3.4/5.0
Disambiguation5/5

Every tool has a clearly distinct purpose targeting specific resources and actions in GitLab's domain. There is no ambiguity between tools like create_issue vs. update_issue or list_merge_requests vs. merge_merge_request, as each handles a unique operation on well-defined entities.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern with snake_case throughout, such as create_branch, list_issues, and update_milestone. The naming is predictable and uniform, making it easy to understand each tool's function at a glance.

Tool Count3/5

With 30 tools, the count feels heavy for a typical MCP server scope, bordering on excessive. While GitLab is a complex platform, this many tools might overwhelm agents and could potentially be streamlined by grouping related operations or reducing redundancy.

Completeness5/5

The tool set provides comprehensive CRUD and lifecycle coverage for GitLab's core features, including projects, issues, merge requests, milestones, labels, and files. There are no obvious gaps; agents can perform full workflows from creation to management and search across the domain.

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

Appeared in Searches

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/TheRealChrisThomas/gitlab-mcp-server'

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