Skip to content

Documents and search

Updated October 24, 2026

You can upload documents (manuals, procedures, notes) to a server: the connected AI finds and reads them through two tools that are added automatically.

Accepted formats

  • PDF (.pdf);
  • Word (.docx);
  • Markdown (.md, .markdown);
  • plain text (.txt).

The content must match the extension: a renamed file is refused (UNSUPPORTED_FILE_TYPE). An empty file is refused before upload. To add files, open the server's "Sources" tab and choose "Add documents".

Sizes and limits

  • 10 MB (10,485,760 bytes) maximum per file (FILE_TOO_LARGE beyond).
  • A total of extracted text per server set by your plan, and 1,000 documents at most (PLAN_LIMIT_REACHED beyond). The "Extracted text" gauge in the "Sources" tab shows how much is used.
  • Processing that takes more than 28 seconds stops with INGESTION_TIMEOUT: try a smaller file.

See also Quotas and plans.

Document states

Files are sent one after the other; a failure does not stop the next ones.

  • "Waiting": the file is queued.
  • "Uploading…" then "Processing…": upload, then text extraction.
  • "Ready": the AI can use the document.
  • "Failed": the message gives the cause (see Errors and troubleshooting).

As soon as a first source is ready, a "draft" server becomes "active" automatically.

Scanned PDF and missing text

Voozeo does not do optical character recognition (OCR). A PDF that contains only page images, or an unreadable file, fails with NO_TEXT_EXTRACTED. Export the document again from its original software (PDF with selectable text) or convert it to text or Markdown. A Word file whose decompressed content exceeds 50 MiB also fails with this code.

Search with search_documents

Each document is split into fragments of about 1,500 characters, with a 200-character overlap. The search_documents tool does a keyword search (BM25), not a search by meaning.

  • query: the words to look for (1 to 1,000 characters);
  • limit: number of passages, from 1 to 10 (5 by default).

It returns the passages, the document name, its docId and a score.

Read with read_document

The read_document tool reads a document from its docId, in slices of 20,000 characters. The offset parameter (0 by default) says where to start; the response contains nextOffset to read the rest, or null when the document is finished.

Resources

Each document is also exposed as an MCP resource at voozeo://doc/<docId> (text truncated to 100 KB), for clients that can display them.

Document text is presented to the AI as untrusted data: any instructions it contains are not commands for the AI. Your documents are only served to AIs connected with your key.

Tips for good search results

  • Give explicit titles to the sections of your documents.
  • One subject per document: several small files beat one catch-all file.
  • Use your users' words ("refund", not only "reimbursement").
  • To update a document, delete it and add it again.

Delete a document

In the "Sources" tab, delete the document's source and confirm. It is removed from resources and search, and its text no longer counts toward the server's 5 MiB.

Example

You upload leave-policy.pdf (2 MB) to the "Human resources" server. Once the "Ready" state appears, you ask your AI: "How many days of leave after one year?". The AI calls search_documents with query = leave days seniority and limit = 3, finds the passage, then, if needed, calls read_document with the docId it received and offset = 0. You will see these calls in the call log.

Get started