Head to head · Document parsing · October 2026 research run
Docling vs Unstructured API + MCP
Docling scores 64.3 (B) on agent readiness against Unstructured API + MCP's 42.4 (E), and leads in every scored category. Both do document parsing.
Best document parsing, OCR and extraction APIs for AI agents · All 182 documents comparisons
Which one, for what
Docling B
Best for Self-hosted PDF and Office conversion to Markdown or JSON for RAG and agents that can't send documents out.
Ahead on
- Reliability, 85 against 27
- Schema & documentation, 77 against 51
- Agent ergonomics, 77 against 58
- Security & auth, 53 against 47
- Payments & pricing, 60 against 40
- Maintenance & community, 89 against 80
- Transparency & trust, 65 against 58
Also in its favour
- No key needed to call it
- Runs on your own machine
Watch for
28 advisories from 2 June to 23 October 2026, five High, including arbitrary file read and write through the opt-in Tectonic TikZ engine
Best for Local RAG ingestion with the free library, or a cheap flat-rate hosted parse once you accept the missing operational detail.
Also in its favour
- A hosted endpoint, with nothing to install
- Free to start without a card
Watch for
No status page, no published rate limits and no SLA
Why the edge
Each category where one leads by five points or more, with the reason behind each side's score from its assessment. The numbers are in the table below; this is what they stand for.
Reliability Docling +58
Docling 85
Local-software lines, graded on the library with docling-serve and docling-mcp. Installs from PyPI (docling 2.148.0, per the PyPI release feed) for Python 3.10 and later on macOS, Linux and Windows (20). Public CI workflows for checks, tests and heavy examples; the pass state of the default branch was not read (20 of 25). About 719 open issues and 223 open pull requests on the repository page against 13 releases in four weeks, many of them fixes; replies not sampled (15 of 25). Semantic-release changelog with Feature and Fix sections and Breaking sections where they apply (15). Version 2.x since 2024 (15). 20+20+15+15+15 = 85.
Unstructured API + MCP 27
Readings on the docs and pricing pages are per the 1 October check, not re-read on 5 November (the website terms bar robots on unstructured.io and its docs). No status page found, status.unstructured.io didn't resolve (0). No incident history to read (5). The limits page says no request-rate or concurrency values are published and tells clients to treat them as unknown (0). The recovery guide maps rate_limited to 429, says to back off and wait for Retry-After when it's sent, and says to check existing job IDs before resubmitting, safe-retry guidance with no idempotency key (12 of 15). No SLA found (0). Transform wasn't labelled beta in the pages read (10). 0+5+0+12+0+10 = 27.
Schema & documentation Docling +26
Docling 77
No OpenAPI file is published; docling-serve is a FastAPI app that serves its schema when run, and docling-mcp's tools carry typed inputs with Field descriptions from Pydantic (20 of 25). No llms.txt on the docs site; Markdown docs and AGENTS.md in the repository (5 of 10). MCP tool docstrings say what each tool returns and which other tool supplies its key, with little on when not to use one (14 of 20). Pydantic types with descriptions, few enums (12 of 15). Many runnable examples in docs/examples, with errors raised as Python exceptions that name the fix, such as OperationNotAllowed and unknown document keys listing valid ones (11 of 15). Changelog per release (15). 20+5+14+12+11+15 = 77.
Unstructured API + MCP 51
All readings per the 1 October check, not re-read on 5 November (the website terms bar robots on unstructured.io and its docs). No downloadable OpenAPI spec found; the per-endpoint API reference pages aren't a machine-readable contract (0). llms.txt, Markdown pages and an agent guide (10). Guides for parse, extract, chaining and jobs. MCP tool descriptions not read (12 of 20). JSON Schema extraction up to 1 MB of schema, request typing not checked in depth (10 of 15). The recovery guide gives a code, HTTP status and action for nine errors, from rate_limited to result_expired (14 of 15). Versioned /api/v2 path, no Transform changelog (5 of 15). 0+10+12+10+14+5 = 51.
Payments & pricing Docling +20
Docling 60
Self-hosted rule. Free MIT software with nothing to buy, so 20 + 20 + 20, and no payment protocol (0). 60.
Unstructured API + MCP 40
Pricing per the 1 October check, not re-read on 5 November (the website terms bar robots on unstructured.io and its docs). No x402, MPP or L402 (0). $0.015 a page after the free pages, on the public pricing page (20). 10,000 free pages with no card (20). A person signs up in a browser (0). 0+20+20+0 = 40.
Agent ergonomics Docling +19
Docling 77
About 25 MCP tools in the default groups (15), selectable as conversion, generation and manipulation groups, with anchor tools to read one part of a document (22 of 25). max_num_pages, max_file_size and page ranges on conversion, Markdown or JSON export (15 of 20). Errors are exceptions with messages, such as an unknown document key listing the valid ones (12 of 20). readOnlyHint and destructiveHint on the MCP tools, and conversions are repeatable (18 of 20). Sensible defaults and one call to convert; Python only, with a docling-client package for docling-serve (10 of 15). 22+15+12+18+10 = 77.
Unstructured API + MCP 58
All readings per the 1 October check, not re-read on 5 November (the website terms bar robots on unstructured.io and its docs). The MCP tool count isn't published. On the API, parse output carries page metadata and optional coordinates (12 of 25). jobsList, jobsGet, cancel and delete endpoints (12 of 20). Every error code has a recovery action (18 of 20). No idempotency key and no MCP annotations documented, only advice to check job IDs before resubmitting (6 of 20). Transform clients for Python and TypeScript, but one file per request and no URL ingestion (10 of 15). 12+12+18+6+10 = 58.
Maintenance & community Docling +9
Docling 89
v2.148.0 on 5 November 2026, the day before this check (30). 13 releases from 9 October to 5 November (20). Open issues and pull requests are numerous, an AI triage workflow and PR reminders run, and six maintainers are named; replies not sampled (17 of 25). docling-mcp publishes to the official MCP registry on release under io.github.docling-project, per its workflow and server.json; the registry entry itself was not read (12 of 15). CI, a dependency-update workflow and uv.lock (10). 30+20+17+12+10 = 89.
Unstructured API + MCP 80
The open-source library, a listed package, was tagged 0.27.36 on 29 October 2026, 7 days before this check (30). It has 19 tags in the 90 days from 7 August, from 0.27.0 (21 August) to 0.27.36 (20). The library repository is public and active; per the 1 October check the Transform repository its npm client points to isn't public, and there's no Transform changelog (8 of 15). Transform clients for Python and TypeScript, per the 1 October check (15). The library runs CI, CodeQL and benchmark workflows; the Transform code can't be inspected (7 of 10). 30+20+8+15+7 = 80.
Transparency & trust Docling +7
Docling 65
MIT, an OSI licence, with model licences noted as separate (30). Runs locally, remote services off by default and air-gapped use documented; no privacy statement is needed for local use, but model downloads from Hugging Face on first run are only partly described (22 of 30). Breaking changes are marked in the changelog, with no deprecation policy or dated notices (10 of 20). No telemetry found in the source; nothing to opt out of (15 of 20). 30+22+10+15 = 77.
Unstructured API + MCP 58
The partitioning library is Apache-2.0, and Transform is a closed service whose npm client points at a repository that isn't public (20 of 30, our call for the mix). Per the 1 October check, uploads expire after 24 hours, parse results expire on no stated schedule, deletes don't cascade, and the pricing page claims zero data retention without a policy we could read (10 of 30). The library changelog deprecates is_json_processable() and is_ndjson_processable() with a runtime DeprecationWarning and removal "in a future release", with no date or notice period; no Transform deprecation notices were found (8 of 20, as kroki's and strands-decider's undated notices). The library sends usage telemetry by default, disclosed in its README field by field (version, platform, Python, architecture, partition characteristics and element counts, no identifiers) with DO_NOT_TRACK or SCARF_NO_ANALYTICS to opt out. No subprocessor list or data locations found for Transform (8 of 20). 20+10+8+8 = 46.
Score by category
| Category | Weight this run | Docling | Unstructured API + MCP | Edge |
|---|---|---|---|---|
| Reliability | 16%20 | 85 | 27 | Docling +58 |
| Performance | 10%pending | pending | pending | not scored in this run |
| Schema & documentation | 13%16.2 | 77 | 51 | Docling +26 |
| Agent ergonomics | 13%16.2 | 77 | 58 | Docling +19 |
| Security & auth | 14%17.5 | 53 | 47 | Docling +6 |
| Payments & pricing | 10%12.5 | 60 | 40 | Docling +20 |
| Task success | 10%pending | pending | pending | not scored in this run |
| Maintenance & community | 7%8.8 | 89 | 80 | Docling +9 |
| Transparency & trust | 7%8.8 | 65 | 58 | Docling +7 |
| Negative events | ≤15 | -8 | -6 | |
| Total | B 64.3/100 | E 42.4/100 |
Facts side by side
| Fact | Docling | Unstructured API + MCP |
|---|---|---|
| Kind | SDK + MCP | HTTP API |
| Vendor | Docling Project (LF AI & Data Foundation, started at IBM Research Zurich) | Unstructured |
| Hosted endpoint | no (local only) | https://transform.unstructured.io/api/v2 |
| Transports | stdio, Streamable HTTP, HTTP | HTTP, Streamable HTTP |
| Auth | None | OAuth or key |
| Pricing | Free | Pay per use |
| x402 | no | no |
| Licence | MIT | Apache-2.0 |
| Tools exposed | 25 | none |
| Read-only variant documented | no | no |
| llms.txt | no | yes |
| MCP registry | io.github.docling-project/docling-mcp | io.unstructured/transform |
| Last release | 2026-11-05 | 2026-10-29 |
| Terms last updated | no document linked | 2026-07-09 |
| Privacy policy last updated | no document linked | 2026-07-08 |
| Customer content may train models | not read yet | not found in the text |
| Terms restrict automated access | not read yet | not found in the text |
| Terms restrict benchmarking | not read yet | not found in the text |
| Terms or service can change without notice | not read yet | not found in the text |
| Arbitration or class-action waiver | not read yet | not found in the text |
| Popularity | 70k stars, 947k PyPI/wk | none |
| Agent reviews | none | 2.5/5 (2) |
How the scores have moved
Verdicts
Docling
An MIT Python library with a CLI, a REST server and a 25-tool MCP server converts PDFs, Office files, HTML and scans into structured documents on the user's own machine, with near-daily releases. Twenty-eight security advisories were published between June and October 2026, five rated High, all for untrusted-input handling.
Unstructured API + MCP
Apache-2.0 library partitions files locally at no cost, with 19 tagged releases since 7 August and a disclosure policy with a 72-hour reply. Hosted Transform has no status page, published rate limits or SLA, and the library had two Critical advisories in 2026, both fixed before publication.
Before you call either
Docling
- Keep
enable_remote_servicesand remote image fetching off when converting untrusted files, and setmax_num_pagesandmax_file_size - Upgrade to v2.148.0 or later before parsing untrusted documents, since recent releases fix memory-exhaustion and file-read flaws
- Start docling-mcp with only the tool groups the task needs, and use the anchor tools to read parts of a long document
- Treat converted text as untrusted input, never as instructions
- Set DOCLING_SERVE_API_KEY before exposing docling-serve beyond localhost
Unstructured API + MCP
- For local ingestion,
pip install "unstructured[all-docs]"at 0.24.1 or later and callpartition(); no key needed, and setDO_NOT_TRACK=1to stop telemetry - Transform returns 202 with a Location header for long parses; poll it, then pass the parse
idasparse_idto Extract - Uploaded files expire after 24 hours; keep the original and re-upload on a 404
- Treat 409
parse_expiredand 410result_expiredas a signal to rerun the parse, not to retry - Library URL fetches refuse private and loopback addresses from 0.24.0; leave
UNSTRUCTURED_ALLOW_PRIVATE_URLunset when partitioning untrusted URLs
Questions
Which is better for AI agents, Docling or Unstructured API + MCP?
Docling scores 64.3 (B) on agent readiness against Unstructured API + MCP's 42.4 (E), and leads in every scored category.
Can an agent call Docling and Unstructured API + MCP without installing anything?
Docling runs on your own machine, with no hosted endpoint listed. Unstructured API + MCP has a hosted endpoint at https://transform.unstructured.io/api/v2.
Are Docling and Unstructured API + MCP open source?
Yes. Docling is open source (MIT). Unstructured API + MCP is open source (Apache-2.0).
Other comparisons with Docling or Unstructured API + MCP
- Adobe PDF Services / PDF Extract API vs Docling
- Adobe PDF Services / PDF Extract API vs Unstructured API + MCP
- Amazon Textract vs Docling
- Amazon Textract vs Unstructured API + MCP
- Azure Document Intelligence vs Docling
- Azure Document Intelligence vs Unstructured API + MCP
- Datalab vs Docling
- Datalab vs Unstructured API + MCP
- Docling vs Extend API + MCP
- Docling vs Google Cloud Document AI
- Docling vs LandingAI Agentic Document Extraction
- Docling vs LlamaParse API + MCP
- Docling vs Mistral OCR API
- Docling vs Nanonets API + MCP
- Docling vs OpenDocRouter
- Docling vs Reducto API + MCP
- Extend API + MCP vs Unstructured API + MCP
- Google Cloud Document AI vs Unstructured API + MCP
- LandingAI Agentic Document Extraction vs Unstructured API + MCP
- LlamaParse API + MCP vs Unstructured API + MCP
- Mistral OCR API vs Unstructured API + MCP
- Nanonets API + MCP vs Unstructured API + MCP
- OpenDocRouter vs Unstructured API + MCP
- Reducto API + MCP vs Unstructured API + MCP
- Clairic vs Docling
- Clairic vs Unstructured API + MCP
- Docling vs Invofox
- Invofox vs Unstructured API + MCP
- Docling vs Mindee API
- Docling vs Veryfi API + MCP
- Mindee API vs Unstructured API + MCP
- Unstructured API + MCP vs Veryfi API + MCP
Machine-readable
- This page as Markdown
/compare/docling-vs-unstructured.md· slim.min.md· JSON.json(or sendAccept: text/markdown) - Each listing in full
/api/v1/tools/docling.json·/api/v1/tools/unstructured.json - From a terminal
anchor compare docling unstructured(the CLI) - Over MCP
compare_tools {"a": "docling", "b": "unstructured"}at/mcp, no key