v0.9.0
[0.9.0] - 2026-07-09
Added
- Added automatic mixed-format batch ingestion:
document(op="auto"/"ingest"/"import", file_paths=[...])
now detects a batch mixing PDF with DOCX/DOC/ODT/ODS and routes it through a
single background job (mixed_ingest_support.py+create_conversion_job)
that ingests each file with its correct existing engine, isolates per-file
failures without aborting the batch, and reports[i/N filename]progress
via the existingget_job_statustool. No new public MCP tool was added
(still 30 tools / 43 endpoints). - Added
source_enginevisibility toinspect_document_manifestso agents
can tell which backend (pymupdf/pymupdf4llm/docling/mineru[:pipeline])
parsed an already-ingested document without re-reading the ingest response.
Fixed
- Fixed multi-engine output provenance so
DocumentManifest.source_engine
andIngestResult.backendalways carry the real engine identity instead of
being hardcoded tomarkerfor every structured-engine path (Docling,
MinerU) or silently defaulting topymupdfwith no per-extractor
distinction. Figure/table.source,segmentation.json's
source_backend, and citation-index attribution now derive from the same
authoritative field. - Fixed Docling bbox coordinates to normalise to top-left origin (matching
PyMuPDF/Marker/MinerU) instead of passing through Docling's native
coordinate system, which can use bottom-left origin depending on the
source PDF. - Fixed mixed-batch job result shape so
documents/failed_files/warnings
reach the top level ofjob.resultwhereget_job_statusreads them,
instead of being nested under an innerconversionkey. - Fixed mixed-batch job failure semantics so a job is marked
FAILED(with a
clear per-file error summary) whenever any file in the batch fails,
matching the existing PDF-only batch convention, while still preserving
every successfully ingested document. - Fixed
get_job_statusnext-step suggestions to be format-aware: DOCX
documents now suggestdocx(op="get"/"blocks"/"validate")instead of the
PDF-onlydocument(op=...)facade, which would 404 against a DOCX
doc_id.
Full Changelog: v0.8.0...v0.9.0