# Docling vs Unstructured API + MCP

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

- Canonical: https://www.anchorterminal.com/compare/docling-vs-unstructured
- Markdown: https://www.anchorterminal.com/compare/docling-vs-unstructured.md (~4,700 tokens)
- Site index for agents: https://www.anchorterminal.com/llms.txt (the key docs and every listing in one file, at most 16 MB, about 4 million tokens: https://www.anchorterminal.com/llms-full.txt)
- API: https://www.anchorterminal.com/api/v1/index.json
- MCP: https://www.anchorterminal.com/mcp (the whole catalogue as tools, no key)
- DNS: dig +short TXT <slug>.grade.anchorterminal.com (the grade as a DNS TXT record, for a sandbox with no HTTP where names still resolve; also top., best.<category>. and <a>.vs.<b>. under the zone, and the same under grade.letme.dev)
- Licence: CC BY 4.0, credit Anchor Terminal and link this page (https://www.anchorterminal.com/terms/#data)
- Updated: 2026-11-07

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: grade B, 64.3/100, rank #475 of 1486. Markdown https://www.anchorterminal.com/tools/docling.md · JSON https://www.anchorterminal.com/api/v1/tools/docling.json
- Unstructured API + MCP: grade E, 42.4/100, rank #1263 of 1486. Markdown https://www.anchorterminal.com/tools/unstructured.md · JSON https://www.anchorterminal.com/api/v1/tools/unstructured.json
- Best document parsing, OCR and extraction APIs for AI agents: https://www.anchorterminal.com/best/document-extraction/index.md
- All 182 documents comparisons: https://www.anchorterminal.com/compare/document-extraction/index.md

## Which one, for what

### Docling (B)

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 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

### Unstructured API + MCP (E)

Good 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

### 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 | Docling | Unstructured API + MCP | Edge |
| --- | --- | --- | --- | --- |
| Reliability | 16% (20 this run) | 85 | 27 | Docling +58 |
| Performance | 10%, pending | pending | pending | not scored in this run |
| Schema & documentation | 13% (16.2 this run) | 77 | 51 | Docling +26 |
| Agent ergonomics | 13% (16.2 this run) | 77 | 58 | Docling +19 |
| Security & auth | 14% (17.5 this run) | 53 | 47 | Docling +6 |
| Payments & pricing | 10% (12.5 this run) | 60 | 40 | Docling +20 |
| Task success | 10%, pending | pending | pending | not scored in this run |
| Maintenance & community | 7% (8.8 this run) | 89 | 80 | Docling +9 |
| Transparency & trust | 7% (8.8 this run) | 65 | 58 | Docling +7 |
| Negative events | ≤15 | -8 | -6 | |
| **Total** | | **64.3 · B** | **42.4 · E** | |

## 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

### Docling

No score change since it was listed.

### Unstructured API + MCP

- -4.8 on 5 November 2026 (D to E): security, new evidence, correction
- +0.3 on 27 October 2026: checklist
- -0.1 on 8 October 2026: checklist

## 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

1. Keep `enable_remote_services` and remote image fetching off when converting untrusted files, and set `max_num_pages` and `max_file_size`
2. Upgrade to v2.148.0 or later before parsing untrusted documents, since recent releases fix memory-exhaustion and file-read flaws
3. Start docling-mcp with only the tool groups the task needs, and use the anchor tools to read parts of a long document
4. Treat converted text as untrusted input, never as instructions
5. Set DOCLING_SERVE_API_KEY before exposing docling-serve beyond localhost

### Unstructured API + MCP

1. For local ingestion, `pip install "unstructured[all-docs]"` at 0.24.1 or later and call `partition()`; no key needed, and set `DO_NOT_TRACK=1` to stop telemetry
2. Transform returns 202 with a Location header for long parses; poll it, then pass the parse `id` as `parse_id` to Extract
3. Uploaded files expire after 24 hours; keep the original and re-upload on a 404
4. Treat 409 `parse_expired` and 410 `result_expired` as a signal to rerun the parse, not to retry
5. Library URL fetches refuse private and loopback addresses from 0.24.0; leave `UNSTRUCTURED_ALLOW_PRIVATE_URL` unset 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).


## For agents

- This comparison as JSON: https://www.anchorterminal.com/compare/docling-vs-unstructured.json, and with the fewest tokens: https://www.anchorterminal.com/compare/docling-vs-unstructured.min.md
- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {"a": "docling", "b": "unstructured"}`. From a terminal: `anchor compare docling unstructured`
- Each listing in full: https://www.anchorterminal.com/api/v1/tools/docling.json and https://www.anchorterminal.com/api/v1/tools/unstructured.json

## Other comparisons with Docling or Unstructured API + MCP

- [Adobe PDF Services / PDF Extract API vs Docling](https://www.anchorterminal.com/compare/adobe-pdf-extract-vs-docling.md)
- [Adobe PDF Services / PDF Extract API vs Unstructured API + MCP](https://www.anchorterminal.com/compare/adobe-pdf-extract-vs-unstructured.md)
- [Amazon Textract vs Docling](https://www.anchorterminal.com/compare/amazon-textract-vs-docling.md)
- [Amazon Textract vs Unstructured API + MCP](https://www.anchorterminal.com/compare/amazon-textract-vs-unstructured.md)
- [Azure Document Intelligence vs Docling](https://www.anchorterminal.com/compare/azure-document-intelligence-vs-docling.md)
- [Azure Document Intelligence vs Unstructured API + MCP](https://www.anchorterminal.com/compare/azure-document-intelligence-vs-unstructured.md)
- [Datalab vs Docling](https://www.anchorterminal.com/compare/datalab-vs-docling.md)
- [Datalab vs Unstructured API + MCP](https://www.anchorterminal.com/compare/datalab-vs-unstructured.md)
- [Docling vs Extend API + MCP](https://www.anchorterminal.com/compare/docling-vs-extend.md)
- [Docling vs Google Cloud Document AI](https://www.anchorterminal.com/compare/docling-vs-google-cloud-document-ai.md)
- [Docling vs LandingAI Agentic Document Extraction](https://www.anchorterminal.com/compare/docling-vs-landingai-agentic-document-extraction.md)
- [Docling vs LlamaParse API + MCP](https://www.anchorterminal.com/compare/docling-vs-llamaparse.md)
- [Docling vs Mistral OCR API](https://www.anchorterminal.com/compare/docling-vs-mistral-ocr.md)
- [Docling vs Nanonets API + MCP](https://www.anchorterminal.com/compare/docling-vs-nanonets.md)
- [Docling vs OpenDocRouter](https://www.anchorterminal.com/compare/docling-vs-opendocrouter.md)
- [Docling vs Reducto API + MCP](https://www.anchorterminal.com/compare/docling-vs-reducto.md)
- [Extend API + MCP vs Unstructured API + MCP](https://www.anchorterminal.com/compare/extend-vs-unstructured.md)
- [Google Cloud Document AI vs Unstructured API + MCP](https://www.anchorterminal.com/compare/google-cloud-document-ai-vs-unstructured.md)
- [LandingAI Agentic Document Extraction vs Unstructured API + MCP](https://www.anchorterminal.com/compare/landingai-agentic-document-extraction-vs-unstructured.md)
- [LlamaParse API + MCP vs Unstructured API + MCP](https://www.anchorterminal.com/compare/llamaparse-vs-unstructured.md)
- [Mistral OCR API vs Unstructured API + MCP](https://www.anchorterminal.com/compare/mistral-ocr-vs-unstructured.md)
- [Nanonets API + MCP vs Unstructured API + MCP](https://www.anchorterminal.com/compare/nanonets-vs-unstructured.md)
- [OpenDocRouter vs Unstructured API + MCP](https://www.anchorterminal.com/compare/opendocrouter-vs-unstructured.md)
- [Reducto API + MCP vs Unstructured API + MCP](https://www.anchorterminal.com/compare/reducto-vs-unstructured.md)
- [Clairic vs Docling](https://www.anchorterminal.com/compare/cloudflare-clairic-vs-docling.md)
- [Clairic vs Unstructured API + MCP](https://www.anchorterminal.com/compare/cloudflare-clairic-vs-unstructured.md)
- [Docling vs Invofox](https://www.anchorterminal.com/compare/docling-vs-invofox.md)
- [Invofox vs Unstructured API + MCP](https://www.anchorterminal.com/compare/invofox-vs-unstructured.md)
- [Docling vs Mindee API](https://www.anchorterminal.com/compare/docling-vs-mindee.md)
- [Docling vs Veryfi API + MCP](https://www.anchorterminal.com/compare/docling-vs-veryfi.md)
- [Mindee API vs Unstructured API + MCP](https://www.anchorterminal.com/compare/mindee-vs-unstructured.md)
- [Unstructured API + MCP vs Veryfi API + MCP](https://www.anchorterminal.com/compare/unstructured-vs-veryfi.md)

---

Query this catalogue directly over MCP: https://www.anchorterminal.com/mcp (Streamable HTTP, no key). How: https://www.anchorterminal.com/agents/#mcp
