Skip to main content
Glama
harshmaur

GitLab MCP Server

by harshmaur

Better GitLab MCP Server

@zereight/mcp-gitlab

GitLab MCP(Model Context Protocol) Server. Includes bug fixes and improvements over the original GitLab MCP server.

Related MCP server: GitLab MCP Server

Usage

Using with Claude App, Cline, Roo Code, Cursor

When using with the Claude App, you need to set up your API key and URLs directly.

npx

{
  "mcpServers": {
    "GitLab communication server": {
      "command": "npx",
      "args": ["-y", "@zereight/mcp-gitlab"],
      "env": {
        "GITLAB_PERSONAL_ACCESS_TOKEN": "your_gitlab_token",
        "GITLAB_API_URL": "your_gitlab_api_url",
        "GITLAB_READ_ONLY_MODE": "false",
        "USE_GITLAB_WIKI": "false", // use wiki api?
        "USE_MILESTONE": "false", // use milestone api?
        "USE_PIPELINE": "false" // use pipeline api?
      }
    }
  }
}

Docker

  • stdio

{
  "mcpServers": {
    "GitLab communication server": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "GITLAB_PERSONAL_ACCESS_TOKEN",
        "-e",
        "GITLAB_API_URL",
        "-e",
        "GITLAB_READ_ONLY_MODE",
        "-e",
        "USE_GITLAB_WIKI",
        "-e",
        "USE_MILESTONE",
        "-e",
        "USE_PIPELINE",
        "iwakitakuma/gitlab-mcp"
      ],
      "env": {
        "GITLAB_PERSONAL_ACCESS_TOKEN": "your_gitlab_token",
        "GITLAB_API_URL": "https://gitlab.com/api/v4", // Optional, for self-hosted GitLab
        "GITLAB_READ_ONLY_MODE": "false",
        "USE_GITLAB_WIKI": "true",
        "USE_MILESTONE": "true",
        "USE_PIPELINE": "true"
      }
    }
  }
}
  • sse

docker run -i --rm \
  -e GITLAB_PERSONAL_ACCESS_TOKEN=your_gitlab_token \
  -e GITLAB_API_URL= "https://gitlab.com/api/v4"\
  -e GITLAB_READ_ONLY_MODE=true \
  -e USE_GITLAB_WIKI=true \
  -e USE_MILESTONE=true \
  -e USE_PIPELINE=true \
  -e SSE=true \
  -p 3333:3002 \
  iwakitakuma/gitlab-mcp
{
  "mcpServers": {
    "GitLab communication server": {
      "url": "http://localhost:3333/sse"
    }
  }
}

Docker Image Push

$ sh scripts/image_push.sh docker_user_name

Environment Variables

  • GITLAB_PERSONAL_ACCESS_TOKEN: Your GitLab personal access token.

  • GITLAB_API_URL: Your GitLab API URL. (Default: https://gitlab.com/api/v4)

  • GITLAB_READ_ONLY_MODE: When set to 'true', restricts the server to only expose read-only operations. Useful for enhanced security or when write access is not needed. Also useful for using with Cursor and it's 40 tool limit.

  • USE_GITLAB_WIKI: When set to 'true', enables the wiki-related tools (list_wiki_pages, get_wiki_page, create_wiki_page, update_wiki_page, delete_wiki_page). By default, wiki features are disabled.

  • USE_MILESTONE: When set to 'true', enables the milestone-related tools (list_milestones, get_milestone, create_milestone, edit_milestone, delete_milestone, get_milestone_issue, get_milestone_merge_requests, promote_milestone, get_milestone_burndown_events). By default, milestone features are disabled.

  • USE_PIPELINE: When set to 'true', enables the pipeline-related tools (list_pipelines, get_pipeline, list_pipeline_jobs, get_pipeline_job, get_pipeline_job_output, create_pipeline, retry_pipeline, cancel_pipeline). By default, pipeline features are disabled.

Tools 🛠️

+

  1. create_or_update_file - Create or update a single file in a GitLab project

  2. search_repositories - Search for GitLab projects

  3. create_repository - Create a new GitLab project

  4. get_file_contents - Get the contents of a file or directory from a GitLab project

  5. push_files - Push multiple files to a GitLab project in a single commit

  6. create_issue - Create a new issue in a GitLab project

  7. create_merge_request - Create a new merge request in a GitLab project

  8. fork_repository - Fork a GitLab project to your account or specified namespace

  9. create_branch - Create a new branch in a GitLab project

  10. get_merge_request - Get details of a merge request (Either mergeRequestIid or branchName must be provided)

  11. get_merge_request_diffs - Get the changes/diffs of a merge request (Either mergeRequestIid or branchName must be provided)

  12. get_branch_diffs - Get the changes/diffs between two branches or commits in a GitLab project

  13. update_merge_request - Update a merge request (Either mergeRequestIid or branchName must be provided)

  14. create_note - Create a new note (comment) to an issue or merge request

  15. create_merge_request_thread - Create a new thread on a merge request

  16. mr_discussions - List discussion items for a merge request

  17. update_merge_request_note - Modify an existing merge request thread note

  18. create_merge_request_note - Add a new note to an existing merge request thread

  19. update_issue_note - Modify an existing issue thread note

  20. create_issue_note - Add a new note to an existing issue thread

  21. list_issues - List issues in a GitLab project with filtering options

  22. get_issue - Get details of a specific issue in a GitLab project

  23. update_issue - Update an issue in a GitLab project

  24. delete_issue - Delete an issue from a GitLab project

  25. list_issue_links - List all issue links for a specific issue

  26. list_issue_discussions - List discussions for an issue in a GitLab project

  27. get_issue_link - Get a specific issue link

  28. create_issue_link - Create an issue link between two issues

  29. delete_issue_link - Delete an issue link

  30. list_namespaces - List all namespaces available to the current user

  31. get_namespace - Get details of a namespace by ID or path

  32. verify_namespace - Verify if a namespace path exists

  33. get_project - Get details of a specific project

  34. list_projects - List projects accessible by the current user

  35. list_labels - List labels for a project

  36. get_label - Get a single label from a project

  37. create_label - Create a new label in a project

  38. update_label - Update an existing label in a project

  39. delete_label - Delete a label from a project

  40. list_group_projects - List projects in a GitLab group with filtering options

  41. list_wiki_pages - List wiki pages in a GitLab project

  42. get_wiki_page - Get details of a specific wiki page

  43. create_wiki_page - Create a new wiki page in a GitLab project

  44. update_wiki_page - Update an existing wiki page in a GitLab project

  45. delete_wiki_page - Delete a wiki page from a GitLab project

  46. get_repository_tree - Get the repository tree for a GitLab project (list files and directories)

  47. list_pipelines - List pipelines in a GitLab project with filtering options

  48. get_pipeline - Get details of a specific pipeline in a GitLab project

  49. list_pipeline_jobs - List all jobs in a specific pipeline

  50. get_pipeline_job - Get details of a GitLab pipeline job number

  51. get_pipeline_job_output - Get the output/trace of a GitLab pipeline job number

  52. create_pipeline - Create a new pipeline for a branch or tag

  53. retry_pipeline - Retry a failed or canceled pipeline

  54. cancel_pipeline - Cancel a running pipeline

  55. list_merge_requests - List merge requests in a GitLab project with filtering options

  56. list_milestones - List milestones in a GitLab project with filtering options

  57. get_milestone - Get details of a specific milestone

  58. create_milestone - Create a new milestone in a GitLab project

  59. edit_milestone - Edit an existing milestone in a GitLab project

  60. delete_milestone - Delete a milestone from a GitLab project

  61. get_milestone_issue - Get issues associated with a specific milestone

  62. get_milestone_merge_requests - Get merge requests associated with a specific milestone

  63. promote_milestone - Promote a milestone to the next stage

  64. get_milestone_burndown_events - Get burndown events for a specific milestone

  65. get_users - Get GitLab user details by usernames

Available Tools

45 tools
add_time_spentC

Add time spent on an issue

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID or URL-encoded path
issue_iidYesThe internal ID of the issue
durationYesThe duration in GitLab format (e.g., '3h 30m')
spent_atNoThe date the time was spent (YYYY-MM-DD)
summaryNoA short description of the time spent

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 'adds' time spent, implying a write/mutation operation, but doesn't specify permissions required, 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 with zero wasted words. It's front-loaded with the core purpose and appropriately sized for the tool's complexity.

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 behavioral context (e.g., side effects, error handling), usage prerequisites, and doesn't compensate for the absence of structured safety or response 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%, so the schema fully documents all 5 parameters. The description adds no parameter-specific information beyond what's in the schema (e.g., it doesn't clarify format examples or constraints). 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 ('Add time spent') and the resource ('on an issue'), providing a specific verb+resource combination. It distinguishes from siblings like 'delete_time_spent' by specifying the 'add' operation, though it doesn't explicitly contrast with other time-related tools since none exist in the sibling list.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing project access), exclusions, or comparisons to other tools like 'update_issue' for time tracking. Usage is implied only by the action name.

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

create_branchC

Create a new branch in a GitLab project

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID or complete URL-encoded path to project
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?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool creates a branch but doesn't mention important behavioral aspects like required permissions, whether it's idempotent, error conditions, or what happens if the branch already exists. 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 states the tool's purpose without unnecessary words. It's appropriately sized and front-loaded, with every word earning its place in conveying the core functionality.

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 insufficiently complete. It doesn't address behavioral aspects like permissions, error handling, or return values, leaving the agent with inadequate context to use the tool effectively despite the good parameter documentation.

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

Parameters3/5

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

The input schema has 100% description coverage, providing clear documentation for all three parameters. The description doesn't add any parameter-specific information beyond what's in the schema, so it meets the baseline of 3 for adequate coverage without adding extra value.

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 the resource ('in a GitLab project'), providing a specific verb+resource combination. However, it doesn't differentiate from sibling tools like 'create_merge_request' or 'fork_repository' that also create GitLab resources, 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 project), exclusions, or comparisons to related tools like 'create_merge_request' or 'fork_repository' in the sibling list.

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 complete URL-encoded path to project
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 the full burden of behavioral disclosure but offers minimal information. It states the tool creates an issue but doesn't cover permissions required, rate limits, whether the operation is idempotent, what happens on failure, or the expected response format. 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 that directly states the tool's purpose without unnecessary words. It's front-loaded with the core action and resource, making it easy to parse quickly. Every word earns its place, with zero waste or redundancy.

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 insufficiently complete. It doesn't explain behavioral aspects like authentication needs, error handling, or return values, nor does it provide usage context relative to siblings. The high schema coverage helps with parameters, but overall context is lacking for effective tool selection and 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 input schema has 100% description coverage, clearly documenting all 6 parameters and their types. The description adds no additional parameter semantics beyond what's in the schema, such as format examples or constraints. Given the high schema coverage, a baseline score of 3 is appropriate as 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 a new issue') and resource ('in a GitLab project'), making the purpose immediately understandable. However, it doesn't differentiate this tool from similar sibling tools like 'create_issue_link' or 'create_issue_note', which would require more specific language about what constitutes an 'issue' versus other issue-related entities.

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), exclusions, or comparisons to sibling tools like 'update_issue' or 'list_issues', leaving the agent to infer usage context solely from the tool name.

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

create_issue_noteC

Add a new note to an existing issue thread

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID or complete URL-encoded path to project
issue_iidYesThe IID of an issue
discussion_idYesThe ID of a thread
bodyYesThe content of the note or reply
created_atNoDate the note was created at (ISO 8601 format)

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 adds a note but lacks critical details: whether this is a write operation (implied but not explicit), required permissions, rate limits, or what happens on success/failure. For a mutation tool with zero annotation coverage, this is a significant gap in transparency.

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 directly states the tool's purpose without unnecessary words. It's appropriately sized and front-loaded, 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 (e.g., side effects, error handling) or provide usage context, leaving gaps that could hinder an agent's ability to invoke the tool correctly in complex scenarios.

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 input schema already documents all 5 parameters thoroughly. The description adds no additional meaning beyond the schema's parameter descriptions (e.g., it doesn't clarify relationships between parameters like how 'discussion_id' relates to 'issue_iid'). 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 new note') and target resource ('to an existing issue thread'), providing a specific verb+resource combination. However, it doesn't explicitly differentiate from sibling tools like 'create_issue' (creates new issue) or 'create_merge_request_note' (adds note to merge request), which would be needed for a score of 5.

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 thread), exclusions, or comparisons to similar tools like 'create_note' or 'update_issue_note' from the sibling list, leaving the agent without contextual usage direction.

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 project

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID or URL-encoded path
nameYesThe name of the label
colorYesThe color of the label given in 6-digit hex notation with leading '#' sign
descriptionNoThe description of the label
priorityNoThe priority of the label

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' which implies a write operation, but doesn't cover critical aspects like required permissions, whether the operation is idempotent, error handling, or what happens on success (e.g., returns the created label object). For a mutation tool with zero annotation coverage, this is a significant gap in transparency.

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 front-loaded with the core action and resource, making it easy to parse quickly, though it could be more informative given the lack of other guidance.

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 creation tool with 5 parameters, no annotations, and no output schema, the description is incomplete. It doesn't explain the return value, error conditions, or behavioral nuances, leaving the agent with insufficient context 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 (e.g., project_id, name, color with hex format). The description adds no additional parameter semantics beyond what's in the schema, so it meets the baseline of 3 where the schema does the heavy lifting without compensating for any gaps.

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 project'), making the purpose immediately understandable. It distinguishes from siblings like 'update_label' or 'delete_label' by specifying creation, though it doesn't explicitly contrast with other creation tools like 'create_issue' or 'create_branch' beyond the resource type.

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), exclusions, or comparisons to sibling tools like 'update_label' or 'list_labels', leaving the agent to infer usage context solely from the tool name and parameters.

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 complete URL-encoded path to project
titleYesMerge request title
descriptionNoMerge request description
source_branchYesBranch containing changes
target_branchYesBranch to merge into
assignee_idsNoThe ID of the users to assign the MR to
reviewer_idsNoThe ID of the users to assign as reviewers of the MR
labelsNoLabels for the MR
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 full burden for behavioral disclosure. It states the action ('create') which implies a write operation, but doesn't mention required permissions, whether the operation is idempotent, potential side effects (e.g., notifications sent), or error conditions. 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 with zero wasted words. It's appropriately sized for a tool with comprehensive schema documentation and gets straight to the point 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 10 parameters and no annotations or output schema, the description is insufficient. It doesn't explain what happens after creation (e.g., returns a merge request object, triggers workflows), error handling, or integration with sibling tools like 'list_merge_requests' or 'update_merge_request'. The context demands more 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?

The schema description coverage is 100%, so the schema already documents all 10 parameters thoroughly. The description adds no additional parameter semantics beyond what's in the schema, but doesn't need to since the schema provides complete coverage. This meets the baseline expectation 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') and resource ('new merge request in a GitLab project'), making the purpose immediately understandable. It doesn't explicitly distinguish from sibling tools like 'create_issue' or 'create_branch', but the specificity of 'merge request' inherently differentiates it within the GitLab 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 like 'create_issue' or 'update_merge_request'. It doesn't mention prerequisites (e.g., needing an existing project or branches) or contextual cues for when creating a merge request is appropriate versus other actions.

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

create_merge_request_noteB

Add a new note to an existing merge request thread

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID or complete URL-encoded path to project
merge_request_iidYesThe IID of a merge request
discussion_idYesThe ID of a thread
bodyYesThe content of the note or reply
created_atNoDate the note was created at (ISO 8601 format)

TDQS

B3.2/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 action ('Add a new note') which implies a write operation, but doesn't disclose any behavioral traits like required permissions, whether notes are editable/deletable, rate limits, or what happens on success/failure. The description is minimal and lacks crucial context 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 states the core purpose without unnecessary words. It's appropriately sized for this tool and front-loads the essential information. Every word earns its place, 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, no annotations, and no output schema, the description is insufficient. It doesn't explain what the tool returns, error conditions, permission requirements, or behavioral constraints. While the schema documents parameters, the description lacks the contextual information needed for an agent to use this tool effectively in practice.

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 all parameters are documented in the schema. The description doesn't add any parameter-specific information beyond what's in the schema (e.g., it doesn't explain relationships between parameters or provide examples). This meets the baseline of 3 when schema coverage is high, but doesn't enhance understanding of parameter semantics.

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 new note') and target resource ('to an existing merge request thread'), making the purpose immediately understandable. It distinguishes this from sibling tools like 'create_merge_request_thread' (creates new thread) and 'update_merge_request_note' (modifies existing note). However, it doesn't specify that this adds to a specific discussion/thread rather than creating a new one, which could be slightly more precise.

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

Usage Guidelines3/5

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

The description implies usage context by specifying 'existing merge request thread' and 'new note', suggesting this is for adding to ongoing discussions rather than creating threads or updating notes. However, it doesn't explicitly state when to use this versus alternatives like 'create_merge_request_thread' (for starting new discussions) or 'update_merge_request_note' (for editing existing notes), nor does it mention any prerequisites or exclusions.

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

create_merge_request_threadC

Create a new thread on a merge request

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID or complete URL-encoded path to project
merge_request_iidYesThe IID of a merge request
bodyYesThe content of the thread
positionNoPosition when creating a diff note
created_atNoDate the thread was created at (ISO 8601 format)

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/mutation operation, the description doesn't mention authentication requirements, permission levels needed, whether threads are editable/deletable, rate limits, or what happens on success/failure. For a creation tool with complex parameters, 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 states the core purpose without unnecessary words. It's front-loaded with the essential information and contains zero redundant or verbose elements. For a tool with comprehensive schema documentation, this level of conciseness is appropriate.

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 5 parameters (including a complex nested 'position' object), no annotations, and no output schema, the description is inadequate. It doesn't explain what a 'thread' means in this context (versus a 'note'), doesn't mention the expected response format, and provides no guidance on error conditions or success criteria. The agent would struggle to use this tool effectively without trial and error.

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 5 parameters thoroughly. The description adds no parameter-specific information beyond what's in the schema - it doesn't explain relationships between parameters (like how 'position' relates to 'body'), doesn't provide examples, and doesn't clarify when certain parameters are needed versus optional. 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 thread') and target resource ('on a merge request'), which is specific and unambiguous. However, it doesn't differentiate from similar sibling tools like 'create_merge_request_note' or 'create_issue_note', which might create confusion about when to use this particular thread creation tool versus other note/comment creation 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?

The description provides no guidance on when to use this tool versus alternatives. With multiple sibling tools for creating notes, discussions, and threads (e.g., create_merge_request_note, create_issue_note, list_issue_discussions, mr_discussions), the agent receives no help in selecting this specific thread creation tool over other communication-related tools in the server.

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

create_noteC

Create a new note (comment) to an issue or merge request

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID or namespace/project_path
noteable_typeYesType of noteable (issue or merge_request)
noteable_iidYesIID of the issue or merge request
bodyYesNote content

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 this is a creation operation, implying mutation, but lacks details on permissions required, whether notes are editable or deletable, rate limits, or response format. For a mutation tool with zero annotation coverage, this is a significant gap in transparency.

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 unnecessary words. Every part of the sentence earns its place by specifying the action and target, making it highly concise and well-structured.

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 that this is a mutation tool with no annotations and no output schema, the description is incomplete. It lacks behavioral details (e.g., permissions, side effects) and doesn't explain return values or error conditions, leaving significant gaps for an AI agent to understand the tool fully.

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 documented in the schema itself. The description adds no additional meaning beyond what the schema provides (e.g., it doesn't clarify parameter interactions or usage examples). Baseline score 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 ('Create a new note') and the target resource ('to an issue or merge request'), which distinguishes it from sibling tools like create_issue or create_merge_request. However, it doesn't explicitly differentiate from create_issue_note and create_merge_request_note, which appear to be similar sibling tools, making it slightly less specific than 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 create_issue_note or create_merge_request_note, nor does it mention any prerequisites or exclusions. It only states what the tool does without contextual usage instructions.

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 complete URL-encoded path to project
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
last_commit_idNoLast known file commit ID
commit_idNoCurrent file commit ID (for update operations)

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 tool performs write operations ('create or update'), implying mutation, but lacks details on permissions required, whether changes are reversible, rate limits, or error handling (e.g., what happens if the file already exists or the branch doesn't). This is a significant gap 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, clear sentence that efficiently conveys the core action and resource without unnecessary words. It's front-loaded with the key information, 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 doesn't cover behavioral aspects like permissions or error handling, nor does it explain the return value or how to interpret success/failure. Given the complexity and lack of structured 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 all parameters are documented in the schema. The description adds no additional meaning beyond the schema, such as explaining the relationship between 'previous_path' and 'file_path' for renaming, or clarifying when 'last_commit_id' and 'commit_id' are needed. Baseline 3 is appropriate as 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 or update') and resource ('a single file in a GitLab project'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'push_files' or 'get_file_contents', which could handle similar file operations, so it doesn't reach the highest 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 'push_files' (which might handle multiple files) or 'get_file_contents' (for reading). There's no mention of prerequisites, such as authentication or project access, or when to choose create vs. update operations based on file existence.

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?

No annotations are provided, so the description carries full burden for behavioral disclosure. It states the tool creates a repository, implying a write/mutation operation, but lacks details on permissions required, rate limits, whether it's idempotent, or what happens on failure (e.g., duplicate names). 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 with zero waste. It's front-loaded with the core purpose and uses clear language. Every word earns its place, 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 no annotations and no output schema, the description is incomplete. It doesn't cover behavioral aspects like authentication needs, error handling, or return values (e.g., project ID or URL). For a tool that creates resources, more context is needed 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%, so the schema fully documents all parameters (name, description, visibility, initialize_with_readme). The description adds no additional meaning beyond the schema, such as explaining default values or interactions between parameters. 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'), which is specific and unambiguous. It distinguishes from siblings like 'fork_repository' (which duplicates an existing project) and 'list_projects' (which retrieves projects), though it doesn't explicitly mention these distinctions in the text.

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 appropriate permissions), when not to use it (e.g., for existing projects), or direct alternatives like 'fork_repository' for creating from a template. 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.

delete_issueC

Delete an issue from a GitLab project

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID or URL-encoded path
issue_iidYesThe internal ID of the project issue

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 ('Delete') which implies a destructive mutation, but doesn't elaborate on consequences (e.g., permanent removal, no undo), authentication requirements, rate limits, or what happens upon success/failure. This leaves significant gaps for a tool that performs irreversible changes.

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 conveys the core purpose without any wasted words. It's front-loaded with the essential action and resource, 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 destructive mutation tool with no annotations and no output schema, the description is insufficient. It doesn't address critical context like what 'Delete' entails (permanent vs. soft delete), error conditions, permissions needed, or return values. Given the complexity and risk of deletion operations, more completeness is required.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema fully documents both parameters (project_id and issue_iid) with their types and descriptions. The description adds no additional parameter information beyond what's in the schema, which is acceptable given the high coverage. The baseline score of 3 reflects adequate but minimal value added.

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 ('an issue from a GitLab project'), making the purpose immediately understandable. It distinguishes from siblings like 'get_issue' or 'update_issue' by specifying deletion. However, it doesn't explicitly mention that this is a destructive operation, which would make it more specific.

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 appropriate permissions), when not to use it (e.g., for archiving instead), or refer to related tools like 'delete_issue_link' or 'delete_time_spent'. 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_labelC

Delete a label from a project

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID or URL-encoded path
label_idYesThe ID or title of a project's label

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 describe consequences (e.g., whether deletion is permanent, if it affects associated issues, or what permissions are required). For a destructive 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 with zero wasted words. It's front-loaded with the core action and resource, making it immediately scannable and appropriately sized for a simple operation.

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 behavioral aspects like permanence, side effects, error conditions, or response format. The agent lacks sufficient context to use this tool safely and 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%, with both parameters clearly documented in the schema. The description doesn't add any parameter-specific information beyond what's in the schema (e.g., format examples 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 ('Delete') and resource ('a label from a project'), making the purpose immediately understandable. It distinguishes from siblings like 'create_label' and 'update_label' by specifying deletion, but doesn't explicitly contrast with 'get_label' or 'list_labels' beyond the verb difference.

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 label), when deletion is appropriate versus updating, or what happens after deletion. The agent must infer usage from the verb alone.

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

delete_time_spentC

Delete a time spent entry from an issue

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID or URL-encoded path
issue_iidYesThe internal ID of the issue
time_log_idYesThe ID of the time log to delete

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 destructive action ('Delete') but doesn't cover critical aspects like whether deletion is permanent, requires specific permissions, has side effects (e.g., affecting issue metrics), or what happens on success/failure. 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, direct sentence that efficiently conveys the core action without unnecessary words. It's front-loaded with the verb and resource, making it easy to parse, and every part of the sentence contributes to understanding the tool's purpose.

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 insufficient. It lacks behavioral context (e.g., permanence, permissions), usage guidelines, and details on return values or errors, leaving significant gaps in understanding how to invoke and interpret results safely.

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 all three parameters clearly documented in the schema (project_id, issue_iid, time_log_id). The description doesn't add any parameter-specific details beyond implying the need to identify a time log entry, so it meets the baseline for high schema coverage without compensating value.

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 time spent entry from an issue'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'delete_issue' or 'delete_issue_link', which would require mentioning the specific resource type (time spent entries vs. issues or links).

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 time log), exclusions, or compare it to related tools like 'add_time_spent' for time management operations, leaving usage context unclear.

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

fork_repositoryB

Fork a GitLab project to your account or specified namespace

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

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It mentions forking to 'your account or specified namespace' but lacks critical behavioral details: whether this requires authentication, what permissions are needed, if it's a destructive operation (it creates a new repository, not destructive to the original), rate limits, or what the output looks like (e.g., returns the new repository details). 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, efficient sentence that front-loads the core purpose ('Fork a GitLab project') and adds necessary qualification ('to your account or specified namespace'). There is zero waste or redundancy.

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 no annotations and no output schema, the description is incomplete. It lacks details on authentication requirements, error conditions, what the fork operation entails (e.g., copies branches, issues), and response format. For a tool that creates a new repository, 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 already documents both parameters ('project_id' and 'namespace') with clear descriptions. The description adds minimal value beyond the schema by implying 'namespace' is optional (defaulting to 'your account'), but doesn't provide additional context like format examples 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 ('Fork') and resource ('a GitLab project'), specifying the destination ('to your account or specified namespace'). It distinguishes from siblings like 'create_repository' by focusing on forking existing projects rather than creating new ones from scratch. However, it doesn't explicitly contrast with all potential sibling operations like cloning or branching.

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

Usage Guidelines3/5

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

The description implies usage when you want to create a copy of an existing GitLab project, either to your personal account or a specific namespace. It doesn't provide explicit when-not-to-use guidance, alternatives (e.g., cloning vs. forking), or prerequisites such as required permissions or project accessibility.

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

get_branch_diffsB

Get the changes/diffs between two branches or commits in a GitLab project

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID or complete URL-encoded path to project
fromYesThe base branch or commit SHA to compare from
toYesThe target branch or commit SHA to compare to
straightNoComparison method: false for '...' (default), true for '--'
excluded_file_patternsNoArray of regex patterns to exclude files from the diff results. Each pattern is a JavaScript-compatible regular expression that matches file paths to ignore. Examples: ["^test/mocks/", "\.spec\.ts$", "package-lock\.json"]

TDQS

B3.2/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 it mentions 'changes/diffs', it doesn't describe the output format (e.g., patch format, file list), pagination behavior, rate limits, authentication requirements, or error conditions. This leaves significant gaps for an agent to understand how to interpret results.

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 immediately states the tool's purpose without any wasted words. It's appropriately sized and front-loaded with the core functionality.

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 5 parameters, no annotations, and no output schema, the description is insufficient. It doesn't address the behavioral aspects needed for proper usage (output format, error handling, etc.), leaving the agent with incomplete context despite the good parameter documentation in 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?

Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds no additional parameter semantics beyond what's in the schema (e.g., it doesn't clarify the relationship between 'from' and 'to', or provide examples of valid commit SHA formats). 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.

Purpose5/5

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

The description clearly states the specific action ('Get the changes/diffs') and resource ('between two branches or commits in a GitLab project'). It distinguishes itself from siblings like 'get_merge_request_diffs' by focusing on branch/commit comparisons rather than merge request diffs.

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 'get_merge_request_diffs' or 'get_file_contents' for specific diff scenarios. It lacks any mention of prerequisites, typical use cases, or exclusions.

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 complete URL-encoded path to project
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?

With no annotations provided, the description carries full burden for behavioral disclosure. It states what the tool does but lacks critical details: whether it returns raw file content or metadata, if it supports binary files, pagination for directories, authentication requirements, rate limits, or error conditions. This is inadequate for a tool that likely has complex 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, 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?

Given the complexity of file/directory retrieval (potentially involving content types, encoding, or recursive operations), no annotations, and no output schema, the description is insufficient. It doesn't explain what 'contents' means (e.g., file data vs. metadata), return formats, or error handling, leaving significant gaps for an AI agent.

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

Parameters3/5

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

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 parameter semantics beyond what's in the schema, which is acceptable given the high coverage, resulting in a baseline score of 3.

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 ('file or directory from a GitLab project'), making the purpose immediately understandable. It doesn't specifically differentiate from sibling tools like 'get_repository_tree' or 'get_project', but the focus on file/directory contents is reasonably distinct.

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 like 'get_repository_tree' (which might list directory contents) or 'get_project' (which retrieves project metadata). The description implies usage for retrieving file/directory contents but offers no explicit context or exclusions.

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

get_issueB

Get details of a specific issue in a GitLab project

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID or URL-encoded path
issue_iidYesThe internal ID of the project issue

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure but only states the basic action. It doesn't mention whether this is a read-only operation (implied but not explicit), what authentication/permissions are required, rate limits, error conditions, or what details are returned (e.g., fields, format). For a retrieval tool with zero annotation coverage, this is insufficient behavioral context.

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

Conciseness5/5

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

The description is a single, efficient sentence that immediately states the tool's purpose without any wasted words. It's appropriately sized for a simple retrieval operation and front-loads 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.

Completeness3/5

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

For a simple retrieval tool with 2 fully documented parameters but no annotations and no output schema, the description is minimally adequate. It states what the tool does but lacks behavioral context (e.g., permissions, error handling) and doesn't explain return values, which would be helpful given the absence of an output schema. The description meets basic requirements but leaves gaps in 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%, so the schema fully documents both parameters (project_id and issue_iid) with clear descriptions. The description adds no additional parameter information beyond what's in the schema, which is acceptable given the high coverage, resulting in a baseline score of 3.

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 ('Get details') and resource ('specific issue in a GitLab project'), making the purpose immediately understandable. However, it doesn't explicitly distinguish this from sibling tools like 'list_issues' (which retrieves multiple issues) or 'get_issue_link' (which focuses on relationships), leaving some ambiguity about when to use this specific retrieval tool versus 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?

The description provides no guidance on when to use this tool versus alternatives like 'list_issues' for multiple issues or 'get_issue_link' for issue relationships. It also doesn't mention prerequisites (e.g., needing project access) 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.

get_labelC

Get a single label from a project

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID or URL-encoded path
label_idYesThe ID or title of a project's label
include_ancestor_groupsNoInclude ancestor groups

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 a label but doesn't describe what information is returned, error conditions, authentication needs, rate limits, or whether it's a read-only operation. For a retrieval tool with zero 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 ('Get a single label from a project'), making it easy to parse quickly. Every word earns its place, and there's no redundancy or 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 lack of annotations and output schema, the description is incomplete for a retrieval tool. It doesn't explain what data is returned (e.g., label details like name, color), potential errors, or how the optional 'include_ancestor_groups' parameter affects the output. For a tool with three parameters and no structured output information, 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 the three parameters (project_id, label_id, include_ancestor_groups). The description adds no additional meaning beyond implying that 'label_id' identifies the label to retrieve. It doesn't clarify parameter interactions or usage examples, resulting in a baseline score of 3 since 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 ('Get') and resource ('a single label from a project'), making the purpose understandable. It distinguishes from siblings like 'list_labels' (which retrieves multiple labels) and 'create_label' (which creates new labels), though it doesn't explicitly mention these alternatives. The description is specific but could be more precise about what 'Get' entails (e.g., retrieve details).

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 sibling tools like 'list_labels' for multiple labels or 'update_label' for modifications, nor does it specify prerequisites or appropriate contexts. The agent must infer usage from the tool name alone, which is insufficient for optimal selection.

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

get_merge_requestB

Get details of a merge request (Either mergeRequestIid or branchName must be provided)

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID or complete URL-encoded path to project
merge_request_iidNoThe IID of a merge request
source_branchNoSource branch name

TDQS

B3.2/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 only mentions the parameter requirement without describing what 'details' are returned, whether this is a read-only operation, authentication needs, error conditions, or rate limits. For a tool with 3 parameters and no 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.

Conciseness4/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. However, the parenthetical note about parameters could be better integrated, and there's a minor terminology mismatch ('branchName' vs 'source_branch'). Overall, it's appropriately concise with minimal waste.

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

Completeness3/5

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

Given 3 parameters with 100% schema coverage but no annotations and no output schema, the description is minimally adequate. It covers the basic purpose and parameter requirement but lacks behavioral context about what 'details' means, authentication requirements, or error handling. For a read operation with no output schema, more information about return values would be helpful.

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 marginal value by clarifying the either/or relationship between mergeRequestIid and source_branch (though it incorrectly references 'branchName' instead of 'source_branch'), but doesn't provide additional semantic context beyond what's in 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 verb 'Get' and resource 'details of a merge request', making the purpose unambiguous. It distinguishes from sibling tools like 'list_merge_requests' by focusing on retrieving details of a specific merge request rather than listing multiple. However, it doesn't explicitly differentiate from 'get_merge_request_diffs' which also retrieves merge request information.

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

Usage Guidelines3/5

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

The description provides implied usage guidance by stating 'Either mergeRequestIid or branchName must be provided', which helps understand parameter requirements. However, it doesn't explicitly state when to use this tool versus alternatives like 'get_merge_request_diffs' or 'list_merge_requests', nor does it mention prerequisites or contextual constraints beyond the parameter requirement.

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

get_merge_request_diffsB

Get the changes/diffs of a merge request (Either mergeRequestIid or branchName must be provided)

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID or complete URL-encoded path to project
merge_request_iidNoThe IID of a merge request
source_branchNoSource branch name
viewNoDiff view type

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions the need for 'mergeRequestIid or branchName' but doesn't describe what the tool returns (e.g., diff format, pagination, error handling), whether it requires authentication, or any rate limits. This leaves significant gaps for a tool that likely fetches detailed data.

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 and includes essential parameter guidance. There is no wasted text, and it's structured to convey key information immediately.

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 fetching merge request diffs (which could involve large data sets or specific formats), no annotations, and no output schema, the description is incomplete. It lacks details on return values, error conditions, or behavioral traits, making it inadequate for full agent understanding without additional 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 parameters thoroughly. The description adds minimal value by implying that 'mergeRequestIid or branchName' (likely referring to 'source_branch' in the schema) is required, but this is partially redundant with schema details. Baseline 3 is appropriate as 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 ('Get the changes/diffs') and resource ('of a merge request'), which is specific and unambiguous. However, it doesn't explicitly differentiate from sibling tools like 'get_branch_diffs' or 'get_merge_request', which might have overlapping functionality.

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

Usage Guidelines3/5

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

The description provides implied usage guidance by stating 'Either mergeRequestIid or branchName must be provided', which helps understand parameter requirements. However, it doesn't explicitly say when to use this tool versus alternatives like 'get_branch_diffs' or 'get_merge_request', nor does it mention any prerequisites or exclusions.

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

get_namespaceC

Get details of a namespace by ID or path

ParametersJSON Schema
NameRequiredDescriptionDefault
namespace_idYesNamespace ID or 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 this is a read operation ('Get details'), which implies safety, but doesn't cover aspects like error handling, authentication needs, rate limits, or what 'details' include. For a tool with zero annotation coverage, this is a significant gap in transparency.

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's front-loaded with the core action and resource, making it easy to parse. Every word earns its place without redundancy or fluff.

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 read operation with no annotations and no output schema, the description is incomplete. It doesn't explain what 'details' are returned, error conditions, or how this differs from similar tools. For a tool in a context with many siblings, more contextual information is needed to guide proper 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%, with the parameter 'namespace_id' documented as 'Namespace ID or full path'. The description adds minimal value by repeating 'by ID or path', which aligns with the schema but doesn't provide additional semantics like format examples or constraints. Baseline 3 is appropriate given 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 verb ('Get details') and resource ('namespace'), specifying it works 'by ID or path'. However, it doesn't distinguish this tool from sibling tools like 'get_project', 'get_issue', or 'verify_namespace', which all appear to retrieve specific resources. The purpose is clear but lacks sibling 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 sibling tools like 'list_namespaces' for browsing or 'verify_namespace' for validation, nor does it specify prerequisites or exclusions. Usage is implied by the name 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.

get_projectC

Get details of a specific project

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID or URL-encoded 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 ('Get details') but fails to describe what 'details' include, whether authentication is required, if there are rate limits, or how errors are handled. This is a significant gap for a tool with no 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 front-loads the core purpose without unnecessary words. Every part of the sentence ('Get details of a specific project') contributes directly to understanding the tool's function, making it optimally concise.

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 lack of annotations and output schema, the description is incomplete. It doesn't explain what 'details' are returned, potential error conditions, or authentication needs. For a tool that likely returns structured project data, this leaves the agent with insufficient context 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%, with the single parameter 'project_id' documented as 'Project ID or URL-encoded path'. The description adds no additional meaning beyond this, such as examples or format specifics, so it meets the baseline score for high schema coverage without compensating value.

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 ('Get') and resource ('details of a specific project'), making the purpose immediately understandable. However, it doesn't differentiate this tool from other 'get' tools like 'get_issue' or 'get_merge_request' beyond specifying 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 sibling tools like 'list_projects' for browsing projects or 'get_namespace' for related resources, nor does it specify prerequisites such as needing a project ID. This leaves the agent without contextual usage instructions.

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

get_repository_treeC

Get the repository tree for a GitLab project (list files and directories)

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesThe ID or URL-encoded path of the project
pathNoThe path inside the repository
refNoThe name of a repository branch or tag. Defaults to the default branch.
recursiveNoBoolean value to get a recursive tree
per_pageNoNumber of results to show per page
page_tokenNoThe tree record ID for pagination
paginationNoPagination method (keyset)

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 full burden. It states the action but lacks behavioral details: it doesn't mention pagination behavior (implied by parameters but not described), rate limits, authentication needs, whether it's read-only (implied by 'Get' but not explicit), or error conditions. The description adds minimal context beyond the basic action.

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 with a clarifying parenthetical. There is zero waste or redundancy, making it easy to parse quickly for an AI agent.

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 has 7 parameters, no annotations, and no output schema, the description is incomplete. It doesn't address behavioral aspects like pagination, authentication, or error handling, and lacks usage guidelines. For a tool with this complexity and no structured safety or output information, the description should provide more context to be fully helpful.

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 fully documented in the schema. The description adds no additional meaning about parameters beyond implying a tree structure with 'list files and directories'. It doesn't explain parameter interactions (e.g., how 'path' and 'recursive' combine) or provide examples, so it 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 verb ('Get') and resource ('repository tree for a GitLab project'), with the parenthetical clarifying it lists files and directories. It distinguishes from siblings like 'get_file_contents' (specific file) or 'list_projects' (projects not trees), but doesn't explicitly contrast with similar tools like '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 on when to use this tool versus alternatives is provided. It doesn't mention prerequisites (e.g., needing project access), exclusions, or compare with siblings like 'get_file_contents' for single files or 'list_projects' for project metadata. Usage is implied by the name and description alone.

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

get_usersC

Get GitLab user details by usernames

ParametersJSON Schema
NameRequiredDescriptionDefault
usernamesYesArray of usernames to search for

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 tool retrieves user details but doesn't describe what 'details' include (e.g., profile info, permissions), whether it's a read-only operation, potential errors (e.g., invalid usernames), or performance aspects like pagination. This leaves significant gaps for a tool with one required parameter.

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 action ('Get GitLab user details') without unnecessary words. Every part of the sentence contributes directly to understanding the tool's purpose, making it highly concise and well-structured.

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 lack of annotations and output schema, the description is incomplete for a tool that retrieves user details. It doesn't explain what data is returned, error handling, or behavioral traits like authentication requirements, which are critical for effective use. The high schema coverage helps with parameters but doesn't compensate for other 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?

The schema description coverage is 100%, with the parameter 'usernames' clearly documented as an array of strings to search for. The description adds minimal value beyond the schema by specifying 'by usernames,' but doesn't elaborate on format constraints (e.g., case sensitivity) or usage examples, meeting 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 verb ('Get') and resource ('GitLab user details') with a specific mechanism ('by usernames'), making the purpose unambiguous. However, it doesn't explicitly differentiate from sibling tools like 'get_namespace' or 'get_project' that also retrieve entity details, though the focus on users is clear.

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 needs), limitations (e.g., rate limits or scope), or compare it to sibling tools like 'list_namespaces' or 'get_project' for user-related queries, leaving usage context unclear.

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

list_group_projectsC

List projects in a GitLab group with filtering options

ParametersJSON Schema
NameRequiredDescriptionDefault
group_idYesGroup ID or path
include_subgroupsNoInclude projects from subgroups
searchNoSearch term to filter projects
order_byNoField to sort by
sortNoSort direction
archivedNoFilter for archived projects
visibilityNoFilter by project visibility
with_issues_enabledNoFilter projects with issues feature enabled
with_merge_requests_enabledNoFilter projects with merge requests feature enabled
min_access_levelNoFilter by minimum access level
with_programming_languageNoFilter by programming language
starredNoFilter by starred projects
statisticsNoInclude project statistics
with_custom_attributesNoInclude custom attributes
with_security_reportsNoInclude security reports
pageNoPage number for pagination (default: 1)
per_pageNoNumber of items per page (max: 100, 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 but offers minimal information. It mentions 'filtering options' but doesn't explain pagination behavior, rate limits, authentication requirements, or what the output format looks like. For a tool with 17 parameters and no output schema, this leaves significant behavioral aspects undocumented.

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

Conciseness4/5

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

The description is a single, efficient sentence that gets straight to the point. It's appropriately sized for what it communicates, though it could be more informative given the tool's complexity. There's no wasted verbiage or 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 tool with 17 parameters, no annotations, and no output schema, the description is insufficiently complete. It doesn't address the tool's scope relative to siblings, doesn't explain what the output contains, and provides minimal behavioral context. The agent would need to infer much about how to effectively use this tool from the parameter schema alone.

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 minimal value beyond the schema by mentioning 'filtering options' generally, but doesn't provide additional context about parameter interactions, default behaviors, or important constraints like the pagination limits mentioned in the 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 ('List projects') and target ('in a GitLab group'), making the purpose immediately understandable. It also mentions 'with filtering options' which adds specificity about functionality. However, it doesn't differentiate from the sibling 'list_projects' tool, which appears to serve a similar purpose at a different scope.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. With sibling tools like 'list_projects' and 'list_namespaces' available, there's no indication of when this group-specific listing is preferred over other listing methods. The description lacks any context about prerequisites, limitations, or typical use cases.

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

list_issue_discussionsC

List discussions for an issue in a GitLab project

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID or URL-encoded path
issue_iidYesThe internal ID of the project issue
pageNoPage number for pagination (default: 1)
per_pageNoNumber of items per page (max: 100, 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. While 'List' implies a read operation, it doesn't disclose important behavioral traits like authentication requirements, rate limits, pagination behavior beyond what's in the schema, error conditions, or response format. The description is minimal and lacks operational context needed for safe invocation.

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's appropriately sized for this tool's complexity and front-loads the core purpose immediately. Every word earns its place without redundancy or 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 tool with 4 parameters, no annotations, and no output schema, the description is incomplete. It doesn't address what the tool returns (discussion format, structure), error handling, authentication needs, or operational constraints. The minimal description leaves significant gaps for an agent to understand how to properly use this tool.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds no additional parameter semantics beyond what's in the schema - it doesn't explain relationships between parameters, provide examples, or clarify edge cases. 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 ('List discussions') and target resource ('for an issue in a GitLab project'), providing a specific verb+resource combination. It distinguishes this tool from siblings like 'list_issues' or 'mr_discussions' by focusing specifically on issue discussions, though it doesn't explicitly contrast with similar 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?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, context for usage, or differentiate from potential overlapping tools like 'get_issue' (which might include discussions) or 'create_issue_note' (for adding to discussions).

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

list_issuesC

List issues in a GitLab project with filtering options

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID or URL-encoded path
assignee_idNoReturn issues assigned to the given user ID
assignee_usernameNoReturn issues assigned to the given username
author_idNoReturn issues created by the given user ID
author_usernameNoReturn issues created by the given username
confidentialNoFilter confidential or public issues
created_afterNoReturn issues created after the given time
created_beforeNoReturn issues created before the given time
due_dateNoReturn issues that have the due date
labelsNoArray of label names
milestoneNoMilestone title
scopeNoReturn issues from a specific scope
searchNoSearch for specific terms
stateNoReturn issues with a specific state
updated_afterNoReturn issues updated after the given time
updated_beforeNoReturn issues updated before the given time
with_labels_detailsNoReturn more details for each label
pageNoPage number for pagination (default: 1)
per_pageNoNumber of items per page (max: 100, 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 mentions 'filtering options' but fails to detail critical behaviors: whether this is a read-only operation, pagination handling (implied by parameters but not explained), rate limits, authentication needs, or what the output format looks like. This is inadequate for a tool with 19 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, efficient sentence with zero wasted words. It front-loads the core purpose ('List issues in a GitLab project') and adds a concise qualifier ('with filtering options'), making it easy to parse and appropriately sized for its function.

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 (19 parameters, no output schema, no annotations), the description is incomplete. It lacks behavioral details (e.g., pagination, auth), output expectations, and usage guidelines. While the schema covers parameters well, the description doesn't compensate for missing annotations or output schema, leaving gaps for agent understanding.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema fully documents all 19 parameters. The description adds minimal value by noting 'filtering options,' which is already evident from the parameter names and descriptions. It doesn't provide additional context like parameter interactions or default behaviors beyond the schema, meeting the baseline for high 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 ('List issues') and resource ('in a GitLab project'), which provides a specific verb+resource combination. However, it doesn't differentiate from sibling tools like 'get_issue' (singular retrieval) or 'list_issue_links' (related metadata), leaving room for improvement in distinguishing scope.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., authentication), compare to siblings like 'search_repositories' for broader searches, or specify scenarios like bulk retrieval versus single-issue lookups, leaving the agent without usage context.

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

list_labelsC

List labels for a project

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID or URL-encoded path
with_countsNoWhether or not to include issue and merge request counts
include_ancestor_groupsNoInclude ancestor groups
searchNoKeyword to filter labels by

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 full burden. It states 'List labels' which implies a read-only operation, but doesn't disclose behavioral traits like pagination, rate limits, authentication requirements, error conditions, or what the output looks like (e.g., array of label objects). For a list operation 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?

Extremely concise with a single sentence 'List labels for a project' that front-loads the core purpose. There is zero wasted text, making it easy to parse quickly. 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?

Given no annotations and no output schema, the description is incomplete for a list tool with 4 parameters. It lacks details on behavior (e.g., pagination, sorting), output format, error handling, and usage context. While concise, it doesn't provide enough information for an agent to confidently invoke the tool beyond the basic purpose.

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 4 parameters. The description adds no parameter-specific information beyond implying 'project_id' is needed. With high schema coverage, the baseline is 3, as the description doesn't compensate but also doesn't detract.

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 'List labels for a project' clearly states the action (list) and resource (labels), with context (for a project). It distinguishes from siblings like 'get_label' (singular) and 'create_label', but doesn't explicitly differentiate from other list tools like 'list_issues' or 'list_merge_requests' beyond the resource type.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing project access), compare to 'get_label' for single label retrieval, or specify scenarios where filtering parameters are useful. The description alone provides minimal context for decision-making.

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 merge requests in a GitLab project with filtering options

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID or URL-encoded path
assignee_idNoReturns merge requests assigned to the given user ID
assignee_usernameNoReturns merge requests assigned to the given username
author_idNoReturns merge requests created by the given user ID
author_usernameNoReturns merge requests created by the given username
reviewer_idNoReturns merge requests which have the user as a reviewer
reviewer_usernameNoReturns merge requests which have the user as a reviewer
created_afterNoReturn merge requests created after the given time
created_beforeNoReturn merge requests created before the given time
updated_afterNoReturn merge requests updated after the given time
updated_beforeNoReturn merge requests updated before the given time
labelsNoArray of label names
milestoneNoMilestone title
scopeNoReturn merge requests from a specific scope
searchNoSearch for specific terms
stateNoReturn merge requests with a specific state
order_byNoReturn merge requests ordered by the given field
sortNoReturn merge requests sorted in ascending or descending order
target_branchNoReturn merge requests targeting a specific branch
source_branchNoReturn merge requests from a specific source branch
wipNoFilter merge requests against their wip status
with_labels_detailsNoReturn more details for each label
pageNoPage number for pagination (default: 1)
per_pageNoNumber of items per page (max: 100, 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 the tool lists merge requests with filtering, but doesn't describe key behaviors: it doesn't mention pagination (implied by 'page' and 'per_page' parameters but not explained), rate limits, authentication needs, error conditions, or what the output looks like (e.g., array of objects). 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 ('List merge requests in a GitLab project') and adds a useful qualifier ('with filtering options'). There's no wasted language 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 the complexity (24 parameters, no annotations, no output schema), the description is insufficient. It doesn't explain the tool's behavior beyond basic purpose, missing details on pagination, authentication, error handling, and output format. For a tool with many filtering options and no structured output schema, more context is needed to help an agent use it correctly.

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 detailed descriptions for all 24 parameters, including enums and defaults. The description adds minimal value beyond the schema, only generically mentioning 'filtering options' without explaining specific filters or their interactions. Since the schema does the heavy lifting, the baseline score of 3 is appropriate, though the description could have highlighted key parameters like 'project_id' as required.

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 ('merge requests in a GitLab project'), making the purpose immediately understandable. It also mentions 'filtering options' which hints at functionality. However, it doesn't explicitly differentiate from sibling tools like 'list_issues' or 'get_merge_request' beyond the resource type.

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 sibling tools like 'list_issues' for different resource types or 'get_merge_request' for retrieving a single merge request. There's no context about prerequisites, such as authentication or project access requirements.

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

list_namespacesC

List all namespaces available to the current user

ParametersJSON Schema
NameRequiredDescriptionDefault
searchNoSearch term for namespaces
ownedNoFilter for namespaces owned by current user
pageNoPage number for pagination (default: 1)
per_pageNoNumber of items per page (max: 100, default: 20)

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 mentions 'available to the current user', hinting at access control, but doesn't cover critical aspects like pagination behavior (implied by parameters but not described), rate limits, error conditions, or the format of returned data. This is inadequate for a list operation with multiple 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 with zero wasted words. It's front-loaded with the core purpose, making it easy to parse quickly. Every part of the sentence earns its place by specifying the action and scope.

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 no annotations and no output schema, the description is incomplete for a tool with four parameters and list functionality. It doesn't explain the return format (e.g., structure of namespace objects), pagination behavior, or error handling. For a read operation in a context with many sibling tools, more guidance is needed to ensure correct usage.

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 input schema fully documents all four parameters (search, owned, page, per_page). The description adds no additional parameter semantics beyond what's in the schema, such as how 'owned' interacts with 'available to the current user'. 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 verb ('List') and resource ('namespaces available to the current user'), making the purpose specific and understandable. However, it doesn't explicitly differentiate from sibling tools like 'get_namespace' (singular) or 'verify_namespace', which could cause confusion 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 'get_namespace' (for a single namespace) or 'verify_namespace'. It lacks context about prerequisites, typical use cases, or exclusions, leaving the agent to 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.

list_projectsC

List projects accessible by the current user

ParametersJSON Schema
NameRequiredDescriptionDefault
searchNoSearch term for projects
search_namespacesNoNeeds to be true if search is full path
ownedNoFilter for projects owned by current user
membershipNoFilter for projects where current user is a member
simpleNoReturn only limited fields
archivedNoFilter for archived projects
visibilityNoFilter by project visibility
order_byNoReturn projects ordered by field
sortNoReturn projects sorted in ascending or descending order
with_issues_enabledNoFilter projects with issues feature enabled
with_merge_requests_enabledNoFilter projects with merge requests feature enabled
min_access_levelNoFilter by minimum access level
pageNoPage number for pagination (default: 1)
per_pageNoNumber of items per page (max: 100, default: 20)

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 full burden for behavioral disclosure. It states it 'List projects', implying a read-only operation, but doesn't mention pagination behavior (implied by 'page' and 'per_page' parameters), rate limits, authentication requirements, or response format. For a tool with 14 parameters and no annotations, this is a significant gap in transparency.

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 ('List projects accessible by the current user') with zero wasted words. It's appropriately sized for a list operation, 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?

Given the tool's complexity (14 parameters, no output schema, no annotations), the description is inadequate. It doesn't explain the return format, pagination defaults, or how parameters interact (e.g., combining 'owned' and 'membership'). For a list tool with rich filtering options, more context on behavior and output 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%, with detailed parameter descriptions in the input schema. The description adds no parameter-specific information beyond implying user accessibility, which aligns with parameters like 'owned' and 'membership'. Since the schema does the heavy lifting, the baseline score of 3 is appropriate, as the description doesn't compensate but doesn't detract either.

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 ('projects'), specifying they are 'accessible by the current user'. This distinguishes it from sibling tools like 'list_group_projects' or 'get_project' by indicating user-specific access, though it doesn't explicitly contrast with them. The purpose is unambiguous but lacks explicit sibling 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 like 'list_group_projects' or 'get_project'. It mentions 'accessible by the current user', which implies a user-centric view, but doesn't specify scenarios, prerequisites, or exclusions. Without explicit when/when-not instructions, usage context is minimal.

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

mr_discussionsC

List discussion items for a merge request

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID or complete URL-encoded path to project
merge_request_iidYesThe IID of a merge request
pageNoPage number for pagination (default: 1)
per_pageNoNumber of items per page (max: 100, 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 behavior, but doesn't mention pagination behavior (implied by parameters), rate limits, authentication requirements, or what format the discussion items return. For a tool with zero annotation coverage, 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 the core purpose without any 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?

Given no annotations, no output schema, and a tool that returns discussion data, the description is insufficient. It doesn't explain what 'discussion items' include (comments, threads, notes?), the return format, or any behavioral constraints. For a tool that likely returns complex discussion 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?

Schema description coverage is 100%, so the schema already fully documents all 4 parameters. The description adds no additional parameter semantics beyond what's in the schema - it doesn't explain relationships between parameters or provide usage examples. This meets the baseline of 3 when schema coverage is high.

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 target resource ('discussion items for a merge request'), which is specific and unambiguous. However, it doesn't distinguish this tool from sibling tools like 'list_issue_discussions' or 'list_merge_requests', which reduces its score from a perfect 5.

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's no mention of prerequisites, when this tool is appropriate versus other discussion-related tools, or any exclusions. 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_filesB

Push multiple files to a GitLab project in a single commit

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

TDQS

B3.4/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 basic operation. It doesn't disclose critical behavioral traits: whether this requires specific permissions, what happens on conflicts (overwrites existing files?), rate limits, error handling, or what the response looks like. 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 front-loads the core purpose with zero wasted words. Every element ('push multiple files', 'GitLab project', 'single commit') earns its place by clarifying scope and behavior.

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 4 required parameters, no annotations, and no output schema, the description is incomplete. It lacks behavioral context (permissions, conflicts, response format) and doesn't compensate for the missing structured data. While concise, it doesn't provide enough information 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 all parameters are documented in the schema. The description adds no additional parameter semantics beyond implying batch operations ('multiple files') and atomic commits ('single commit'), which is already clear from the schema's 'files' array and 'commit_message' parameter. 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.

Purpose5/5

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

The description clearly states the specific action ('push multiple files'), target resource ('to a GitLab project'), and scope ('in a single commit'). It distinguishes from sibling tools like 'create_or_update_file' (which handles individual files) by emphasizing batch operations and atomic commits.

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

Usage Guidelines3/5

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

The description implies usage for batch file operations with atomic commits, but doesn't explicitly state when to use this vs. alternatives like 'create_or_update_file' for single files or other GitLab operations. No guidance on prerequisites, error conditions, or exclusions is provided.

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 items per page (max: 100, 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 but only states the basic action. It doesn't mention whether this is a read-only operation, what authentication is needed, rate limits, pagination behavior beyond what's in the schema, or what the return format looks like. This leaves significant behavioral gaps for a search 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 states the core functionality without any wasted words. It's appropriately sized for a straightforward search tool and gets directly to the point.

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 no annotations and no output schema, the description is inadequate. It doesn't explain what constitutes a 'GitLab project' in this context, how search results are structured, what fields are searchable, or provide any examples. The agent would need to guess about important behavioral aspects.

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 fully documents all three parameters. The description doesn't add any additional meaning about parameter usage, search syntax, or result filtering beyond what the schema provides. 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 verb ('Search') and resource ('GitLab projects'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'list_projects' or 'list_group_projects', which appear to serve similar listing functions, so it doesn't reach the highest clarity level.

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_projects' or 'list_group_projects'. There's no mention of search-specific use cases, prerequisites, or exclusions, leaving the agent with no contextual usage information.

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 issue in a GitLab project

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID or URL-encoded path
issue_iidYesThe internal ID of the project issue
titleNoThe title of the issue
descriptionNoThe description of the issue
assignee_idsNoArray of user IDs to assign issue to
confidentialNoSet the issue to be confidential
discussion_lockedNoFlag to lock discussions
due_dateNoDate the issue is due (YYYY-MM-DD)
labelsNoArray of label names
milestone_idNoMilestone ID to assign
state_eventNoUpdate issue state (close/reopen)
weightNoWeight of the issue (0-9)

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 'Update' implying mutation but doesn't disclose permissions needed, whether changes are reversible, rate limits, or what happens to unspecified fields. 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 zero wasted words. It's front-loaded with the core purpose and appropriately sized for the tool's complexity.

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 12 parameters, no annotations, and no output schema, the description is insufficient. It lacks behavioral context (e.g., error handling, side effects), usage guidance, and output expectations, leaving significant gaps for an AI agent to operate 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 fully documents all 12 parameters. The description adds no parameter-specific information beyond what's in the schema, such as explaining interactions between fields or default behaviors. Baseline 3 is appropriate when schema does all the 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 ('Update') and resource ('an issue in a GitLab project'), providing a specific verb+resource combination. However, it doesn't differentiate from sibling tools like 'update_issue_note' or 'update_label', which also update GitLab resources but target different entities.

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 issue access), exclusions (e.g., not for creating issues), or comparisons with siblings like 'update_issue_note' for note-specific updates.

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

update_issue_noteC

Modify an existing issue thread note

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID or complete URL-encoded path to project
issue_iidYesThe IID of an issue
discussion_idYesThe ID of a thread
note_idYesThe ID of a thread note
bodyYesThe content of the note or reply

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. 'Modify' implies a mutation, but the description doesn't specify permissions required, whether changes are reversible, rate limits, or what happens on success/failure. This leaves significant gaps for a tool that alters data.

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'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 no annotations and no output schema, the description is incomplete. It lacks critical context like behavioral traits (e.g., error handling, side effects), usage guidelines relative to siblings, and output expectations, leaving the agent under-informed.

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 5 parameters. The description adds no additional meaning about parameters beyond what the schema provides, such as explaining relationships between 'discussion_id' and 'note_id'. 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 verb ('Modify') and resource ('an existing issue thread note'), making the purpose understandable. However, it doesn't differentiate from sibling tools like 'update_issue' or 'create_issue_note' beyond the basic resource specification.

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_issue_note' or 'update_issue'. It lacks context about prerequisites, such as needing an existing note to modify, or exclusions for when this tool is inappropriate.

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 project

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID or URL-encoded path
label_idYesThe ID or title of a project's label
new_nameNoThe new name of the label
colorNoThe color of the label given in 6-digit hex notation with leading '#' sign
descriptionNoThe new description of the label
priorityNoThe new priority of the label

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 'Update' which implies mutation, but doesn't specify required permissions, whether changes are reversible, error handling, or response format. 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, clear sentence that efficiently communicates the core purpose without unnecessary words. It's appropriately sized and front-loaded, with every word earning 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 no annotations and no output schema, the description is inadequate. It doesn't explain what happens during the update process, what the response contains, error conditions, or how it differs from related operations. The context demands more comprehensive guidance than what's 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?

Schema description coverage is 100%, so the schema already documents all 6 parameters thoroughly. The description doesn't add any parameter-specific information beyond what's in the schema, such as explaining relationships between parameters or providing examples. 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 ('Update') and resource ('an existing label in a project'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'create_label' or 'delete_label' beyond the verb difference, which is why it doesn't reach the highest 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 'create_label' or 'delete_label', nor does it mention prerequisites or contextual constraints. It simply states what the tool does without indicating appropriate usage 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 a merge request (Either mergeRequestIid or branchName must be provided)

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID or complete URL-encoded path to project
merge_request_iidNoThe IID of a merge request
source_branchNoSource branch name
titleNoThe title of the merge request
descriptionNoThe description of the merge request
target_branchNoThe target branch
assignee_idsNoThe ID of the users to assign the MR to
labelsNoLabels for the MR
state_eventNoNew state (close/reopen) for the MR
remove_source_branchNoFlag indicating if the source branch should be removed
squashNoSquash commits into a single commit when merging
draftNoWork in progress merge request

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 doesn't mention that this is a mutation operation (implied by 'Update'), what permissions are required, whether changes are reversible, or what the response contains. For a tool with 12 parameters that modifies merge requests, this lack of behavioral context 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 extremely concise - a single sentence that communicates the essential constraint. There's no wasted language or unnecessary elaboration. It's front-loaded with the core requirement, though this brevity comes at the cost of completeness for other dimensions.

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 complex mutation tool with 12 parameters, no annotations, and no output schema, the description is inadequate. It doesn't explain what 'updating' entails, what fields can be modified, what happens when different parameter combinations are used, or what the tool returns. The agent would struggle to use this tool effectively without significant trial and error.

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 minimal value beyond the input schema, which has 100% description coverage. It mentions that either mergeRequestIid or branchName must be provided, but this constraint isn't reflected in the schema's required fields (only project_id is required). The description doesn't explain parameter interactions, dependencies, or provide additional context about what fields are actually updatable.

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 ('Update') and resource ('merge request'), making the purpose immediately understandable. It distinguishes this tool from sibling tools like 'create_merge_request' by focusing on modification rather than creation. However, it doesn't specify what aspects can be updated beyond the identification requirement.

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 minimal guidance about when to use this tool, only stating that either mergeRequestIid or branchName must be provided. It doesn't explain when to choose this over alternatives like 'update_issue' for related work, or clarify prerequisites beyond the required project_id parameter. No explicit when-not-to-use guidance is present.

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

update_merge_request_noteC

Modify an existing merge request thread note

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID or complete URL-encoded path to project
merge_request_iidYesThe IID of a merge request
discussion_idYesThe ID of a thread
note_idYesThe ID of a thread note
bodyNoThe content of the note or reply
resolvedNoResolve or unresolve the note

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 'Modify an existing merge request thread note', which implies a mutation operation, but lacks critical details: it doesn't specify required permissions, whether changes are reversible, potential side effects (e.g., notifications), or error conditions. For a tool with 6 parameters and no annotation coverage, this is a significant gap in transparency.

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 directly states the tool's purpose without fluff or repetition. It's appropriately sized for a tool with a clear name and well-documented schema, making it easy to parse and understand 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 (6 parameters, mutation operation) and lack of annotations and output schema, the description is incomplete. It doesn't address behavioral aspects like permissions, side effects, or return values, which are crucial for a tool that modifies data. The high schema coverage helps with parameters, but overall context for safe and effective use is lacking.

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, with each parameter clearly documented (e.g., 'Project ID or complete URL-encoded path to project'). The description adds no additional meaning beyond what the schema provides—it doesn't explain parameter relationships, dependencies, or usage examples. Given the high schema coverage, the baseline score of 3 is appropriate, as 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 ('Modify') and the resource ('an existing merge request thread note'), which is specific and unambiguous. It distinguishes this from sibling tools like 'create_merge_request_note' or 'update_issue_note' by specifying it's for modifying existing notes, not creating new ones or updating other entities. However, it doesn't explicitly differentiate from all siblings (e.g., 'update_issue_note' has a similar pattern), so it's not a perfect 5.

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 note), exclusions (e.g., not for creating notes), or compare it to similar tools like 'update_issue_note'. The agent must infer usage from the name and context alone, which is insufficient for clear decision-making.

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

verify_namespaceC

Verify if a namespace path exists

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesNamespace path to verify

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 verifies existence but doesn't describe what 'verify' entails—whether it returns a boolean, an error on non-existence, or metadata. It also omits details like permissions needed, rate limits, or side effects, which are critical for a tool with no 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, clear sentence with zero waste—it directly states the tool's purpose without unnecessary words. It's appropriately sized for a simple tool and front-loaded with 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?

Given the tool's simplicity (1 parameter, no output schema, no annotations), the description is incomplete. It lacks details on return values, error handling, or behavioral context, which are necessary for effective use. Without annotations or output schema, the agent has 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.

Parameters3/5

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

The description adds minimal meaning beyond the input schema, which has 100% coverage for the single parameter 'path'. It implies the parameter is used for verification but doesn't specify format constraints, examples, or edge cases. With high schema coverage, the baseline is 3, as the schema already documents the parameter 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 tool's purpose as verifying if a namespace path exists, using a specific verb ('verify') and resource ('namespace path'). It distinguishes from sibling tools like 'get_namespace' or 'list_namespaces' by focusing on existence checking rather than retrieval or listing. However, it doesn't explicitly differentiate from potential similar tools beyond the sibling list provided.

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, context for usage, or compare with siblings like 'get_namespace' or 'list_namespaces' that might serve similar purposes. The agent must infer usage from the purpose alone.

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

TDQS

C2.9/5.0
Disambiguation4/5

Most tools have distinct purposes targeting specific resources and actions, but there is some overlap between note-related tools (e.g., create_issue_note, create_note, create_merge_request_note) and discussion tools (list_issue_discussions, mr_discussions) that could cause confusion. However, descriptions generally clarify boundaries.

Naming Consistency5/5

Tool names follow a highly consistent verb_noun pattern throughout, with clear and predictable naming (e.g., create_issue, get_merge_request, list_labels). There are no deviations in style or convention, making the set easy to navigate.

Tool Count2/5

With 45 tools, the count is excessive for a GitLab server, leading to potential cognitive overload and redundancy. While GitLab is feature-rich, many tools could be consolidated (e.g., note and discussion tools), making the surface feel bloated and less scoped.

Completeness5/5

The tool set provides comprehensive coverage of GitLab's core functionalities, including full CRUD operations for issues, merge requests, labels, and projects, along with advanced features like time tracking, file management, and namespace handling. No obvious gaps are present for 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

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

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