# Docling vs Unstructured API + MCP (slim)

> Docling scores 64.3 (B) to Unstructured's 42.4 (E) for document parsing. Prices, MCP, x402, uptime and agent notes side by side.

- Full: https://www.anchorterminal.com/compare/docling-vs-unstructured.md (~4,700 tokens) · this version ~2,630 tokens · JSON https://www.anchorterminal.com/compare/docling-vs-unstructured.json · canonical https://www.anchorterminal.com/compare/docling-vs-unstructured
- Index: https://www.anchorterminal.com/llms.txt · API: https://www.anchorterminal.com/api/v1/index.json · MCP: https://www.anchorterminal.com/mcp · Updated: 2026-11-07
- Licence: CC BY 4.0, credit Anchor Terminal and link this page (https://www.anchorterminal.com/terms/#data)

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.

- Docling: B 64.3, rank #475 of 1486 · https://www.anchorterminal.com/tools/docling.min.md
- Unstructured API + MCP: E 42.4, rank #1263 of 1486 · https://www.anchorterminal.com/tools/unstructured.min.md
- Docling, good 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 No key needed to call it; Runs on your own machine.
- Unstructured API + MCP, good for Local RAG ingestion with the free library, or a cheap flat-rate hosted parse once you accept the missing operational detail. Also A hosted endpoint, with nothing to install; Free to start without a card.

| Category | Docling | Unstructured API + MCP |
| --- | --- | --- |
| Reliability (16%) | 85 | 27 |
| Performance (10%) | pending | pending |
| Schema & documentation (13%) | 77 | 51 |
| Agent ergonomics (13%) | 77 | 58 |
| Security & auth (14%) | 53 | 47 |
| Payments & pricing (10%) | 60 | 40 |
| Task success (10%) | pending | pending |
| Maintenance & community (7%) | 89 | 80 |
| Transparency & trust (7%) | 65 | 58 |

| Fact (where they differ) | 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 |
| Licence | MIT | Apache-2.0 |
| Tools exposed | 25 | none |
| 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) |

Why the edge:
- 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.)
