Skip to main content
Glama

List projects

list_projects
Read-onlyIdempotent

List the projects accessible to the calling principal. Returns id, slug, name, status, createdAt for each. An empty list means the workspace is not set up yet: no mission can run until the person connects GitHub and a model key and creates a project in the SHIP console. Call get_setup_progress and give the person the console page of its next step.

Input Schema

NameRequiredDescriptionDefault
limitNoMax results (default 20)
cursorNoOpaque pagination cursor from a previous call

Output Schema

NameRequiredDescriptionDefault
dataYes
nextCursorYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / properties / data / items / properties / tracker / enum
      Previous value: -[
      -  "linear",
      -  "github-issues",
      -  "none"
      -]New value: +[
      +  "linear",
      +  "github-issues",
      +  "jira",
      +  "none"
      +]
  2. First observed

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, closed-world, non-destructive behavior, so the description does not need to restate safety. It adds genuine behavioral context the annotations lack: the exact fields returned and, importantly, the semantics of an empty result as a not-yet-configured workspace with a hard consequence ('no mission can run').

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?

Three sentences, front-loaded with purpose, then return shape, then the remediation path for the empty case. Minor redundancy in listing return fields when an output schema already exists, but nothing is padding.

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

Completeness4/5

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

Output schema and annotations carry the return shape and safety profile, so the description correctly focuses on the non-obvious empty-state interpretation and the follow-up call. Pagination behavior for the cursor is left entirely to the schema, a small remaining gap.

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% and both parameters (limit with default 20 and max 100, and the opaque cursor) are fully documented in the schema. The description adds nothing about pagination mechanics or how to iterate with the cursor, so the baseline of 3 is warranted.

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?

States a specific verb and resource ('List the projects accessible to the calling principal'), names the scope of accessibility, and enumerates the returned fields. It is trivially distinguishable from the singular get_project sibling and from the other list_* tools, which target different resources.

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

Usage Guidelines4/5

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

Gives an explicit conditional branch: an empty result means the workspace is not set up, and the agent should call get_setup_progress and surface the console page of its next step. It does not explicitly say when to prefer get_project over this tool, but the list-vs-get distinction is self-evident.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.