Skip to main content
Glama

list_projects

Read-only

Lists GitLab projects accessible to the current user, with filters for ownership, membership, topic, visibility, and search. Use it to browse or narrow projects; fetch a known project with get tool.

Instructions

List projects accessible by the current user. For one known resource, use the matching get tool.

Input Schema

NameRequiredDescriptionDefault
pageNoPage number (default 1)
sortNoasc or desc
ownedNoOwned by current user
topicNoTopic tag
searchNoSearch term
simpleNoLimited fields only
summaryNoIf true, return only high-signal fields (id, iid, title, state, web_url, …). Default false keeps the full GitLab JSON.
archivedNoArchived projects
jmespathNoOptional JMESPath expression filtering the JSON result before return.
order_byNoSort field
per_pageNoItems per page (max 100, default 20)
membershipNoCurrent user is a member
visibilityNopublic, internal, or private
min_access_levelNoMinimum access level
search_namespacesNoSet true when search is a full path
with_issues_enabledNoIssues enabled
with_merge_requests_enabledNoMerge requests enabled

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed15 schema fields changedv2.3.22
    • changedInput schema / properties / archived / description
      Previous value: -"Filter for archived projects"New value: +"Archived projects"
    • changedInput schema / properties / membership / description
      Previous value: -"Filter for projects where current user is a member"New value: +"Current user is a member"
    • changedInput schema / properties / min_access_level / description
      Previous value: -"Filter by minimum access level"New value: +"Minimum access level"
    • changedInput schema / properties / order_by / description
      Previous value: -"Return projects ordered by field"New value: +"Sort field"
    • changedInput schema / properties / owned / description
      Previous value: -"Filter for projects owned by current user"New value: +"Owned by current user"
    • changedInput schema / properties / page / description
      Previous value: -"Page number for pagination (default: 1)"New value: +"Page number (default 1)"
    • changedInput schema / properties / per_page / description
      Previous value: -"Number of items per page (max: 100, default: 20)"New value: +"Items per page (max 100, default 20)"
    • changedInput schema / properties / search / description
      Previous value: -"Search term for projects"New value: +"Search term"
    • changedInput schema / properties / search_namespaces / description
      Previous value: -"Needs to be true if search is full path"New value: +"Set true when search is a full path"
    • changedInput schema / properties / simple / description
      Previous value: -"Return only limited fields"New value: +"Limited fields only"
    • changedInput schema / properties / sort / description
      Previous value: -"Return projects sorted in ascending or descending order"New value: +"asc or desc"
    • changedInput schema / properties / topic / description
      Previous value: -"Filter by topic (projects tagged with this topic)"New value: +"Topic tag"
    • changedInput schema / properties / visibility / description
      Previous value: -"Filter by project visibility"New value: +"public, internal, or private"
    • changedInput schema / properties / with_issues_enabled / description
      Previous value: -"Filter projects with issues feature enabled"New value: +"Issues enabled"
    • changedInput schema / properties / with_merge_requests_enabled / description
      Previous value: -"Filter projects with merge requests feature enabled"New value: +"Merge requests enabled"
  2. Changed1 schema field changedv2.3.8
    • addedInput schema / properties / summary
      Added value: +{
      +  "description": "If true, return only high-signal fields (id, iid, title, state, web_url, …). Default false keeps the full GitLab JSON.",
      +  "type": "boolean"
      +}
  3. Changed1 schema field changedv2.1.66
    • addedInput schema / properties / jmespath
      Added value: +{
      +  "description": "Optional JMESPath expression filtering the JSON result before return.",
      +  "type": "string"
      +}
  4. Addedv2.1.18
  5. Removedv2.1.14
  6. Addedv2.1.11
  7. Removedv2.1.10
  8. Changed2 schema fields changedv2.1.9
    • removedInput schema / additionalProperties
      Removed value: -false
    • addedInput schema / properties / topic
      Added value: +{
      +  "description": "Filter by topic (projects tagged with this topic)",
      +  "type": "string"
      +}
  9. First observedv1.0.0

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety and reach are covered. The description adds the access-scoping behavior (results limited to what the current user can see), but says nothing about pagination defaults, result volume, or the fact that the default response is full, potentially large JSON.

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

Conciseness5/5

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

Two short sentences with zero filler, and the primary scope statement is front-loaded ahead of the alternative redirection. Nothing is redundant or buried.

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 17-parameter list tool with no output schema, the description covers only the core purpose and the get-vs-list split. Subtle knobs like summary vs simple vs jmespath, and paging via page/per_page, are left entirely to the schema; adequate because of full schema coverage, but thin for the tool's complexity.

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

Parameters3/5

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

Schema coverage is 100%, so every one of the 17 parameters already carries its own description and enums. The description adds no meaning about the filters (owned, membership, visibility, min_access_level) or the interaction between summary, simple, and jmespath, so the baseline 3 applies.

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?

States a specific verb+resource ("List projects") and a scope ("accessible by the current user"), which distinguishes it from the mutation siblings. The second sentence routes away from it for single-resource lookups, though it says "the matching get tool" rather than naming get_project, so differentiation is slightly indirect.

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

Usage Guidelines4/5

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

Gives a clear when-to-use (enumerating accessible projects) and an explicit when-not (a single known resource should use the corresponding get tool). It does not address the overlap with other search-style siblings such as search_repositories or list_project_members, nor does it note when filters should be preferred over client-side filtering.

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