paperless-ngx
Original:🇺🇸 English
Translated
2 scripts
Manages documents in Paperless-ngx via MCP tools. Searches, uploads, tags, organizes, and bulk-edits documents, correspondents, and document types. Use when working with Paperless-ngx, document management, OCR, or any mcp_paperless_* tool task.
1installs
Sourcekjanat/paperless-mcp
Added on
NPX Install
npx skill4agent add kjanat/paperless-mcp paperless-ngxTags
Translated version includes tags in frontmatterSKILL.md Content
View Translation Comparison →Paperless-ngx Document Management
Orchestrate Paperless-ngx through 16 MCP tools across 4 domains.
Tool Catalog
Documents (5 tools)
| Tool | Operation | Key Params |
|---|---|---|
| Full-text search | |
| Full details | |
| Upload file | |
| Get file base64 | |
| Batch operations | |
Tags (5 tools)
| Tool | Operation |
|---|---|
| All tags + colors + matching |
| New tag, optional auto-match |
| Modify name/color/matching |
| Remove permanently |
| Batch permissions/deletion |
Correspondents (3 tools)
| Tool | Operation |
|---|---|
| All correspondents |
| New, optional auto-match |
| Batch permissions/delete |
Document Types (3 tools)
| Tool | Operation |
|---|---|
| All document types |
| New, optional auto-match |
| Batch permissions/delete |
Decision Trees
Find a Document
txt
What do you know?
├─ Keywords/content → search_documents(query="term1 term2")
├─ Document ID → get_document(id=N)
├─ By tag → search_documents(query="tag:tagname")
├─ By type → search_documents(query="type:typename")
├─ By correspondent → search_documents(query="correspondent:name")
├─ By date → search_documents(query="created:[2024 to 2025]")
└─ Combined → search_documents(query="tag:X correspondent:Y created:[2024 to 2025]")Organize Documents
txt
What operation?
├─ Add tag → bulk_edit_documents(method="add_tag", tag=ID)
├─ Remove tag → bulk_edit_documents(method="remove_tag", tag=ID)
├─ Multi-tag → bulk_edit_documents(method="modify_tags", add_tags=[...], remove_tags=[...])
├─ Set type → bulk_edit_documents(method="set_document_type", document_type=ID)
├─ Set sender → bulk_edit_documents(method="set_correspondent", correspondent=ID)
├─ Merge PDFs → bulk_edit_documents(method="merge", metadata_document_id=ID)
├─ Rotate pages → bulk_edit_documents(method="rotate", degrees=90|180|270)
├─ Delete pages → bulk_edit_documents(method="delete_pages", pages="1,3,5-7")
├─ Reprocess OCR → bulk_edit_documents(method="reprocess")
└─ Delete → bulk_edit_documents(method="delete") !! PERMANENT !!Upload a Document
txt
1. Resolve metadata IDs first:
├─ list_tags → find or create_tag
├─ list_correspondents → find or create_correspondent
└─ list_document_types → find or create_document_type
2. post_document(file=<base64>, filename="name.pdf", tags=[...], correspondent=ID, ...)Manage Taxonomy (Tags/Correspondents/Types)
txt
Need to change metadata objects?
├─ View all → list_tags / list_correspondents / list_document_types
├─ Create new → create_tag / create_correspondent / create_document_type
├─ Edit tag → update_tag(id, name, color, match, matching_algorithm)
├─ Delete one tag → delete_tag(id)
├─ Batch delete/perm → bulk_edit_tags / bulk_edit_correspondents / bulk_edit_document_typesCritical Notes
- search_documents strips to save tokens. Use
contentfor full OCR text.get_document - post_document requires base64 file content, not file paths.
- matching_algorithm is integer across all endpoints (tags, correspondents, document types):
0-6=none,0=any,1=all,2=exact,3=regex,4=fuzzy,5=auto. See tools.md.6 - Bulk delete is permanent and irreversible.
- download_document returns base64 blob + filename from content-disposition.
References
| Task | File |
|---|---|
| Tool parameters & types | tools.md |
| Search query syntax | query-syntax.md |
| Multi-step workflows | workflows.md |