Nutrient DWS Processor API
by Nutrient (PSPDFKit GmbH) HTTP API in PDF tools
Hosted Local
PSPDFKit GmbH · nutrient.io since 2019 · status page · who's behind it
Hosted REST API from Nutrient (formerly PSPDFKit) that generates, converts, merges, OCRs, redacts, watermarks and signs PDF and Office documents. Agents call it with a Bearer key or through a local stdio MCP server.
Good for An agent that must change or produce documents (merge, convert, OCR, redact, sign, fill forms) in one chained request with predictable per-use cost.
Is this your product? Claim this listing or verify it
Assessment. A public OpenAPI 3.1 document, JSONPath-level error bodies and OAuth or operation-limited tokens make the API easy for an agent to call, and 50 free credits a month need no card. The status feed shows 61 minutes of platform downtime on 13 July 2026, and the terms let plans with data retention train models on submitted files.
Facts
- Transport
- HTTP, stdio
- Endpoint
https://api.nutrient.io- Auth
- OAuth or key
- Pricing
- Freemium · $75 / mo
- x402
- No
- Licence
- Proprietary service under the Nutrient DWS API licence agreement. The MCP server and the TypeScript and Python clients are MIT
- Tools exposed
- 8
- Packages
npm@nutrient-sdk/dws-mcp-servernpm@nutrient-sdk/dws-client-typescriptpypinutrient-dws- MCP registry
io.github.PSPDFKit/nutrient-dws-mcp-server- llms.txt
- published
- Last release
- GitHub stars
- 71
- npm / week
- 2.7k
- PyPI / week
- 2.2k
- Endpoints
- 17 operations in OpenAPI 1.19.0.
/build,/analyze_build,/sign,/ai/redact,/process_office_template, six/processor/*shortcuts (convert_to_pdf, generate_pdf, ocr, redact, watermark, md_to_pdf), async job status and result,/tokens, and account usage - Operations
- HTML, Markdown, Office, image and URL to PDF, PDF to Office, HTML, Markdown and images, merge, split, rotate, page edits, watermark, OCR, redaction and AI redaction, form filling by Instant JSON, XFDF import, flatten, passwords and permissions, optimisation, linearisation, PDF/A and PDF/UA, digital signatures, text, table and key-value extraction
- Free tier
- 50 credits a month, no card, output watermarked. Not for commercial use by organisations over 20 employees or $1 million in revenue
- Credit costs
- Fixed per use for most tools. HTML to PDF 0.5, image to PDF 0.5, PDF to image 0.5, merge 1, compress 1, watermark 1, redaction 1, Office to PDF 1, PDF to Office 1, OCR 2, text extraction 3, digital signature 10. AI redaction is per page
- Rate limits
- 100 requests a minute per API key on all plans. Test keys 10 a minute, 5 MB request and result size, no AI tools
- Errors
- JSON body with
details,status,requestIdandfailingPaths(JSONPath plus message). Async jobs adderror.reasoncodes./builddocuments 400, 401, 402, 403, 408, 409, 413, 422, 429, 500 and 503 - Async and retries
Prefer: respond-asyncon/buildreturns 202 withLocation,Retry-Afterand a job access token.Idempotency-Keyup to 255 bytes, async only- Credentials
- Live API key (global or scoped), JWT from
POST /tokenswith allowed operations, origins and expiry up to 24 hours, or OAuth with PKCE and dynamic client registration - MCP server
- Official, local stdio,
npx -y @nutrient-sdk/dws-mcp-server, MIT, v0.1.3. Eight tools (document_processor, document_signer, ai_redactor, check_credits, parse_document, extract_fields, sandbox_file_tree, directory_tree) and five prompts. All tools annotated - SDKs
- TypeScript
@nutrient-sdk/dws-client-typescript3.0.0 (23 August 2026) and Pythonnutrient-dws3.1.0 (27 May 2026), both MIT. Samples for Java, C#, PHP and shell - Data retention
- Plans without retention delete uploads and results within 24 hours and store only MIME type and page count. Plans with retention keep files and outputs and use them to train models
- Certifications
- SOC 2 Type 2 and SOC 3 per trust.nutrient.io, annual penetration testing by Prescient Security, vulnerability disclosure policy
- Status
- www.nutrientstatus.com on Better Stack. Processor API 99.981 per cent and DWS Platform 99.950 per cent over 90 days, as the page reports
- Billing
- Paddle is merchant of record. Responses carry
x-pspdfkit-request-costandx-pspdfkit-remaining-credits. The vendor says 4xx and 5xx responses cost no credits - Capabilities
- pdf.convert pdf.merge pdf.forms pdf.generate pdf.extract docs.ocr docs.tables
Facts verified 2026-10-08 from vendor docs, repositories and package registries. JSON · Markdown
Strengths
- OpenAPI 3.1 document (version 1.19.0) for 17 operations, with llms.txt indexes and a Markdown twin of every guide
- Errors return
failingPathsin JSONPath form, arequestId, and machine-readableerror.reasoncodes for async jobs - OAuth with PKCE, dynamic client registration and per-product scopes, plus JWTs limited by operation, origin and expiry of up to 24 hours
- All eight MCP tools carry
readOnlyHint,destructiveHint,idempotentHintandopenWorldHint, and file access can be confined to a sandbox directory - Free plan of 50 credits a month with no card, and the vendor says failed requests (4xx or 5xx) cost no credits
Weaknesses
- The status feed records 61 minutes of DWS Platform downtime on 13 July 2026 and five days with Processor API downtime since 23 July
- Plans with data retention enabled let Nutrient keep files and train models on them, and no public page says which plans those are
- The product page says there are no strict rate limits, while the pricing guide sets 100 requests a minute per key on every plan
- No public API changelog or deprecation policy was found, and the terms allow changes to the API at any time
Idempotency-Keyworks only on async/buildrequests, and free-plan output is watermarked
Before you call it notes for agents
- Send
Authorization: Bearer <key>tohttps://api.nutrient.io. UsePOST /buildwith aninstructionsJSON part to chain several actions in one charged request - Call
POST /analyze_buildfirst to get the credit cost of a build. The call is free - Stay under 100 requests a minute per key and back off exponentially on 429. Test keys allow 10 a minute and 5 MB
- For long jobs send
Prefer: respond-asyncwith anIdempotency-Key, then poll theLocationURL withX-Async-Job-TokenafterRetry-After - Set
SANDBOX_PATHfor the MCP server. Without it the server reads and writes any path the user account can reach
Who's behind it provenance 84/100
- Legal entity namedPSPDFKit GmbH20/20
- Domain agenutrient.io, registered 2019-12-03 (6 years)11/15
- Endpoint on the vendor's domainapi.nutrient.io15/15
- Terms of serviceread, states 5 of the 7 things a reader expects8.3/10
- Privacy policyread, states 7 of the 8 things a reader expects9.3/10
- Status pagewww.nutrientstatus.com10/10
- Changelogpublished10/10
- security.txtnot found0/10
Terms and privacy, as read
Terms of service dated 2026-09-01, states 5 of 7, 1 to know
TL;DR Dated 2026-09-01. States 5 of the 7 things a reader expects, and we didn't find how changes are announced or a service level. To know before relying on it, model training with an opt-out.
Says it may use customer content to train or improve models, and gives an opt-out
In all cases, you may exercise your data-subject rights, including the right to object and the right to deletion, as described in our Privacy Policy.
Content an agent sends could end up in a model. An opt-out, where the document gives one, is shown instead.
Gives the date it was last updated Last updated 2026-09-01
Last updated: September 2026
Without a date nobody can tell which version they agreed to.
Names the governing law or courts The law of Austria, with disputes in the courts of Vienna, Austria
…with Nutrient as data exporter and you as data importer, the optional Clause 7 omitted, and the laws of Austria and the courts of Vienna, Austria selected under Clauses 17 and 18.
Says where a dispute would be heard and under whose law.
States a limit on its liability Rules out indirect and consequential losses, with no cap named in this sentence
IN NO EVENT SHALL WE, OUR AFFILIATES, OUR SUBSIDIARIES, AND/OR OUR SUPPLIERS BE LIABLE TO YOU, YOUR AFFILIATES, AND/OR YOUR END-USERS FOR ANY DAMAGES OF ANY TYPE, WHETHER DIRECT OR INDIRECT, CONSEQUENTIAL, INCIDENTAL, OR SPECIAL DAMAGES, INCLUDING, WITHOUT LIMITATION, LOST REVENUES, LOST PROFITS, LOSSES RESULTING FROM…
Says the most the vendor would owe if the service causes a loss.
Says how the agreement or account can be ended
The term (“Term”) of the license granted under this Agreement shall continue until terminated, as set forth herein.
Says when the vendor can cut off access and what notice it gives.
Says how changes to the terms are announced
Not found in the text.
Says whether a customer hears about a change before it binds them.
Lists what users may not do
You further agree that if you do not acknowledge and agree with all terms set forth in this Agreement, you may not and will not use or access the API.
The acceptable-use rules an agent acting for a user has to stay inside.
Refers to a service level or uptime commitment
Not found in the text.
Says whether availability is promised and where the promise is written.
On plans with data retention enabled, Nutrient may keep and use de-identified and anonymised derivatives of submitted content without limitation, and these survive termination.
to create de-identified and anonymized derivatives, which Nutrient may retain and use without limitation and which survive termination.
Noted by a second reader on 2026-10-08.
Nutrient may list and disclose the customer's name, company and products that include the API on its website and related material.
8.2. We (or any future maintainer of the API) shall be permitted to list and disclose your name and/or company and your products that include the API on our website and related material.
Noted by a second reader on 2026-10-08.
Commercial use of the API by organisations exceeding 20 employees or 1 million US dollars in annual revenue is a material breach unless covered by a paid subscription.
Any commercial use of the API by organizations exceeding 20 employees or $1 million USD in annual revenue constitutes a material breach of this Agreement unless covered by a paid subscription.
Noted by a second reader on 2026-10-08.
The document · read 2026-10-08 · 6,776 words
Privacy policy gives no date, states 7 of 8, 2 to know
TL;DR Gives no date. States 7 of the 8 things a reader expects. To know before relying on it, model training with an opt-out and selling or sharing data for advertising.
Says it may use customer content to train or improve models, and gives an opt-out
You can ask us to stop using your files and to delete them at any time by contacting us at legal@nutrient.io.
Content an agent sends could end up in a model. An opt-out, where the document gives one, is shown instead.
Says it sells personal data or shares it for advertising
We may share Personal Data and Other Data to advisors, advertisers, and investors for the purpose of conducting general business analysis or other business purposes.
Personal data is passed to advertising partners, or the document says its sharing may count as a sale under privacy law.
Gives the date it was last updated
Not found in the text.
Without a date nobody can tell which version applied when data was collected.
Says what personal data is collected
Data we may collect and how we use it
The basic statement a privacy policy exists to make.
Says how long data is kept For as long as needed, with no period named
We will store your data as long as it is required for our business purposes and/or as required by law (e.g.
Says when data sent to the service is deleted.
Says who else receives the data
Google may disclose this data to third parties if this is required by law or if third parties process this data on behalf of Google.
Names the sub-processors or service providers the data is passed to, or where they are listed.
Says whether personal data is sold or shared for advertising
In the event that we buy or sell any business or asset, we may disclose Personal Data to the prospective seller or buyer of such business or assets.
A plain statement either way.
Says what rights people have over their data
You may also have the right to object to this processing, to request erasure, and to access your data, and to lodge a complaint with your supervisory authority.
Access, correction, deletion and objection, and how to use them.
Gives a privacy contact legal@nutrient.io
If you have any questions or concerns regarding this Privacy Policy, please contact us by email at legal@nutrient.io or by postal mail to Nutrient, 4509 Creedmoor Road, Suite 503, Raleigh, NC 27612, USA.
An address or officer to send a request to.
Says where data is transferred or stored Relies on the Data Privacy Framework
Data Privacy Frameworks (“DPF”) and the UK Extension to the EU-U.S.
The countries data goes to and the safeguard used.
On retention-enabled plans Nutrient keeps an internal copy for improvement and training that is not removed when a run expires or is deleted from the customer's history.
Separately, on retention-enabled plans we keep an internal copy to improve and train our services; that internal copy is retained for as long as it remains useful for those purposes, subject to periodic review, and is not removed simply because a run expires or is deleted from your history.
Noted by a second reader on 2026-10-08.
Information uploaded to a demo or with a technical support request is treated as consented to public disclosure unless the licence agreement says otherwise.
On the basis of this information, you consent to public disclosure of the information you upload to a demo of our Services or as part of your technical support request, unless your license agreement with us provides otherwise.
Noted by a second reader on 2026-10-08.
The document · read 2026-10-08 · 9,998 words
A reading by a fixed set of rules, each answered with the vendor's own sentence. It isn't legal advice, a rule can miss a clause or misread one, and the document itself is what binds. How it's read and scored.
The DWS API licence agreement (last updated September 2026) names PSPDFKit GmbH, doing business as Nutrient, Kaiserstrasse 117/17, 1070 Vienna, Austria, and applies Austrian law. Section 9 and Schedule 1 are the data processing terms.
The privacy policy has a Nutrient API section naming PSPDFKit GmbH as controller, with a Processor API subsection.
The API answers at https://api.nutrient.io. An unauthenticated request returned 401 with a JSON error and request id.
The status page is on a separate domain, www.nutrientstatus.com, run on Better Stack.
The changelog link is the MCP server's. No public changelog for the API itself was found.
www.nutrient.io/.well-known/security.txt returns 404. Reports go through www.nutrient.io/security/report-vulnerability/.
RDAP for nutrient.io gives a registration date of 2019-12-03.
robots.txt carries Content-Signal: search=yes, ai-input=yes, ai-train=yes for every user agent.
Checked 2026-10-08 against the vendor's own pages and the domain registry. Provenance is half of Transparency & trust.
Live watched around the clock · updated 2026-10-09 08:59 UTC
Probed every five minutes at https://api.nutrient.io. A probe counts as up when the endpoint answers without a server error, including a 401 that asks for credentials.
- Vendor status page unknown, no machine-readable status found · 1 hour ago
Live data comes from our pollers, trackers and scrapers and doesn't change the score until a benchmark run. What we watch · /api/v1/live/nutrient-dws-processor.json
Notable
POST /buildtakes aninstructionsJSON part that assembles a document from files, URLs, HTML or blank pages and chains actions such as OCR, watermark, rotate, flatten and redact in one request sourcePOST /analyze_buildreturns the credit cost of a build without running it, free of charge source- Async builds use
Prefer: respond-async, accept anIdempotency-Keyand return a job URL plus ajat_job access token source - Rate limit of 100 requests a minute per API key on every plan, and 10 a minute with a 5 MB cap for test keys source
- For plans with data retention enabled the terms grant Nutrient a licence to keep submitted files and outputs and train models on them. Other plans delete files within 24 hours source
- The free tier is closed to commercial use by organisations with more than 20 employees or over $1 million in yearly revenue source
- The MCP server is a local stdio package with eight tools, and it also wraps the separate Data Extraction API source
- The status page runs on Better Stack and lists DWS Platform, Processor API and two processing regions, Frankfurt and Oregon source
Reviews by the Anchor panel
Every review here is a desk review, written from public documentation, pricing, terms, source and status history on 1 October 2026. No calls made. The outcome says whether the reviewer's questions could be answered from public material. How reviews work.
Where reviews came from
No reviews yet.
No review matches these filters.
The review panel · How third-party agents will submit reviews · All reviews
Score breakdown methodology v0.4 · October 2026 research run
Assessed on 8 October 2026 from public evidence, against the published checklist. Confidence medium. Performance and Task success are pending until our probes and task suites run, so the total is over the 7 assessed categories, each weight divided by 80.
| Category | Weight this run | Score | Points |
|---|---|---|---|
| Reliability | 16%20 | 13.6 | |
Graded with the hosted lines. Status page at www.nutrientstatus.com on Better Stack with a Processor API component and 90 days of daily history (20). The JSON feed shows DWS Platform, the routing layer in front of the API, down for 3,679 seconds (61 minutes) on 13 July 2026, and the Processor API monitor down on five days from 23 July to 23 August, the longest 715 seconds. We read the 13 July figure as one major outage (10). No written incident reports could be read. The pricing guide gives 100 requests a minute per key on all plans and 10 a minute for test keys (15). It recommends exponential backoff, async admission returns Retry-After, and Idempotency-Key covers async builds only, so 13 of 15. The product page mentions guaranteed SLAs on custom plans, but no SLA document is published and the terms disclaim availability (0). GA, at spec version 1.19.0 (10). | |||
| Performancenot scored in this run | 10%pending | pending | n/a |
| Schema & documentation | 13%16.2 | 13.7 | |
A public OpenAPI 3.1.0 document, version 1.19.0, with 17 operations and 203 schemas, loaded by the reference page from Nutrient's CDN. The eight MCP tools have typed Zod inputs (25). llms.txt at site and product level with topic indexes, and a Markdown twin of each guide (10). Tag descriptions explain the Build API, async jobs and authorisation at length, and the MCP document_processor description sends extraction work to parse_document (15). 102 of 203 schemas use enums and build actions are discriminated by type. The MCP schema has one free-form record (13). Guides carry samples in six languages, and the errors guide and async tables document the response bodies (14). The spec is versioned and the MCP server keeps a changelog, but no public API changelog was found (7). | |||
| Agent ergonomics | 13%16.2 | 13.7 | |
Eight MCP tools, in the ten-or-fewer band, though the schema source is 35 KB. API responses are files or json-content with switches for plain text, structured text, key-value pairs and tables (20). Page ranges per part, output switches, and MCP tools that write large output to a file and return a summary. Nothing to paginate (15). Errors carry failingPaths in JSONPath form, a requestId, and error.reason codes with recommended handling for async jobs (18). Idempotency-Key on async /build only, and all eight MCP tools carry the four annotations (17). Single-purpose endpoints such as /processor/generate_pdf need one file, /build chains actions, and official clients exist for TypeScript (3.0.0) and Python (3.1.0) (14). | |||
| Security & auth | 14%17.5 | 11.6 | |
OAuth at api.nutrient.io with PKCE (S256), dynamic client registration, a revocation endpoint and per-product scopes such as product:processor. Live keys can be scoped, and POST /tokens issues JWTs limited to named operations and origins, expiring within 24 hours and revocable. The base key can only be regenerated. No query-string credential is documented (28). Scoped keys, operation-limited JWTs, read-only annotations and an optional sandbox directory, but no confirmation step, and without SANDBOX_PATH the MCP server has no path restriction (13). Document text comes back as untrusted content. Large output goes to a file by design, and no prompt-injection guidance was found (4). Each response reports credit cost and remaining credits with a request id, and a usage endpoint exists. No audit log was found (6). SOC 2 Type 2 and SOC 3 per the trust centre, annual penetration testing by Prescient Security, and a vulnerability disclosure policy with a report page. security.txt is a 404 and no bounty was established (15). | |||
| Payments & pricing | 10%12.5 | 5.0 | |
| No x402, MPP or L402 (0). Plans are public at $75, $275 and $445 a month for 1,000, 5,000 and 10,000 credits, with 10 per cent off for yearly billing, and the pricing page gives the credit cost of twelve tools, from 0.5 for HTML to PDF to 10 for a digital signature (20). The free plan gives 50 credits a month with no card and watermarked output (20). The OAuth server supports dynamic client registration and a device flow, but a person still signs in or signs up in a browser (0). | |||
| Task successnot scored in this run | 10%pending | pending | n/a |
| Maintenance & community | 7%8.8 | 6.8 | |
MCP server v0.1.3 tagged 27 August 2026, 42 days before this check, and the TypeScript client 3.0.0 on 23 August (20). Four MCP releases since 10 July (0.1.0, 0.1.1, 0.1.2, 0.1.3) plus the client release (20). On GitHub, issue 35 was fixed the day it was filed, while issue 29 has been open since 8 June with no reply and pull request 42 since 28 August. Support answers through a form with a stated target of one business day (15 of 25). The MCP server is in the official registry as io.github.PSPDFKit/nutrient-dws-mcp-server at 0.1.3 (15). CI runs lint, build and tests with actions pinned to commit hashes (8). | |||
| Transparency & trusteditorial 62, provenance 84 | 7%8.8 | 6.4 | |
| The API is closed under a dated licence agreement (September 2026) naming PSPDFKit GmbH, and the MCP server and both clients are MIT, so between the two bands (20). The privacy policy has a Processor API section, the terms carry data processing terms in section 9, and files are deleted within 24 hours on plans without retention. Plans with retention enabled let Nutrient keep files and train models on them, and no public page says which plans those are (20). No deprecation policy. The terms allow changes at any time with reasonable efforts at notice, and the one deprecated endpoint in the spec has no removal date (4). The trust centre lists 51 sub-processors with locations, updated 8 September 2026, and the status page names Frankfurt and Oregon processing regions (18). | |||
| Negative events | ≤15 |
| -2 |
| Total | 68.7 · B | ||
Weight is the published weight, and the figure under it is that category's share of the 100 points in this run. A pending category has no score and adds nothing. What changes when it's scored.
Fix list 19 items, the biggest gain first
Everything this grade says the listing lacks, from the reasons above, the checklist, the provenance checks, the deductions, what we couldn't check and what the review panel asked for. Paste it into a coding agent working on Nutrient DWS Processor API, or have the agent fetch /fixes/nutrient-dws-processor.md. A fix counts at the next check, once it's public.
Show it
# Fix list: Nutrient DWS Processor API From Anchor Terminal's listing at https://www.anchorterminal.com/tools/nutrient-dws-processor, the October 2026 research run, assessed 8 October 2026. Grade B, 68.7 out of 100. This is everything the published grade says the listing lacks, the biggest possible gain to the total first. It comes from the reason given for each score, the checklist each category was scored against (https://www.anchorterminal.com/benchmark/#checklist), the provenance checks, the deductions, what we couldn't check and what the review panel asked for. A fix counts at the next check, once it's public. For a coding agent working on Nutrient DWS Processor API: work through the items below in the product, its docs and its public pages. Each category gives the reason for its score, with the points each checklist item earned, and the checklist itself, so the gap is the items that earned less than their points. Change the product, not the wording, and keep a note of what you changed and where it's published. ## 1. Payments & pricing, 40 out of 100, up to 7.5 more on the total Why it scored 40: No x402, MPP or L402 (0). Plans are public at $75, $275 and $445 a month for 1,000, 5,000 and 10,000 credits, with 10 per cent off for yearly billing, and the pricing page gives the credit cost of twelve tools, from 0.5 for HTML to PDF to 10 for a digital signature (20). The free plan gives 50 credits a month with no card and watermarked output (20). The OAuth server supports dynamic client registration and a device flow, but a person still signs in or signs up in a browser (0). The checklist (https://www.anchorterminal.com/benchmark/#checklist-payments): The published rubric, also on the [x402 page](https://www.anchorterminal.com/x402/). - 40, a machine payment protocol (x402, MPP or L402) on the tool's own endpoints. 10 to 30 when it covers only some endpoints or only goes through a third party, and the note says which. - 20, per-call or per-unit pricing published without a login. 10 for public plan-only pricing, 0 for "contact sales" or prices behind a login. - 20, a free tier or trial that doesn't need a card. - 20, autonomous onboarding, meaning an agent can get access without a person signing up in a browser (keyless use, x402, a programmatic key API). Payment platforms and agent wallets rarely charge for their own API over a machine protocol, so the first line has steps for them, and the highest one that applies counts. 40 when x402, MPP or L402 runs on all their own endpoints, 30 when it runs on part of their own API, 25 when their merchants can accept one, 20 for running a facilitator, 15 for paying as a buyer, and 0 when the only protocol is their own. Merchant acceptance sits above a facilitator because the platform's own customers can charge agents through it, while a facilitator settles for sellers who wire up the protocol themselves. The counter-argument (a facilitator does more for the protocol as a whole) has a point. Each note says which step applied. Open-source software you run yourself is scored on its hosted or paid option if it has one. A free, self-hosted package with nothing to buy gets 20, 20 and 20 for the last three lines, and 0 to 40 for the first only if it ships a payment protocol. ## 2. Reliability, 68 out of 100, up to 6.4 more on the total Why it scored 68: Graded with the hosted lines. Status page at www.nutrientstatus.com on Better Stack with a Processor API component and 90 days of daily history (20). The JSON feed shows DWS Platform, the routing layer in front of the API, down for 3,679 seconds (61 minutes) on 13 July 2026, and the Processor API monitor down on five days from 23 July to 23 August, the longest 715 seconds. We read the 13 July figure as one major outage (10). No written incident reports could be read. The pricing guide gives 100 requests a minute per key on all plans and 10 a minute for test keys (15). It recommends exponential backoff, async admission returns `Retry-After`, and `Idempotency-Key` covers async builds only, so 13 of 15. The product page mentions guaranteed SLAs on custom plans, but no SLA document is published and the terms disclaim availability (0). GA, at spec version 1.19.0 (10). The checklist (https://www.anchorterminal.com/benchmark/#checklist-reliability): Hosted APIs, MCP servers, models and platforms. - 20, a public status page with component history (Statuspage, Instatus, BetterStack or the vendor's own). - 0 to 30, the incident record for the last 90 days on that page. 30 for a clean record or trivial incidents only, 20 for minor incidents only, 10 for one major outage (an hour or more of a core API down, or errors across the board), 0 for several. 5 when there's no history we could read, and the note says so. - 15, rate limits documented with numbers. - 15, documented 429 or overload handling (Retry-After, backoff guidance), and idempotency keys or safe-retry guidance where writes are involved. - 10, an SLA published for any paid tier. - 10, the surface agents use is generally available, not beta or preview. Local packages, SDKs, frameworks and stdio MCP servers. - 20, installs from an official package with supported runtimes stated. - 25, a public CI and test suite, passing on the default branch. - 0 to 25, open crash or regression issues relative to activity (25 for few and handled, 0 for many, old and unanswered). - 15, semver discipline and breaking changes called out in a changelog. - 15, version 1.0 or later, or declared stable. Protocols are read from their reference implementations, the public facilitators or servers, spec stability and test vectors. ## 3. Security & auth, 66 out of 100, up to 6 more on the total Why it scored 66: OAuth at api.nutrient.io with PKCE (S256), dynamic client registration, a revocation endpoint and per-product scopes such as `product:processor`. Live keys can be scoped, and `POST /tokens` issues JWTs limited to named operations and origins, expiring within 24 hours and revocable. The base key can only be regenerated. No query-string credential is documented (28). Scoped keys, operation-limited JWTs, read-only annotations and an optional sandbox directory, but no confirmation step, and without `SANDBOX_PATH` the MCP server has no path restriction (13). Document text comes back as untrusted content. Large output goes to a file by design, and no prompt-injection guidance was found (4). Each response reports credit cost and remaining credits with a request id, and a usage endpoint exists. No audit log was found (6). SOC 2 Type 2 and SOC 3 per the trust centre, annual penetration testing by Prescient Security, and a vulnerability disclosure policy with a report page. security.txt is a 404 and no bounty was established (15). The checklist (https://www.anchorterminal.com/benchmark/#checklist-security): - 0 to 30, the credential model. 30 for OAuth 2.1 with scopes, or scoped and revocable keys with rotation. 20 for plain revocable API keys. 10 for one all-powerful key. 10 off when a secret can travel in a URL query string as a documented option. - 0 to 20, read-only or least-privilege modes, and confirmation or approval for destructive actions. - 0 to 15, prompt-injection posture where the tool returns untrusted content (documented mitigations or guidance). A tool that returns no untrusted content gets 10. - 0 to 15, audit logs or per-call visibility for the operator. - 0 to 20, a security programme. security.txt or a disclosure policy, a bug bounty, SOC 2 or ISO 27001, advisories handled in public. Models are read for retention, whether API data trains models (and whether that's off by default), zero-retention options and certifications. Frameworks for telemetry defaults, approval hooks, guardrails and sandboxing. ## 4. Schema & documentation, 84 out of 100, up to 2.6 more on the total Why it scored 84: A public OpenAPI 3.1.0 document, version 1.19.0, with 17 operations and 203 schemas, loaded by the reference page from Nutrient's CDN. The eight MCP tools have typed Zod inputs (25). llms.txt at site and product level with topic indexes, and a Markdown twin of each guide (10). Tag descriptions explain the Build API, async jobs and authorisation at length, and the MCP `document_processor` description sends extraction work to `parse_document` (15). 102 of 203 schemas use enums and build actions are discriminated by `type`. The MCP schema has one free-form record (13). Guides carry samples in six languages, and the errors guide and async tables document the response bodies (14). The spec is versioned and the MCP server keeps a changelog, but no public API changelog was found (7). The checklist (https://www.anchorterminal.com/benchmark/#checklist-schema): APIs and MCP servers. - 25, a machine-readable contract (a public OpenAPI file or similar; for MCP, typed JSON Schema inputs on every tool). - 10, llms.txt or Markdown docs served for agents. - 0 to 20, descriptions that say what a tool is for, when to use it and when not to, read from the tool definitions in the source or the API reference. - 0 to 15, typed inputs with enums, constraints and required fields, and no free-form JSON blobs. - 0 to 15, examples and documented error responses. - 15, versioning and a public changelog. Models are read from the API reference, the OpenAPI file, llms.txt, the structured-output and tool-use docs and the model cards. Frameworks from docs a model can follow, typed interfaces, examples and the API reference. ## 5. Agent ergonomics, 84 out of 100, up to 2.6 more on the total Why it scored 84: Eight MCP tools, in the ten-or-fewer band, though the schema source is 35 KB. API responses are files or `json-content` with switches for plain text, structured text, key-value pairs and tables (20). Page ranges per part, output switches, and MCP tools that write large output to a file and return a summary. Nothing to paginate (15). Errors carry `failingPaths` in JSONPath form, a `requestId`, and `error.reason` codes with recommended handling for async jobs (18). `Idempotency-Key` on async `/build` only, and all eight MCP tools carry the four annotations (17). Single-purpose endpoints such as `/processor/generate_pdf` need one file, `/build` chains actions, and official clients exist for TypeScript (3.0.0) and Python (3.1.0) (14). The checklist (https://www.anchorterminal.com/benchmark/#checklist-ergonomics): - 0 to 25, context cost. For MCP, the number and size of the tool definitions (25 for ten or fewer compact tools, 15 for 11 to 30, 5 for more than 30, plus up to 10 back for toolsets, dynamic loading or read-only subsets). For APIs, whether responses can be sized (field selection, limits, summaries). - 20, pagination, filtering and output-size controls. - 20, actionable, documented error responses, codes and messages an agent can recover from. - 20, idempotency or safe retries, and for MCP the `readOnlyHint` and `destructiveHint` annotations. - 15, sensible defaults, few required parameters, and official SDKs in at least two languages. Models are read for tool use, structured output, prompt caching, context length, batch and SDKs. Frameworks for how much code and how many defaults a tool-calling agent with MCP needs. ## 6. Transparency & trust, 73 out of 100, up to 2.4 more on the total Made of editorial 62, provenance 84. Why it scored 73: The API is closed under a dated licence agreement (September 2026) naming PSPDFKit GmbH, and the MCP server and both clients are MIT, so between the two bands (20). The privacy policy has a Processor API section, the terms carry data processing terms in section 9, and files are deleted within 24 hours on plans without retention. Plans with retention enabled let Nutrient keep files and train models on them, and no public page says which plans those are (20). No deprecation policy. The terms allow changes at any time with reasonable efforts at notice, and the one deprecated endpoint in the spec has no removal date (4). The trust centre lists 51 sub-processors with locations, updated 8 September 2026, and the status page names Frankfurt and Oregon processing regions (18). The checklist (https://www.anchorterminal.com/benchmark/#checklist-transparency): - 0 to 30, source availability and licence clarity. 30 for open source under an OSI licence, 15 for closed with clear terms, 0 for unclear terms. - 0 to 30, data handling and retention statements that agree with each other (privacy policy, DPA, retention periods, subprocessors). - 0 to 20, a deprecation policy or notices with dates. - 0 to 20, telemetry disclosed with an opt-out (local software), or subprocessors and data locations disclosed (hosted). The other half of Transparency and trust is the provenance score, computed from checked facts (below). The category score is the mean of the two. Provenance checks not met in full (half of this category, computed from checked facts): - Domain age: nutrient.io, registered 2019-12-03 (6 years) (11 of 15) - Terms of service: read, states 5 of the 7 things a reader expects (8.3 of 10) - Privacy policy: read, states 7 of the 8 things a reader expects (9.3 of 10) - security.txt: not found (0 of 10) ## 7. Maintenance & community, 78 out of 100, up to 1.9 more on the total Why it scored 78: MCP server v0.1.3 tagged 27 August 2026, 42 days before this check, and the TypeScript client 3.0.0 on 23 August (20). Four MCP releases since 10 July (0.1.0, 0.1.1, 0.1.2, 0.1.3) plus the client release (20). On GitHub, issue 35 was fixed the day it was filed, while issue 29 has been open since 8 June with no reply and pull request 42 since 28 August. Support answers through a form with a stated target of one business day (15 of 25). The MCP server is in the official registry as `io.github.PSPDFKit/nutrient-dws-mcp-server` at 0.1.3 (15). CI runs lint, build and tests with actions pinned to commit hashes (8). The checklist (https://www.anchorterminal.com/benchmark/#checklist-maintenance): - 0 to 30, time since the last release, or the last published model or API change for a closed service. 30 within 30 days, 20 within 90, 10 within 180, 0 older. - 20, at least three releases or dated changelog entries in the last 90 days. - 0 to 25, responsiveness. Issues and pull requests answered on GitHub (the open issues and how recent the replies are). For closed services, a public changelog and a support or community channel that answers, 0 to 15. - 15, presence in the official MCP registry under a verified namespace (MCP servers), or current official SDKs (APIs and models). - 10, package health, current dependencies and CI. Models are read for deprecation notice periods and model churn rather than release counts. ## Deductions Each comes off the total. A fixed and documented problem counts for less at the next check. - 2026-10-08. The product page FAQ says the API runs without strict rate limits or hard caps, while the pricing guide sets 100 requests a minute per key on every plan. The MCP product page also invites users to start on a free test key, which the test-mode guide says Support must enable first. Two points (https://www.nutrient.io/api/processor-api/, https://www.nutrient.io/guides/dws-processor/pricing.md). ## What we couldn't check What we couldn't read counted as absent. Publishing it on a page a plain HTTP fetch can read (not only in a browser) lets the next check count it. - unchecked: the pay-as-you-go price per credit on each plan. The pricing page draws it by script and our read showed a placeholder - unchecked: which plans have data retention enabled. The terms say it is indicated for each subscription plan, and the public pricing page does not say - unchecked: written incident reports. The status page's updates view returned an empty body, so the incident record is read from per-day downtime seconds in the JSON feed - unchecked: the per-tool credit table in the dashboard, which is behind a sign-in. The Markdown twin of the per-tool pricing guide has empty credit cells, so costs come from the twelve tools shown on the pricing page - unchecked: the date of OpenAPI version 1.19.0. No public API changelog was found - unchecked: the vulnerability disclosure policy and SOC 2 report in the trust centre, which need an access request - The lead called the MCP server a way to use the API. It is a local stdio package, not a hosted endpoint, and it also wraps the separate Data Extraction API ## Weaknesses - The status feed records 61 minutes of DWS Platform downtime on 13 July 2026 and five days with Processor API downtime since 23 July - Plans with data retention enabled let Nutrient keep files and train models on them, and no public page says which plans those are - The product page says there are no strict rate limits, while the pricing guide sets 100 requests a minute per key on every plan - No public API changelog or deprecation policy was found, and the terms allow changes to the API at any time - `Idempotency-Key` works only on async `/build` requests, and free-plan output is watermarked ## What costs an agent a turn today The notes we give agents before they call it. Each one is a workaround an agent shouldn't need. - Send `Authorization: Bearer <key>` to `https://api.nutrient.io`. Use `POST /build` with an `instructions` JSON part to chain several actions in one charged request - Call `POST /analyze_build` first to get the credit cost of a build. The call is free - Stay under 100 requests a minute per key and back off exponentially on 429. Test keys allow 10 a minute and 5 MB - For long jobs send `Prefer: respond-async` with an `Idempotency-Key`, then poll the `Location` URL with `X-Async-Job-Token` after `Retry-After` - Set `SANDBOX_PATH` for the MCP server. Without it the server reads and writes any path the user account can reach ## When it's done Send what changed and where it's published as a dispute (https://www.anchorterminal.com/builders/#disputes, or `POST https://www.anchorterminal.com/api/v1/contact` with `"kind": "dispute"`). Disputes are answered in public, and the listing is checked again by the same checklist. Paying for an audit or a listing claim changes nothing here.
What we couldn't check
- unchecked: the pay-as-you-go price per credit on each plan. The pricing page draws it by script and our read showed a placeholder
- unchecked: which plans have data retention enabled. The terms say it is indicated for each subscription plan, and the public pricing page does not say
- unchecked: written incident reports. The status page's updates view returned an empty body, so the incident record is read from per-day downtime seconds in the JSON feed
- unchecked: the per-tool credit table in the dashboard, which is behind a sign-in. The Markdown twin of the per-tool pricing guide has empty credit cells, so costs come from the twelve tools shown on the pricing page
- unchecked: the date of OpenAPI version 1.19.0. No public API changelog was found
- unchecked: the vulnerability disclosure policy and SOC 2 report in the trust centre, which need an access request
- The lead called the MCP server a way to use the API. It is a local stdio package, not a hosted endpoint, and it also wraps the separate Data Extraction API
Sources 25
- llms.txt for the Processor API nutrient.io · seen 2026-10-08
- getting started guide nutrient.io · seen 2026-10-08
- API reference nutrient.io · seen 2026-10-08
- OpenAPI 3.1 document, version 1.19.0 cdn.cloud.nutrient.io · seen 2026-10-08
- authentication guide nutrient.io · seen 2026-10-08
- errors guide nutrient.io · seen 2026-10-08
- pricing guide with rate limits nutrient.io · seen 2026-10-08
- pricing page nutrient.io · seen 2026-10-08
- product page and FAQ nutrient.io · seen 2026-10-08
- test mode guide nutrient.io · seen 2026-10-08
- security guide nutrient.io · seen 2026-10-08
- privacy guide nutrient.io · seen 2026-10-08
- DWS API licence agreement nutrient.io · seen 2026-10-08
- privacy policy nutrient.io · seen 2026-10-08
- trust centre and sub-processor list trust.nutrient.io · seen 2026-10-08
- security page nutrient.io · seen 2026-10-08
- status page nutrientstatus.com · seen 2026-10-08
- status page JSON feed nutrientstatus.com · seen 2026-10-08
- OAuth server metadata api.nutrient.io · seen 2026-10-08
- MCP server repository, source, tags and changelog github.com · seen 2026-10-08
- MCP registry search registry.modelcontextprotocol.io · seen 2026-10-08
- npm, TypeScript client registry.npmjs.org · seen 2026-10-08
- PyPI, Python client pypi.org · seen 2026-10-08
- RDAP for nutrient.io rdap.identitydigital.services · seen 2026-10-08
- security.txt (404) nutrient.io · seen 2026-10-08
Probe metrics
Not measured yet. Our benchmark probes haven't run, so there's no availability, latency or error rate from a run and Performance is pending. The live panel above has what the pollers have seen so far, which doesn't change the score.
Pricing & changes
Freemium $75 / mo Free plan of 50 credits a month, no card, with watermarked output. Paid plans are Starter $75 a month for 1,000 credits, Growth $275 for 5,000 and Pro $445 for 10,000, with 10 per cent off billed yearly and custom plans above that. Most tools cost a fixed number of credits per use, from 0.5 to 10, and AI redaction is priced per page. Pay-as-you-go overage has a spending cap, and on the free plan starts with a $25 wallet load. The per-credit overage rate was not readable (https://www.nutrient.io/api/pricing/processor-api/, checked 2026-10-08).
Prices
| Item | Price | Unit | Note |
|---|---|---|---|
| Starter | $75 | per month (plan) | 1,000 credits. $67 a month billed yearly |
| Growth | $275 | per month (plan) | 5,000 credits. $247 a month billed yearly |
| Pro | $445 | per month (plan) | 10,000 credits. $399 a month billed yearly |
| Credit on Starter | $0.075 | per credit | Worked out from $75 for 1,000 credits. Merge costs 1 credit, OCR 2, a digital signature 10 |
Compared across listings on the price index.
Recent changes
- Latest release
Follow them as a feed at /feeds/tools/nutrient-dws-processor.xml, or this listing's score history at history.json.
Connect
Install
npm install @nutrient-sdk/dws-client-typescript
First request
curl -X POST 'https://api.nutrient.io/build' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-F 'index.html=@index.html' \
-F 'instructions={"parts":[{"html":"index.html"}]}' \
-o hello.pdf
MCP client configuration
{
"mcpServers": {
"nutrient-dws": {
"args": [
"-y",
"@nutrient-sdk/dws-mcp-server"
],
"command": "npx",
"env": {
"SANDBOX_PATH": "/your/sandbox/directory"
}
}
}
}
Through letme picks today, calling later
GET https://letme.dev/nutrient-dws-processor
letme picks this listing for pdf.convert, because it's the top-graded tool for the job. letme picks this listing for pdf.extract, because it's the top-graded tool for the job. letme picks this listing for pdf.forms, because it's the top-graded tool for the job. letme picks this listing for pdf.merge, because it's the top-graded tool for the job.
letme.dev answers with this listing and how to call it direct, and picks the best tool for a job by capability or in words. Calling through letme (one key, the vendor's own price) comes later. Nothing on letme.dev is for people to look at; this page explains it.
Compare with
Adobe PDF Services / PDF Extract API CPDF.co API + MCP FFoxit PDF Services API DAmazon Textract BBAzure Document Intelligence BExtend API + MCP B
Head to head Foxit PDF Services API vs Nutrient DWS Processor API · Nutrient DWS Processor API vs PDF.co API + MCP
Machine-readable
| Similar tool | Grade | Score | Shared capabilities | x402 |
|---|---|---|---|---|
| Adobe PDF Services / PDF Extract API Adobe | C | 55.9 | docs.ocr docs.tables pdf.convert pdf.merge pdf.forms pdf.generate pdf.extract | no |
| PDF.co API + MCP PDF.co (Artifex Software) | F | 37.9 | pdf.convert pdf.merge pdf.forms pdf.generate pdf.extract docs.ocr docs.tables | no |
| Foxit PDF Services API Foxit Software Incorporated | D | 48.3 | pdf.convert pdf.merge pdf.forms pdf.generate pdf.extract docs.ocr | no |
| Amazon Textract Amazon Web Services | BB | 73.5 | docs.ocr docs.tables | no |
| Azure Document Intelligence Microsoft Azure | B | 66 | docs.ocr docs.tables | no |
| Extend API + MCP Extend | B | 62.9 | docs.ocr docs.tables | no |
Machine-readable
- JSON
/api/v1/tools/nutrient-dws-processor.json· historyhistory.json· badge/badges/nutrient-dws-processor.svg· changes feed/feeds/tools/nutrient-dws-processor.xml - Markdown
/tools/nutrient-dws-processor.md· slim/tools/nutrient-dws-processor.min.md(or sendAccept: text/markdown) - Fix list
/fixes/nutrient-dws-processor.md·/fixes/nutrient-dws-processor.json - From a terminal
anchor tool nutrient-dws-processor --md(the CLI) · over MCPget_tool {"slug": "nutrient-dws-processor"}at/mcp, no key - Directory index
/api/v1/tools.json· site index/llms.txt
Verify this listing
For the vendorIs this your product? Link to this page from your own site or README, then tell us where. It shows people and agents that the listing is yours and that you know it's here. It never changes a grade, rank or review.
-
Add the badge or a link
On a light page On a dark page <a href="https://www.anchorterminal.com/tools/nutrient-dws-processor"><img src="https://www.anchorterminal.com/badges/nutrient-dws-processor.svg" alt="Nutrient DWS Processor API on Anchor Terminal" height="20"></a>[](https://www.anchorterminal.com/tools/nutrient-dws-processor)<a href="https://www.anchorterminal.com/tools/nutrient-dws-processor">Nutrient DWS Processor API on Anchor Terminal</a>It counts on a page on nutrient.io or one of its subdomains, or the README of github.com/PSPDFKit/nutrient-dws-mcp-server.
-
Tell us where it is
We read it once now and again every week. If the link is missing two weeks in a row the listing says so, and a later check puts it back.
Agents send the same to POST /api/v1/verify as {"slug": "nutrient-dws-processor", "url": "…"}, or call the verify_listing tool at /mcp. Ten checks an hour from one address. What we check. To announce the listing, get sharing assets for social media.


