Skip to main content
Glama

Get project vulnerabilities

gitlab_get_project_vulnerabilities
Read-onlyIdempotent

Retrieve security vulnerabilities for a specific GitLab project to support risk review and triage, with optional pagination and package-manager filtering.

Instructions

Get a project's security vulnerabilities (Ultimate).

GET /projects/{project_id}/vulnerabilities

Args: **kwargs: project_id (required); optional pagination.

Returns: Response: wrapper containing the original response and the parsed vulnerabilities (list of dicts).

Raises: MissingParameterError: If project_id is missing. ParameterError: If invalid parameters are provided.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "gitlab_get_project_vulnerabilities"
  }
}

Input Schema

NameRequiredDescriptionDefault
dataNo
pageNo
group_idNo
per_pageNo
max_pagesNo
project_idNo
package_managerNo
vulnerability_idNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv27.3.20
    • removedInput schema / properties / api_parameters
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "additionalProperties": true,
      -      "type": "object"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "default": null
      -}
  2. First observedv27.3.13

TDQS

B3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds real behavioral context beyond that: the wrapped response shape (original response plus parsed list of dicts) and the specific error types raised. It says nothing about pagination defaults, rate limits, or result ordering, which keeps it at a middling score.

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

Conciseness3/5

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

The purpose sentence is front-loaded and the Raises/Returns blocks are useful, so nothing is grossly wasted. However, the docstring-style 'Args: **kwargs' framing and the raw endpoint path are boilerplate that add little for an agent, and the section ordering buries behavior after a signature line.

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?

This is a read-only listing tool with no output schema, so the Returns block is genuinely valuable and partially compensates. Against that, 8 parameters at 0% schema coverage with half of them undocumented, plus a required/nullable contradiction on project_id, leaves too much for an agent to guess when constructing the call.

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

Parameters2/5

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

Schema description coverage is 0% across 8 parameters, so the description carries the full burden and does not meet it. It documents only project_id and vaguely 'optional pagination', leaving data, group_id, package_manager, vulnerability_id and max_pages entirely unexplained — several of which are non-obvious on a project-scoped vulnerabilities endpoint. It also claims project_id is required while the schema marks it nullable with a null default, an inconsistency the agent must resolve alone.

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 opening sentence names a specific verb and resource ('Get a project's security vulnerabilities') and adds the Ultimate tier qualifier plus the underlying endpoint path. It does not, however, distinguish itself from close siblings such as gitlab_get_group_vulnerabilities or gitlab_get_vulnerability, leaving scope boundaries to be inferred.

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 via the Ultimate license note and the required project_id, which tells the agent when the call is even permissible. It offers no explicit guidance on when to pick this over the group-level or single-vulnerability siblings, and no exclusions or prerequisites beyond the tier note.

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

Deploy Server

Other Tools