Skip to main content
Glama
sagelabs-dev

Paperless-NGX MCP Server

by sagelabs-dev

list_documents

Retrieve and filter Paperless-NGX documents by title, correspondent, type, tag, storage path, date, or archive serial number, with pagination for focused results.

Instructions

List and filter documents with pagination and common Paperless filters such as title search, correspondent, document type, tag, storage path, creation date, archive serial number, and simple custom field filters. Use 'query_documents' for full-text query, structured custom field conditions, or advanced documented /api/documents/ query parameters. IMPORTANT: For queries like 'the last 3 contributions' or when searching by tag, correspondent, document type, or storage path, first use the relevant lookup tool to find the correct ID. Note: Document content is excluded from results by default. Use 'get_document_content' when you need the document text.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
tagNo
pageNo
searchNo
orderingNo
page_sizeNo
storage_pathNo
correspondentNo
document_typeNo
created__date__gteNo
created__date__lteNo
custom_field_queryNo
archive_serial_numberNo
custom_fields__icontainsNo
archive_serial_number__isnullNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv2.2.1

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does disclose meaningful behavior: results are paginated, document content is excluded by default, and lookups are required to obtain filter IDs. It stops short of stating auth/permission needs or response shape/pagination mechanics, but the key surprise (missing content) is flagged.

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?

It is longer than typical but front-loaded with the core action, then routing, then cautions in descending priority. Minor redundancy: the exclusion note and the get_document_content pointer state the same thing twice, but each sentence still earns its place.

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?

For a 14-parameter, zero-coverage, no-output-schema tool, the description covers what it returns (documents without content), when to resolve IDs, and which sibling to prefer. The remaining gap is parameter-level format guidance, which the 0%-coverage schema leaves undocumented.

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 description coverage is 0% across 14 parameters, so the description must compensate. It names the filter concepts (title search, correspondent, document type, tag, storage path, creation date, ASN, simple custom field filters) but never maps them to parameter names or explains formats for ordering, page/page_size, or how custom_field_query differs from custom_fields__icontains and archive_serial_number__isnull.

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 a specific verb+resource ('List and filter documents') and immediately scopes it with pagination and the concrete Paperless filter set. It explicitly distinguishes itself from query_documents (full-text, structured conditions, advanced API params) and from get_document_content, so an agent can separate it from siblings without opening schemas.

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?

It gives explicit routing rules: use query_documents for full-text/advanced queries, use the relevant lookup tool first to resolve tag/correspondent/type/storage-path IDs, and use get_document_content for text. Both a positive path and named alternatives are provided, plus the ID-resolution prerequisite.

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