Skip to main content
Glama

List documents

list_documents
Read-onlyIdempotent

List every document you can see across all projects, including ID, title, and project. Use it to find a document ID for retrieving full details or attachments.

Instructions

List the documents visible to you, across every project.

Documents are OpenProject's filing cabinet: a title, a description, and attached files. Use this to find a document id for get_document or for list_attachments(container_type='document', ...).

Returns the standard list envelope: rows of {id, title, project, created_at, updated_at} plus pagination. The description is deliberately left out of the rows — get_document returns it in full.

Pitfalls. This is instance-wide: the endpoint takes no project parameter here, so filter by reading project on the rows, and page through rather than assuming page one is everything (pagination.has_more says). Documents are a module: where it is not installed, or not enabled in any project you can see (404), or where this account may not read documents (403), the call still SUCCEEDS with an empty items and the reason in notes — an empty list with a note does not mean no documents exist, so read notes first. The files themselves are attachments, not part of these rows.

Cross-references: get_document(document_id=...) for the description; list_attachments(container_type='document', container_id=...) then download_attachment for the files.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
pageNo1-based page number.
page_sizeNoDocuments per page (max 100).

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
sumsNoPresent only when show_sums was requested.
itemsNoThe page of results.
notesNoDegradation markers: capped aggregations, unavailable modules, …
groupsNoPresent only when group_by was requested.
paginationYesTotal/page/page_size/has_more.
Behavior5/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true, but the description adds substantial behavioral detail: the call is instance-wide with no project parameter, pagination must be checked via pagination.has_more, and the call can succeed with empty items plus a note when the module is unavailable or permissions are insufficient. It also clarifies that files are not part of the rows. This goes far beyond the annotations.

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 structured with a clear lead sentence, a use-case paragraph, a return-format note, and a pitfalls section. Every sentence adds value: no fluff. The length is justified by the complex pitfalls and cross-references, and the front-loaded purpose ensures quick comprehension.

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?

The description covers purpose, output format (standard list envelope), navigation, pitfalls (module availability, permissions, pagination), and relationships to other tools. With an output schema present, it appropriately omits full return field details but gives enough context for the agent to invoke it correctly. It is fully self-sufficient for the agent.

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

Parameters4/5

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

The schema already provides descriptions for page and page_size with 100% coverage, so the baseline is 3. The description adds practical guidance on how to use pagination ('page through rather than assuming page one is everything') and references pagination.has_more, which enriches the semantic understanding of both parameters beyond the schema.

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 opens with 'List the documents visible to you, across every project,' which gives a specific verb, resource, and scope. It distinguishes itself from sibling tools like get_document and list_attachments by explicitly positioning itself as the way to find document IDs, and from search tools by noting it returns all documents rather than filtered results.

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 explicitly states usage: 'Use this to find a document id for get_document or for list_attachments(...)'. It also provides cross-references for related operations (get_document for descriptions, list_attachments for files) and warns when not to rely on a single page, directing the agent to paginate. This gives clear when-to-use and alternative guidance.

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

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/kar-thik/openproject-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server