MCP server for Paperless-ngx document management system
Two tools with clear verb-noun naming (search_documents, get_document) and reasonable descriptions (85-90 chars). Both have Zod schemas with typed parameters and descriptions. However, output schemas are undocumented, responses are inferred from code (text content arrays). No pagination support despite search potentially returning large result sets (page_size hardcoded to 100000). Error handling is basic (isError flag, plain text messages). Missing parameter constraints (date format validation, documentId bounds). No tool annotations (readOnlyHint, idempotentHint). Descriptions lack WHEN/WHY guidance for LLM selection.
Get the full contents of the document text, by ID
Search Paperless documents with optional date filtering
Output schemas undocumented. Code shows responses return {content: [{type: 'text', text: string}]} but LLMs cannot infer this structure. No documentation of return fields, types, or pagination.
search_documents hardcodes page_size=100000 without pagination support. Large result sets will blow context windows. No limit parameter, no cursor/offset, no total_count in response.
Date parameters (dateFrom, dateTo) lack format validation. Description says 'YYYY-MM-DD' but no regex pattern or validation. LLMs may pass invalid formats like '2024/01/15' or '01-15-2024'.
No tool annotations. Both tools are read-only but lack readOnlyHint annotation. Agents cannot distinguish safe tools from destructive ones without explicit hints.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 69 | 2026-07-28+ | v2 |
Error messages lack recovery guidance. 'No documents found' and 'Document not found' are bare responses. Should suggest next steps: 'Try a broader search term' or 'Use search_documents to find valid IDs'.