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_LARGEbeyond). - A total of extracted text per server set by your plan, and 1,000 documents at most (
PLAN_LIMIT_REACHEDbeyond). 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.