Skip to main content
Glama

list_projects

Read-only

Returns all of the user's projects. ONLY call this when the user explicitly asks to see all projects or wants to switch projects — NOT when they say "show me the list" (that means get_items). Show the display field to the user verbatim in a code block. If has_more is true, call again with cursor to get more.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
cursorNoPagination cursor from a previous list_projects response. Omit for the first page.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
displayYesPre-formatted project list. Show this to the user verbatim in a code block.
messageNo
has_moreYes
projectsYes
next_cursorYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • addedOutput schema / properties / display
      Added value: +{
      +  "description": "Pre-formatted project list. Show this to the user verbatim in a code block.",
      +  "type": "string"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "projects",
      -  "has_more",
      -  "next_cursor"
      -]New value: +[
      +  "projects",
      +  "has_more",
      +  "next_cursor",
      +  "display"
      +]
  2. Changed2 schema fields changed
    • removedOutput schema / properties / display
      Removed value: -{
      -  "description": "Pre-formatted display text for this response.",
      -  "type": "string"
      -}
    • changedOutput schema / required
      Previous value: -[
      -  "projects",
      -  "has_more",
      -  "next_cursor",
      -  "display"
      -]New value: +[
      +  "projects",
      +  "has_more",
      +  "next_cursor"
      +]
  3. Changed1 schema field changed
    • changedOutput schema / properties / display / description
      Previous value: -"Pre-formatted project list. Show this to the user verbatim in a code block."New value: +"Pre-formatted display text for this response."
  4. First observed

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds valuable behavioral context: it explains the pagination contract (has_more and cursor usage), specifies that the result should be presented via the `display` field, and clarifies the intended scope (all projects). These go beyond what annotations convey, though it doesn't describe the exact return structure (which the output schema handles).

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, tightly packed paragraph that leads with the primary purpose, then immediately gives usage exclusions, display instructions, and pagination guidance. Every sentence earns its place; there is no filler or redundancy.

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

Completeness5/5

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

Given the tool's simplicity, the presence of an output schema, and the annotations covering safety, the description covers all essential aspects: what it does, when to use it, how to present results, and how to paginate. An agent has everything needed to invoke it correctly without further inference.

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 sole parameter `cursor` is fully described in the schema (100% coverage), so the baseline is 3. The description reinforces pagination behavior ('If has_more is true, call again with cursor') but does not add new meaning about the parameter's format or semantics beyond the schema's own explanation. It's adequate but not additive.

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 tool returns all of the user's projects, and explicitly differentiates it from get_items by explaining when it should not be used. It names a specific verb and resource, and the sibling distinction is explicit, so an agent can unambiguously select it.

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

Usage Guidelines5/5

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

The description gives explicit when-to-use and when-not-to-use conditions, naming the alternative tool (get_items) and the exact user phrasing that triggers this tool vs. the sibling. It also provides specific instructions for presenting the result (show the `display` field verbatim in a code block) and pagination handling, leaving no ambiguity about invocation context.

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.

Resources