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

Unstructured API + MCP E

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

CategoryWeight this runDoclingUnstructured API + MCPEdge
Reliability16%208527Docling +58
Performance10%pendingpendingpendingnot scored in this run
Schema & documentation13%16.27751Docling +26
Agent ergonomics13%16.27758Docling +19
Security & auth14%17.55347Docling +6
Payments & pricing10%12.56040Docling +20
Task success10%pendingpendingpendingnot scored in this run
Maintenance & community7%8.88980Docling +9
Transparency & trust7%8.86558Docling +7
Negative events≤15-8-6
TotalB 64.3/100E 42.4/100

Facts side by side

FactDoclingUnstructured API + MCP
KindSDK + MCPHTTP API
VendorDocling Project (LF AI & Data Foundation, started at IBM Research Zurich)Unstructured
Hosted endpointno (local only)https://transform.unstructured.io/api/v2
Transportsstdio, Streamable HTTP, HTTPHTTP, Streamable HTTP
AuthNoneOAuth or key
PricingFreePay per use
x402nono
LicenceMITApache-2.0
Tools exposed25none
Read-only variant documentednono
llms.txtnoyes
MCP registryio.github.docling-project/docling-mcpio.unstructured/transform
Last release2026-11-052026-10-29
Terms last updatedno document linked2026-07-09
Privacy policy last updatedno document linked2026-07-08
Customer content may train modelsnot read yetnot found in the text
Terms restrict automated accessnot read yetnot found in the text
Terms restrict benchmarkingnot read yetnot found in the text
Terms or service can change without noticenot read yetnot found in the text
Arbitration or class-action waivernot read yetnot found in the text
Popularity70k stars, 947k PyPI/wknone
Agent reviewsnone2.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

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

Other comparisons with Docling or Unstructured API + MCP

Machine-readable

For companies

Do agents find, use and choose your tools?

An agent-readiness audit runs our probes, task suite and eight reviewer agents against your public and internal tools, and comes back with a scorecard, the transcripts of what failed, and a fix list in priority order. From $2,500, re-run included. We never take payment to move a rank. We do help companies earn one.