Skip to main content
Glama

Upload document

paperless_upload_document

Upload a file to paperless-ngx for automatic OCR, tagging, and filing. Poll the task to get the resulting document ID.

Instructions

Upload a local file into paperless-ngx for consumption (OCR, tagging, filing). The file must live in one of the directories this server is allowed to read (PAPERLESS_UPLOAD_DIRS). Returns the consumption task id; consumption is asynchronous, so set wait_seconds to poll until it finishes and get back the created document id. Any field left unset is filled in by paperless’ own matching rules.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
titleNoTitle to use instead of one derived from the filename.
createdNoDocument date, e.g. `2016-04-19` or `2016-04-19 06:15:00+02:00`.
tag_idsNoTag ids to apply on consumption.
file_pathYesPath to the file on this machine. Must sit inside one of the PAPERLESS_UPLOAD_DIRS directories, which defaults to PAPERLESS_DOWNLOAD_DIR.
wait_secondsNoPoll the task endpoint for up to this many seconds and report the outcome.
custom_fieldsNoMap of custom field id to value, e.g. `{"3":"ACME-1234"}`.
storage_path_idNo
correspondent_idNo
document_type_idNo
archive_serial_numberNo
Behavior5/5

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

The description reveals important behavior beyond the annotations: it returns a consumption task ID, consumption is asynchronous, polling can yield the final document ID, and unset fields defer to paperless's matching rules. These details are not visible in the schema or annotations and materially affect how the agent should invoke and await the result.

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 compact and front-loaded: purpose first, then prerequisites, then return behavior, then fallback behavior. Every sentence contributes a necessary operational fact, with no filler or repetition.

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?

Despite having no output schema, the description explains what the tool returns, how to wait for completion, and what prerequisites exist. It gives enough context for an agent to invoke it correctly and interpret the result, including the local-file restriction that is critical for this tool.

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 description adds real meaning to `file_path` (allowed directory constraint), `wait_seconds` (polling semantics), `created` (date format example), `custom_fields` (map example), and the general fallback behavior for unset fields. It does not explain every ID parameter, but the schema already names them clearly and coverage is moderate.

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 names a specific action and resource: uploading a local file into paperless-ngx for consumption via OCR, tagging, and filing. It clearly distinguishes this from sibling tools like paperless_search_documents or paperless_download_document by focusing on the ingestion pipeline.

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?

It gives concrete operational guidance: files must reside in PAPERLESS_UPLOAD_DIRS, consumption is asynchronous, and `wait_seconds` should be used to poll for completion. It does not explicitly list when not to use this tool or mention alternative siblings, but the context is clear enough for an agent to select it correctly.

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/patrickcylai/paperless-ngx-mcp'

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