Skip to main content
Glama

list_documents

Read-onlyIdempotent

List OpenProject documents with optional project filtering and title search, returning paginated results and descriptions capped by a text limit.

Instructions

List documents, optionally filtered to a single project or by title search.

total is only the count of allowed documents returned on THIS page, not a full count of all matches; the search stops as soon as it has enough, so an exact total would need an extra full walk. Page until next_offset is null.

text_limit caps each document's description at that many characters (default: the server's configured OPENPROJECT_TEXT_LIMIT, NOT unlimited -- unlike get_document's single-item default). When text is cut, description_truncated is true and description_length reports the real length.

Input Schema

NameRequiredDescriptionDefault
limitNoPage size, capped at OPENPROJECT_MAX_PAGE_SIZE.
offsetNo1-based page number; pass the previous result's next_offset.
searchNo
selectNoFields to return; a requested unset field comes back as null. Allowed: attachment_count, can_update, created_at, description, description_length, description_truncated, id, project, project_id, title.
projectNoProject identifier, id, or name; a unique part of a name or identifier also matches.
text_limitNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv0.4.4
  2. Removedv0.4.0
  3. Changed1 schema field changedv0.3.7
    • addedInput schema / additionalProperties
      Added value: +false
  4. Addedv0.3.3
  5. Removedv0.3.0
  6. Changed1 schema field changedv0.2.3
    • changedOutput schema / (root)
      Previous value: -{
      -  "$defs": {
      -    "DocumentSummary": {
      -      "properties": {
      -        "attachment_count": {
      -          "title": "Attachment Count",
      -          "type": "integer"
      -        },
      -        "can_update": {
      -          "title": "Can Update",
      -          "type": "boolean"
      -        },
      -        "created_at": {
      -          "anyOf": [
      -            {
      -              "type": "string"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ],
      -          "title": "Created At"
      -        },
      -        "description": {
      -          "anyOf": [
      -            {
      -              "type": "string"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ],
      -          "title": "Description"
      -        },
      -        "id": {
      -          "title": "Id",
      -          "type": "integer"
      -        },
      -        "project": {
      -          "anyOf": [
      -            {
      -              "type": "string"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ],
      -          "title": "Project"
      -        },
      -        "project_id": {
      -          "anyOf": [
      -            {
      -              "type": "integer"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ],
      -          "title": "Project Id"
      -        },
      -        "title": {
      -          "title": "Title",
      -          "type": "string"
      -        },
      -        "url": {
      -          "title": "Url",
      -          "type": "string"
      -        }
      -      },
      -      "required": [
      -        "id",
      -        "title",
      -        "project_id",
      -        "project",
      -        "description",
      -        "created_at",
      -        "attachment_count",
      -        "can_update",
      -        "url"
      -      ],
      -      "title": "DocumentSummary",
      -      "type": "object"
      -    }
      -  },
      -  "properties": {
      -    "count": {
      -      "title": "Count",
      -      "type": "integer"
      -    },
      -    "limit": {
      -      "title": "Limit",
      -      "type": "integer"
      -    },
      -    "next_offset": {
      -      "anyOf": [
      -        {
      -          "type": "integer"
      -        },
      -        {
      -          "type": "null"
      -        }
      -      ],
      -      "title": "Next Offset"
      -    },
      -    "offset": {
      -      "title": "Offset",
      -      "type": "integer"
      -    },
      -    "results": {
      -      "items": {
      -        "$ref": "#/$defs/DocumentSummary"
      -      },
      -      "title": "Results",
      -      "type": "array"
      -    },
      -    "total": {
      -      "title": "Total",
      -      "type": "integer"
      -    },
      -    "truncated": {
      -      "title": "Truncated",
      -      "type": "boolean"
      -    }
      -  },
      -  "required": [
      -    "offset",
      -    "limit",
      -    "total",
      -    "count",
      -    "next_offset",
      -    "truncated",
      -    "results"
      -  ],
      -  "title": "DocumentListResult",
      -  "type": "object"
      -}New value: +null
  7. First observedv0.2.2

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the bar is lower, but the description adds real value: it discloses that 'total' is only this page's allowed-document count because search short-circuits, and that truncation sets description_truncated with a true description_length. These are non-obvious behaviors an agent would otherwise misread.

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?

Front-loads the purpose and then layers the non-obvious caveats (page-scoped total, text_limit truncation) efficiently. The text_limit paragraph is slightly dense but each sentence carries distinct information.

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?

With no output schema and six parameters, the description fills key gaps: pagination termination via next_offset, the meaning of total, and the description_truncated/description_length pairing. Field-level return detail is left to the 'select' schema, which is reasonable.

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 67%, so several parameters are already documented. The description adds meaningful semantics for text_limit (server-configured default, not unlimited, unlike get_document) and clarifies the page-scoped nature of total, but it says little about search syntax or select beyond what the schema already states.

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 and resource ('List documents') plus the two filtering modes (project, title search). It references get_document when contrasting the text_limit default, so a sibling relationship is implicit, though it never explicitly routes the agent to which tool to pick.

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 concrete operational guidance: page until next_offset is null, and the total is page-scoped rather than a full match count. It also flags that text_limit here differs from get_document's single-item default, which helps the agent choose between them, though no explicit when-not condition is stated.

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