{
  "data": {
    "a": {
      "slug": "nutrient-dws-processor",
      "name": "Nutrient DWS Processor API",
      "vendor": "Nutrient (PSPDFKit GmbH)",
      "vendorUrl": "https://www.nutrient.io",
      "kind": "http-api",
      "category": "pdf-tools",
      "summary": "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 the hosted Nutrient MCP server.",
      "url": "https://www.anchorterminal.com/tools/nutrient-dws-processor",
      "markdownUrl": "https://www.anchorterminal.com/tools/nutrient-dws-processor.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/nutrient-dws-processor.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/nutrient-dws-processor.json",
      "dns": "nutrient-dws-processor.grade.anchorterminal.com",
      "repo": "https://github.com/PSPDFKit/nutrient-dws-mcp-server",
      "license": "Proprietary service under the Nutrient DWS API licence agreement. The MCP server and the TypeScript and Python clients are MIT",
      "transports": [
        "http",
        "streamable-http"
      ],
      "remoteUrl": "https://api.nutrient.io",
      "packages": [
        {
          "registry": "npm",
          "name": "@nutrient-sdk/dws-client-typescript"
        },
        {
          "registry": "pypi",
          "name": "nutrient-dws"
        }
      ],
      "auth": "mixed",
      "authNotes": "Self-serve. A person signs up at dashboard.nutrient.io and copies a live key, sent as `Authorization: Bearer \u003ckey\u003e`. Keys can be scoped to one DWS product. `POST /tokens` issues a JWT limited to named operations and origins, valid for one hour by default and at most 24, and revocable with `DELETE /tokens`. The hosted MCP server at https://mcp.nutrient.io/mcp uses OAuth with a Nutrient account (scope `mcp:invoke`, product scopes such as `product:processor`) and takes no API key. Test keys need Support to enable them.",
      "pricing": "freemium",
      "pricingNotes": "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).",
      "priceSummary": "$75 / mo",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the guides, the OpenAPI document, the pricing page or the MCP server README (checked 2026-10-08).",
        "endpoints": []
      },
      "toolCount": 14,
      "popularity": {
        "githubStars": 71,
        "npmWeekly": 2701,
        "pypiWeekly": 2214,
        "asOf": "2026-10-08"
      },
      "docsUrl": "https://www.nutrient.io/guides/dws-processor/",
      "llmsTxt": "https://www.nutrient.io/guides/dws-processor/llms.txt",
      "openapi": "https://cdn.cloud.nutrient.io/dws/assets/specs/public@1.19.0-ec566a84de4ef6c97fd9b586262ddcc4.yml",
      "registryName": "io.nutrient/mcp",
      "capabilities": [
        "pdf.convert",
        "pdf.merge",
        "pdf.forms",
        "pdf.generate",
        "pdf.extract",
        "docs.ocr",
        "docs.tables"
      ],
      "tags": [
        "hosted",
        "mcp",
        "oauth",
        "openapi",
        "llms-txt",
        "typescript",
        "python",
        "async-jobs",
        "free-tier",
        "status-page",
        "soc2"
      ],
      "lastRelease": "2026-10-14",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 71.6,
        "grade": "BB",
        "agentReady": true,
        "rank": 135,
        "ranked": true,
        "rankOf": 1349,
        "categoryRank": 1,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 79,
          "maintenance": 83,
          "payments": 40,
          "reliability": 78,
          "schema": 82,
          "security": 68,
          "transparency": 76
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-01"
        },
        "negative": -1,
        "negativeNotes": [
          "2026-10-08. The product page FAQ said the API runs without strict rate limits or hard caps, while the pricing guide set 100 requests a minute per key on every plan, and the MCP product page invited users to start on a free test key, which the test-mode guide says Support must enable first. By 17 October the FAQ gives 100 requests a minute per key and the rewritten MCP page no longer mentions test keys. Fixed within about nine days, so one point, down from two (https://www.nutrient.io/api/processor-api/, https://www.nutrient.io/api/mcp-server-pdf-automation-llm/)."
        ],
        "verdict": "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 local MCP server lost support the day a hosted one replaced it, and the terms let plans with data retention train models on submitted files.",
        "bestFor": "An agent that must change or produce documents (merge, convert, OCR, redact, sign, fill forms) in one chained request with predictable per-use cost, and assistants that want those tools plus extraction through one hosted MCP URL.",
        "strengths": [
          "OpenAPI 3.1 document (17 operations in version 1.19.0, now 1.20.0), with llms.txt indexes and a Markdown twin of every guide",
          "Errors return `failingPaths` in JSONPath form, a `requestId`, and machine-readable `error.reason` codes for async jobs",
          "OAuth with PKCE and per-product scopes, plus JWTs limited by operation, origin and expiry of up to 24 hours",
          "Hosted MCP server needs no install or API key and spends the same credits as the API",
          "Free plan of 50 credits a month with no card, and the vendor says failed requests (4xx or 5xx) cost no credits"
        ],
        "weaknesses": [
          "The local MCP server lost support on 14 October 2026, the day the change was announced",
          "Plans with data retention enabled let Nutrient keep files and train models on them, and no public page says which plans those are",
          "No public changelog for the API or the hosted MCP server, and no deprecation policy",
          "The status page has no component for the hosted MCP server, and no SLA is published",
          "`Idempotency-Key` works only on async `/build` requests, and free-plan output is watermarked"
        ],
        "agentNotes": [
          "Send `Authorization: Bearer \u003ckey\u003e` 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",
          "Use the hosted MCP at https://mcp.nutrient.io/mcp, not `@nutrient-sdk/dws-mcp-server`, which gets no fixes after 14 October 2026",
          "Ask for a lighter parse mode on simple PDFs. The hosted MCP reads documents in agentic mode by default, at 18 credits a page",
          "Turn on pay-as-you-go or use Processor tools only on a free plan, since free plans include no Data Extraction credits and the hosted MCP reads documents with them"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 4,
        "avgRating": 3.3,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "BB",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 71.6
          }
        ],
        "editorialScores": {
          "ergonomics": 79,
          "maintenance": 83,
          "payments": 40,
          "reliability": 78,
          "schema": 82,
          "security": 68,
          "transparency": 66
        },
        "provenanceScore": 86,
        "checked": {
          "categories": {
            "ergonomics": "2026-11-01",
            "maintenance": "2026-11-01",
            "payments": "2026-11-01",
            "reliability": "2026-11-01",
            "schema": "2026-11-01",
            "security": "2026-11-01",
            "transparency": "2026-11-01"
          },
          "last": "2026-11-01",
          "lastMoved": "2026-10-28",
          "oldest": "2026-11-01",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "install": "npm install @nutrient-sdk/dws-client-typescript",
        "http": "curl -X POST 'https://api.nutrient.io/build' \\\n  -H 'Authorization: Bearer YOUR_API_KEY' \\\n  -F 'index.html=@index.html' \\\n  -F 'instructions={\"parts\":[{\"html\":\"index.html\"}]}' \\\n  -o hello.pdf",
        "claudeCode": "claude mcp add --transport http --scope user nutrient https://mcp.nutrient.io/mcp",
        "config": {
          "mcpServers": {
            "nutrient": {
              "type": "streamable-http",
              "url": "https://mcp.nutrient.io/mcp"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/pdf.convert",
        "tool": "https://letme.dev/nutrient-dws-processor"
      },
      "area": "web-data",
      "unitPrices": [
        {
          "item": "Starter",
          "unit": "month",
          "usd": 75,
          "note": "1,000 credits. $67 a month billed yearly"
        },
        {
          "item": "Growth",
          "unit": "month",
          "usd": 275,
          "note": "5,000 credits. $247 a month billed yearly"
        },
        {
          "item": "Pro",
          "unit": "month",
          "usd": 445,
          "note": "10,000 credits. $399 a month billed yearly"
        },
        {
          "item": "Credit on Starter",
          "unit": "credit",
          "usd": 0.075,
          "note": "Worked out from $75 for 1,000 credits. Merge costs 1 credit, OCR 2, a digital signature 10"
        }
      ],
      "provenance": {
        "legalEntity": "PSPDFKit GmbH",
        "domain": "nutrient.io",
        "domainRegistered": "2019-12-03",
        "endpointOnVendorDomain": true,
        "terms": "https://www.nutrient.io/legal/cloud-terms/",
        "privacy": "https://www.nutrient.io/legal/privacy/",
        "statusPage": "https://www.nutrientstatus.com",
        "changelog": "https://github.com/PSPDFKit/nutrient-dws-mcp-server/blob/main/CHANGELOG.md",
        "securityTxt": "none",
        "checked": "2026-11-01",
        "notes": [
          "The DWS API licence agreement (last updated October 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.",
          "www.nutrient.io/.well-known/security.txt returns 404 (re-checked on 1 November 2026). 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.",
          "The changelog link is the local MCP server's, which stopped with that server on 14 October 2026. No public changelog for the API or the hosted MCP server was found."
        ],
        "score": 86
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/nutrient-dws-processor.json",
      "live": {
        "slug": "nutrient-dws-processor",
        "probe": {
          "target": "https://api.nutrient.io",
          "method": "get",
          "lastAt": "2026-11-04T20:47:03.421168229Z",
          "lastOk": true,
          "lastStatus": 200,
          "lastMs": 263,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 99.95,
          "p50ms24h": 226,
          "p95ms24h": 383,
          "samples24h": 246,
          "samples30d": 6644,
          "days": [
            {
              "date": "2026-10-09",
              "probes": 169,
              "ok": 169
            },
            {
              "date": "2026-10-10",
              "probes": 247,
              "ok": 246
            },
            {
              "date": "2026-10-11",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-12",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-13",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-14",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-15",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-16",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-17",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-18",
              "probes": 256,
              "ok": 256
            },
            {
              "date": "2026-10-19",
              "probes": 255,
              "ok": 254
            },
            {
              "date": "2026-10-20",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-21",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-22",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-23",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-24",
              "probes": 251,
              "ok": 251
            },
            {
              "date": "2026-10-25",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-10-26",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-27",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-28",
              "probes": 251,
              "ok": 250
            },
            {
              "date": "2026-10-29",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-30",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-31",
              "probes": 251,
              "ok": 251
            },
            {
              "date": "2026-11-01",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-11-02",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-11-03",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-11-04",
              "probes": 214,
              "ok": 214
            }
          ]
        },
        "vendorStatus": {
          "page": "https://www.nutrientstatus.com",
          "indicator": "unknown",
          "summary": "no machine-readable status found",
          "checkedAt": "2026-11-04T17:14:12.18534684Z"
        },
        "versions": [
          {
            "registry": "github",
            "name": "PSPDFKit/nutrient-dws-mcp-server",
            "version": "v0.1.3",
            "released": "2026-08-28",
            "seenAt": "2026-11-04T20:40:31.655591855Z"
          },
          {
            "registry": "mcp-registry",
            "name": "io.github.PSPDFKit/nutrient-dws-mcp-server",
            "version": "0.1.3",
            "seenAt": "2026-10-17T05:11:56.292414565Z"
          },
          {
            "registry": "mcp-registry",
            "name": "io.nutrient/mcp",
            "version": "2.0.0",
            "seenAt": "2026-11-04T17:11:44.552009456Z"
          },
          {
            "registry": "npm",
            "name": "@nutrient-sdk/dws-client-typescript",
            "version": "3.0.0",
            "seenAt": "2026-11-04T20:40:30.750966835Z"
          },
          {
            "registry": "npm",
            "name": "@nutrient-sdk/dws-mcp-server",
            "version": "0.1.3",
            "seenAt": "2026-10-17T02:05:31.589466999Z"
          },
          {
            "registry": "pypi",
            "name": "nutrient-dws",
            "version": "3.1.0",
            "released": "2026-05-27",
            "seenAt": "2026-11-04T20:40:31.263904994Z"
          }
        ],
        "githubStars": 71,
        "npmWeekly": 3494,
        "pypiWeekly": 2422,
        "securityTxt": {
          "url": "https://nutrient.io/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-11-04T15:53:42.660137621Z"
        },
        "llmsTxt": {
          "url": "https://www.nutrient.io/guides/dws-processor/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-11-04T15:23:40.329927941Z"
        },
        "domain": {
          "domain": "nutrient.io",
          "checkedAt": "2026-11-01T14:27:29.720335664Z"
        },
        "pages": [
          {
            "url": "https://raw.githubusercontent.com/PSPDFKit/nutrient-dws-mcp-server/main/CHANGELOG.md",
            "kind": "changelog",
            "status": 304,
            "checkedAt": "2026-11-04T08:32:04.223748585Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "8a1c5e1c4c5e"
          },
          {
            "url": "https://www.nutrient.io/api/pricing/processor-api/",
            "kind": "pricing",
            "status": 200,
            "checkedAt": "2026-11-04T08:42:55.120067901Z",
            "changedAt": "2026-11-03T08:08:46.955451188Z",
            "fingerprint": "1619ad7c7031"
          },
          {
            "url": "https://www.nutrient.io/legal/privacy/",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-11-04T08:42:59.3957802Z",
            "changedAt": "2026-10-29T05:25:33.66720737Z",
            "fingerprint": "624850a3279c"
          },
          {
            "url": "https://www.nutrient.io/legal/cloud-terms/",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-11-04T08:42:57.568493809Z",
            "changedAt": "2026-10-29T05:25:31.23575275Z",
            "fingerprint": "c9aeae64cf01"
          }
        ],
        "github": {
          "repo": "pspdfkit/nutrient-dws-mcp-server",
          "checkedAt": "2026-11-02T09:18:54.141337901Z",
          "stars": 71,
          "archived": true,
          "issuesEnabled": true,
          "pushedAt": "2026-10-14T20:03:16Z",
          "openIssues": 1,
          "openPRs": 0,
          "issuesOpened90d": 1,
          "issuesClosed90d": 1,
          "prsMerged90d": 8,
          "ci": {
            "branch": "main",
            "runs": 15,
            "success": 15,
            "failure": 0,
            "other": 0,
            "latest": "success",
            "latestAt": "2026-08-28T00:03:53Z"
          },
          "replies": {
            "sampled": 3,
            "unanswered": 1,
            "medianDays": 0.4
          }
        },
        "updatedAt": "2026-11-04T20:47:03.421168229Z"
      }
    },
    "answer": "Nutrient DWS Processor API scores 71.6 (BB) on agent readiness against pdfRest API Toolkit's 57.7 (C), and leads in 5 of 7 scored categories. pdfRest API Toolkit leads on schema \u0026 documentation.",
    "b": {
      "slug": "pdfrest",
      "name": "pdfRest API Toolkit",
      "vendor": "Datalogics, Inc.",
      "vendorUrl": "https://pdfrest.com",
      "kind": "http-api",
      "category": "pdf-tools",
      "summary": "pdfRest is Datalogics' REST API for converting, merging, splitting, compressing, securing, signing, redacting and extracting from PDFs, built on the Adobe PDF Library. It runs as a cloud API with US and EU endpoints or as a self-hosted container.",
      "url": "https://www.anchorterminal.com/tools/pdfrest",
      "markdownUrl": "https://www.anchorterminal.com/tools/pdfrest.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/pdfrest.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/pdfrest.json",
      "dns": "pdfrest.grade.anchorterminal.com",
      "repo": "https://github.com/datalogics/pdfRest-Status-Page",
      "transports": [
        "http"
      ],
      "remoteUrl": "https://api.pdfrest.com",
      "packages": [],
      "auth": "api-key",
      "authNotes": "One API key per account, issued after a browser signup and sent in the `Api-Key` header; the OpenAPI document defines that header as the only scheme, while the polling guide still shows `Authorization: Bearer`. No scopes, expiry or rotation guide found; the terms say keys can be revoked.",
      "pricing": "freemium",
      "pricingNotes": "Starter free with 100 API calls a month and watermarked output, no card. Premium $9.99 a month for 600 calls then $0.115 a call, Pro $99.99 for 5,000 then $0.06, Enterprise $349.99 for 15,000 then $0.035, about 10 per cent off yearly. EU endpoint calls cost $0.04 and $0.02 extra on Premium and Pro, Pro Tools $0.10 a call on Premium. Container licences from $124.99 a month (https://pdfrest.com/pricing/).",
      "priceSummary": "$9.99 / mo",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the OpenAPI document, docs, llms.txt or pricing (checked 2026-11-03). Overage is billed to the plan.",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": null,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-11-03"
      },
      "docsUrl": "https://docs.pdfrest.com/",
      "llmsTxt": "https://pdfrest.com/llms.txt",
      "openapi": "https://api.pdfrest.com/pdfrest-openapi.json",
      "capabilities": [
        "pdf.convert",
        "pdf.merge",
        "pdf.forms",
        "pdf.generate",
        "pdf.extract",
        "docs.ocr"
      ],
      "tags": [
        "hosted",
        "self-hosted",
        "freemium",
        "no-card",
        "free-tier",
        "openapi",
        "llms-txt",
        "async-jobs",
        "soc2",
        "eu-region",
        "status-page",
        "closed-source"
      ],
      "lastRelease": "2026-10-14",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 57.7,
        "grade": "C",
        "agentReady": false,
        "rank": 700,
        "ranked": true,
        "rankOf": 1349,
        "categoryRank": 4,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 52,
          "maintenance": 70,
          "payments": 40,
          "reliability": 58,
          "schema": 90,
          "security": 37,
          "transparency": 62
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-03"
        },
        "negative": 0,
        "verdict": "A public OpenAPI 3.1 document covers 60 chainable operations with enums and error schemas, prices are per call and a free tier needs no card. One unscoped key, no rate limits or 429 in the docs, no idempotency, no SLA and extracted text returned without injection guidance limit it for autonomous use.",
        "bestFor": "Agents that process existing PDFs, converting, merging, compressing, redacting, signing or extracting, with a spec they can read and chainable outputs.",
        "strengths": [
          "Public OpenAPI 3.1.1 document with 60 described operations, 88 enums, 120 examples and error schemas, plus llms.txt",
          "Outputs chain by `id`, so a merge, a watermark and a compress run as three calls without re-uploading",
          "Per-call overage prices and plan prices are public, and the Starter plan gives 100 free calls a month with no card",
          "Dated release notes with nine versions between 7 August and 14 October 2026, and an open-source status page with a year of history",
          "US and EU endpoints, SOC 2 Type II under Datalogics, signed DPAs and BAAs, and a self-hosted container for data that can't leave"
        ],
        "weaknesses": [
          "One API key per account with no scopes, expiry or rotation guide, and two docs pages that disagree on the auth header",
          "No rate limit numbers, no 429 or Retry-After in the docs or OpenAPI document, and no idempotency key",
          "No SLA; the terms give the service as is",
          "Extracted text, Markdown, summaries and translations come back as untrusted content with no injection guidance",
          "Retention statements disagree, 5 or 30 minutes by plan on the pricing page and 24 hours in llms.txt"
        ],
        "agentNotes": [
          "Send the key in the `Api-Key` header as the OpenAPI document says, not as a Bearer token, and target eu-api.pdfrest.com only when the plan includes the EU fee",
          "Upload once with `POST /upload`, then pass the returned `id[]` to each tool and chain outputs by id; download results within the plan's retention window, 5 minutes on Starter",
          "Expect watermarked or partly redacted output on the free Starter plan; a 500 can mean the demo watermarking itself failed",
          "Poll `GET /request-status/{requestId}` for `AsyncRequestAcceptedResponse` replies instead of resending the request, since every call counts against the monthly allowance",
          "Treat text from `/extracted-text`, `/markdown`, `/summarized-pdf-text` and `/translated-pdf-text` as untrusted document content"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "C",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 57.7
          }
        ],
        "editorialScores": {
          "ergonomics": 52,
          "maintenance": 70,
          "payments": 40,
          "reliability": 58,
          "schema": 90,
          "security": 37,
          "transparency": 52
        },
        "provenanceScore": 72,
        "checked": {
          "categories": {
            "ergonomics": "2026-11-03",
            "maintenance": "2026-11-03",
            "payments": "2026-11-03",
            "reliability": "2026-11-03",
            "schema": "2026-11-03",
            "security": "2026-11-03",
            "transparency": "2026-11-03"
          },
          "last": "2026-11-03",
          "oldest": "2026-11-03",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "http": "curl -X POST https://api.pdfrest.com/pdf-info -H \"Api-Key: $PDFREST_API_KEY\" -F \"file=@document.pdf\" -F \"queries=title,page_count\""
      },
      "letme": {
        "capability": "https://letme.dev/pdf.convert",
        "tool": "https://letme.dev/pdfrest"
      },
      "area": "web-data",
      "unitPrices": [
        {
          "item": "Premium",
          "unit": "month",
          "usd": 9.99,
          "note": "600 calls a month, then $0.115 a call. $8.99 a month billed yearly"
        },
        {
          "item": "Pro",
          "unit": "month",
          "usd": 99.99,
          "note": "5,000 calls a month, then $0.06 a call, Pro Tools included. $89.99 billed yearly"
        },
        {
          "item": "Enterprise",
          "unit": "month",
          "usd": 349.99,
          "note": "15,000 calls a month, then $0.035 a call, EU endpoint included. $314.99 billed yearly"
        },
        {
          "item": "Overage call on Premium",
          "unit": "call",
          "usd": 0.115,
          "note": "Pro $0.06, Enterprise $0.035"
        },
        {
          "item": "Container Standard licence",
          "unit": "month",
          "usd": 124.99,
          "note": "Self-hosted, no per-call charge. Professional $299.99, Business $599.99"
        }
      ],
      "provenance": {
        "legalEntity": "Datalogics, Inc.",
        "domain": "pdfrest.com",
        "domainRegistered": "2022-07-26",
        "endpointOnVendorDomain": true,
        "terms": "https://pdfrest.com/termsofservice/",
        "privacy": "https://pdfrest.com/privacypolicy/",
        "statusPage": "https://status.pdfrest.com/",
        "changelog": "https://docs.pdfrest.com/release-notes/",
        "securityTxt": "none",
        "checked": "2026-11-03",
        "notes": [
          "The terms and privacy policy name Datalogics, Inc. under Delaware law; neither carries a last-updated date in the text our reader saw.",
          "pdfrest.com/robots.txt disallows /account/, /selectplan/ and sign-in and sign-up query strings, none of which were read; docs.pdfrest.com and api.pdfrest.com allow everything.",
          "The terms forbid multiple Free or Starter accounts for production or to get round limits, and contain no clause on automated reading of the website.",
          "status.pdfrest.com is an Upptime page whose history is the datalogics/pdfRest-Status-Page repository, one check on the /up endpoint since 23 July 2026.",
          "RDAP gives pdfrest.com a registration date of 26 July 2022, used for firstReleased in the absence of an earlier dated page. /.well-known/security.txt returns 404; pdfrest.com/support redirects to a Jira service desk."
        ],
        "score": 72
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/pdfrest.json",
      "live": {
        "slug": "pdfrest",
        "probe": {
          "target": "https://api.pdfrest.com",
          "method": "get",
          "lastAt": "2026-11-04T20:47:06.945412715Z",
          "lastOk": true,
          "lastStatus": 404,
          "lastMs": 382,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 348,
          "p95ms24h": 441,
          "samples24h": 55,
          "samples30d": 55,
          "days": [
            {
              "date": "2026-11-04",
              "probes": 55,
              "ok": 55
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.pdfrest.com",
          "indicator": "unknown",
          "summary": "no machine-readable status found",
          "checkedAt": "2026-11-04T15:32:28.523830202Z"
        },
        "githubStars": 1,
        "securityTxt": {
          "url": "https://pdfrest.com/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-11-04T15:53:23.2786211Z"
        },
        "updatedAt": "2026-11-04T20:47:06.945412715Z"
      }
    },
    "edges": [
      {
        "by": 31,
        "category": "security",
        "leads": "nutrient-dws-processor",
        "name": "Security \u0026 auth",
        "reasons": {
          "a": "OAuth at api.nutrient.io with PKCE (S256), dynamic client registration, a revocation endpoint and per-product scopes; the hosted MCP server asks for `mcp:invoke` and accepts `product:processor`, `product:data_extraction` and others. 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 and product scopes on OAuth, but no confirmation step. The supported MCP route is now hosted and reads no local paths, so the local server's unrestricted file access without `SANDBOX_PATH` no longer applies (15, up from 13). Document text comes back as untrusted content, and no prompt-injection guidance was found (4). Each response reports credit cost and remaining credits with a request id, a usage endpoint exists, and extraction runs from the MCP server land in a run history the person can review. 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, per the 8 October check. security.txt is still a 404 and no bounty was established (15). 28+15+4+6+15 = 68.",
          "b": "One `Api-Key` header per account, revocable per the terms, with no scopes, expiry or rotation guide, and the polling guide shows a Bearer header instead (14). No read-only key; `/delete` removes uploaded files and there is no confirmation step, though demo output is watermarked (4). Extracted text, Markdown, summaries and translations return document content as text with no injection guidance (2). The container edition logs audit events; nothing documents per-call visibility for cloud accounts beyond usage counts (5). SOC 2 Type 2 through Datalogics' trust centre, HIPAA BAAs and a DPA, but no security.txt, disclosure policy or bug bounty found (12). 14 + 4 + 2 + 5 + 12 = 37."
        },
        "scores": {
          "a": 68,
          "b": 37
        }
      },
      {
        "by": 27,
        "category": "ergonomics",
        "leads": "nutrient-dws-processor",
        "name": "Agent ergonomics",
        "reasons": {
          "a": "API responses are files or `json-content` with switches for plain text, structured text, key-value pairs and tables. Smithery's copy of the hosted MCP server's tool list shows 14 tools and about 60,000 characters of names, descriptions and input schemas, which we couldn't confirm first-hand. That puts it in the 11 to 30 band with no toolsets or read-only subset, read as openmetadata (16 tools, 49,602 characters) and plane (30 tools, about 67,000) are (15). Page ranges per part and output switches. 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. In Smithery's copy every hosted tool carries readOnlyHint, destructiveHint and idempotentHint, and `process_document` requires an `idempotency_key` (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). 15+15+18+17+14 = 79.",
          "b": "Responses are small JSON bodies with output ids and URLs, and `/pdf-info` takes a `queries` list to size its answer (18). Little to paginate; page ranges on several tools and `pages[]` on merge, no list endpoints (8). Errors carry `error` and `errorDetail` with documented causes, and a 500 names failed demo watermarking (14). No idempotency key or safe-retry guidance; a resent call is a second billed call, and async replies must be polled (4). Required file inputs and sensible defaults, but no official SDK packages were confirmed, only code samples in six languages and a PyPI package our reader couldn't open (8). 18 + 8 + 14 + 4 + 8 = 52."
        },
        "scores": {
          "a": 79,
          "b": 52
        }
      },
      {
        "by": 20,
        "category": "reliability",
        "leads": "nutrient-dws-processor",
        "name": "Reliability",
        "reasons": {
          "a": "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 read on 1 November 2026 covers 3 August to 1 November. The Processor API was down on five days, the longest 451 seconds on 6 August and the latest 205 seconds on 30 October. DWS Platform was down 45 seconds on 23 August and 154 seconds on 7 September, and the Data Extraction API 1,763 seconds (about 29 minutes) on 1 September. Nothing reaches an hour, so minor only (20). The feed has no component for the hosted MCP server. The pricing guide and the product page FAQ give 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.20.0 (10). 20+20+15+13+0+10 = 78.",
          "b": "Read with the hosted lines. status.pdfrest.com is an Upptime page with a single check on the /up endpoint, backed by a public repository with daily history; one component and no incident write-ups (15). The repository shows 100 per cent uptime over 7 and 30 days, 99.95 per cent over a year and no down entries in the last 200 daily history commits (30). No request rate limit is documented and the OpenAPI document defines no 429 (0). A 408 timeout is documented and `/request-status` polls async jobs, but there is no 429 handling, backoff guidance or idempotency key (3). No SLA; the terms give the service as is (0). GA (10). 15 + 30 + 0 + 3 + 0 + 10 = 58."
        },
        "scores": {
          "a": 78,
          "b": 58
        }
      },
      {
        "by": 14,
        "category": "transparency",
        "leads": "nutrient-dws-processor",
        "name": "Transparency \u0026 trust",
        "reasons": {
          "a": "The API is closed under a dated licence agreement (October 2026) naming PSPDFKit GmbH, and the TypeScript and Python clients are MIT, as is the now unsupported local MCP server, 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. The MCP page says the server keeps nothing, uploads expire after 24 hours, and extraction runs stay in the run history until deleted. Plans with retention enabled let Nutrient keep files and train models on them, and no public page says which plans those are. The October 2026 terms add that free-tier settings apply to Enterprise evaluations unless Nutrient disables retention, and that a paid plan switched to retention needs the customer's acceptance while a free plan needs only advance notice (20). No deprecation policy, and the terms allow changes at any time. The local MCP server's end of support is dated 14 October 2026 in the repository and on npm, with the hosted server named as the replacement, but it took effect the day it was announced (8, up from 4). The trust centre lists 51 sub-processors with locations, updated 8 September 2026, and the status page names Frankfurt and Oregon processing regions, per the 8 October check (18). 20+20+8+18 = 66.",
          "b": "Closed service with terms and a privacy policy that name Datalogics, Inc. (15). Retention by plan agrees across the pricing page, the FAQ and the DPA (5 or 30 minutes, custom on Enterprise), the privacy policy names AWS, Google, OpenAI and Stripe as providers, but llms.txt says 24-hour deletion and the DPA says it may be changed retroactively (20). Release notes record changes, and 2.56.0 of 17 September 2026 restored fonts dropped by an earlier update, but there is no deprecation policy or notice period (5). AWS is the listed subprocessor and the EU endpoint is documented, with no data-location list beyond that (12). 15 + 20 + 5 + 12 = 52."
        },
        "scores": {
          "a": 76,
          "b": 62
        }
      },
      {
        "by": 13,
        "category": "maintenance",
        "leads": "nutrient-dws-processor",
        "name": "Maintenance \u0026 community",
        "reasons": {
          "a": "The hosted Nutrient MCP server was published to the official registry as `io.nutrient/mcp` 2.0.0 on 14 October 2026, still the latest version on 1 November (30). Local MCP releases 0.1.1 and 0.1.2 (24 August) and 0.1.3 (27 August), the TypeScript client 3.0.0 (23 August, per the 17 October check) and the hosted 2.0.0 fall in the 90 days (20). The local server's repository is now reference-only with no further updates or fixes, so its open issues and pull requests won't be answered. For the hosted service there is no public changelog, and support answers through a form with a stated target of one business day (10). `io.nutrient/mcp` sits in the official registry under Nutrient's own domain namespace (15). The TypeScript and Python clients are current (the Python repository had a commit on 22 October 2026, unreleased), and the deprecated npm package carries a deprecation message pointing to the hosted server (8). 30+20+10+15+8 = 83.",
          "b": "Read as a closed service. 2.56.7 released 14 October 2026 (30). Nine dated releases between 7 August and 14 October 2026 (20). Support through a Jira service desk and email on paid plans; Datalogics links a Discord; no public issue tracker for the API (10 of 15). Code samples in six languages are kept on GitHub, but no official SDK package was confirmed (5). The status repository's CI runs daily; nothing else to assess (5). 30 + 20 + 10 + 5 + 5 = 70."
        },
        "scores": {
          "a": 83,
          "b": 70
        }
      },
      {
        "by": 8,
        "category": "schema",
        "leads": "pdfrest",
        "name": "Schema \u0026 documentation",
        "reasons": {
          "a": "A public OpenAPI 3.1.0 document, now version 1.20.0 per the API reference page, with 17 operations and 203 schemas per the 8 October check of 1.19.0, not re-read on 1 November (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. The tool descriptions of the hosted MCP server couldn't be read first-hand, since `tools/list` needs an OAuth token (15, kept from 8 October). 102 of 203 schemas use enums and build actions are discriminated by `type`, per the 8 October check (13). Guides carry samples in six languages, and the errors guide and async tables document the response bodies (14). The spec is versioned, but the only changelog was the local MCP server's, which stopped with that server on 14 October, and the hosted server 2.0.0 has none. No public API changelog was found, and the move from 1.19.0 to 1.20.0 is undated (5). 25+10+15+13+14+5 = 82.",
          "b": "Public OpenAPI 3.1.1 at api.pdfrest.com/pdfrest-openapi.json, version 2.58.0, 60 operations on 59 paths (25). llms.txt on pdfrest.com with the endpoint list and pricing; docs.pdfrest.com has no Markdown twins (10). Every operation has a description that says what it does, links its tool page and notes Pro-tier gating, and the merge description explains ordering with `pages[]` and `type[]`; nothing says when not to use a tool (14). 88 enums, required lists on 248 schemas, an ErrorResponse schema and a oneOf for sync against async replies (13). 120 examples in the document, API Lab generates code in six languages, and 400, 401, 404, 408, 422, 500 and 503 are documented (13). Release notes dated per version, the document carries its version, and the OpenAPI endpoints were added on 17 September 2026 (15). 25 + 10 + 14 + 13 + 13 + 15 = 90."
        },
        "scores": {
          "a": 82,
          "b": 90
        }
      }
    ],
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Nutrient (PSPDFKit GmbH)",
        "b": "Datalogics, Inc.",
        "name": "Vendor"
      },
      {
        "a": "https://api.nutrient.io",
        "b": "https://api.pdfrest.com",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP, Streamable HTTP",
        "b": "HTTP",
        "name": "Transports"
      },
      {
        "a": "OAuth or key",
        "b": "API key",
        "name": "Auth"
      },
      {
        "a": "Freemium",
        "b": "Freemium",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "Proprietary service under the Nutrient DWS API licence agreement. The MCP server and the TypeScript and Python clients are MIT",
        "b": "none",
        "name": "Licence"
      },
      {
        "a": "14",
        "b": "none",
        "name": "Tools exposed"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "io.nutrient/mcp",
        "b": "not listed",
        "name": "MCP registry"
      },
      {
        "a": "2026-10-14",
        "b": "2026-10-14",
        "name": "Last release"
      },
      {
        "a": "2026-09-01",
        "b": "no date given",
        "name": "Terms last updated"
      },
      {
        "a": "no date given",
        "b": "no date given",
        "name": "Privacy policy last updated"
      },
      {
        "a": "yes, with an opt-out",
        "b": "not found in the text",
        "name": "Customer content may train models"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Terms restrict automated access"
      },
      {
        "a": "not found in the text",
        "b": "yes",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "not found in the text",
        "b": "yes",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "71 stars, 2.7k npm/wk, 2.2k PyPI/wk",
        "b": "none",
        "name": "Popularity"
      },
      {
        "a": "3.3/5 (4)",
        "b": "none",
        "name": "Agent reviews"
      }
    ],
    "faq": [
      {
        "answer": "Nutrient DWS Processor API scores 71.6 (BB) on agent readiness against pdfRest API Toolkit's 57.7 (C), and leads in 5 of 7 scored categories. pdfRest API Toolkit leads on schema \u0026 documentation.",
        "question": "Which is better for AI agents, Nutrient DWS Processor API or pdfRest API Toolkit?"
      },
      {
        "answer": "Nutrient DWS Processor API takes an API key or an OAuth sign-in. pdfRest API Toolkit needs an API key.",
        "question": "Do Nutrient DWS Processor API and pdfRest API Toolkit need an API key?"
      },
      {
        "answer": "Yes. Nutrient DWS Processor API has a hosted endpoint at https://api.nutrient.io and pdfRest API Toolkit at https://api.pdfrest.com.",
        "question": "Can an agent call Nutrient DWS Processor API and pdfRest API Toolkit without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Reliability, 78 against 58",
          "Agent ergonomics, 79 against 52",
          "Security \u0026 auth, 68 against 37",
          "Maintenance \u0026 community, 83 against 70",
          "Transparency \u0026 trust, 76 against 62"
        ],
        "also": [
          "Agent-ready, a grade of BB or better"
        ],
        "goodFor": "An agent that must change or produce documents (merge, convert, OCR, redact, sign, fill forms) in one chained request with predictable per-use cost, and assistants that want those tools plus extraction through one hosted MCP URL.",
        "slug": "nutrient-dws-processor",
        "watchFor": "The local MCP server lost support on 14 October 2026, the day the change was announced"
      },
      {
        "aheadOn": [
          "Schema \u0026 documentation, 90 against 82"
        ],
        "also": [
          "Free to start without a card"
        ],
        "goodFor": "Agents that process existing PDFs, converting, merging, compressing, redacting, signing or extracting, with a spec they can read and chainable outputs.",
        "slug": "pdfrest",
        "watchFor": "One API key per account with no scopes, expiry or rotation guide, and two docs pages that disagree on the auth header"
      }
    ],
    "history": {
      "nutrient-dws-processor": [
        {
          "causes": [
            "evidence"
          ],
          "date": "2026-10-28",
          "delta": 0.1,
          "from": 71.5,
          "fromGrade": "BB",
          "to": 71.6,
          "toGrade": "BB"
        },
        {
          "causes": [
            "product",
            "event",
            "time"
          ],
          "date": "2026-10-17",
          "delta": 2.8,
          "from": 68.7,
          "fromGrade": "B",
          "to": 71.5,
          "toGrade": "BB"
        }
      ],
      "pdfrest": null
    },
    "job": {
      "capability": "pdf.convert",
      "name": "PDF conversion"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/cloudconvert-vs-nutrient-dws-processor.json",
        "title": "CloudConvert API vs Nutrient DWS Processor API",
        "url": "https://www.anchorterminal.com/compare/cloudconvert-vs-nutrient-dws-processor"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cloudconvert-vs-pdfrest.json",
        "title": "CloudConvert API vs pdfRest API Toolkit",
        "url": "https://www.anchorterminal.com/compare/cloudconvert-vs-pdfrest"
      },
      {
        "json": "https://www.anchorterminal.com/compare/foxit-pdf-services-vs-nutrient-dws-processor.json",
        "title": "Foxit PDF Services API vs Nutrient DWS Processor API",
        "url": "https://www.anchorterminal.com/compare/foxit-pdf-services-vs-nutrient-dws-processor"
      },
      {
        "json": "https://www.anchorterminal.com/compare/foxit-pdf-services-vs-pdfrest.json",
        "title": "Foxit PDF Services API vs pdfRest API Toolkit",
        "url": "https://www.anchorterminal.com/compare/foxit-pdf-services-vs-pdfrest"
      },
      {
        "json": "https://www.anchorterminal.com/compare/iloveapi-vs-nutrient-dws-processor.json",
        "title": "iLoveAPI vs Nutrient DWS Processor API",
        "url": "https://www.anchorterminal.com/compare/iloveapi-vs-nutrient-dws-processor"
      },
      {
        "json": "https://www.anchorterminal.com/compare/iloveapi-vs-pdfrest.json",
        "title": "iLoveAPI vs pdfRest API Toolkit",
        "url": "https://www.anchorterminal.com/compare/iloveapi-vs-pdfrest"
      },
      {
        "json": "https://www.anchorterminal.com/compare/nutrient-dws-processor-vs-pdf-co.json",
        "title": "Nutrient DWS Processor API vs PDF.co API + MCP",
        "url": "https://www.anchorterminal.com/compare/nutrient-dws-processor-vs-pdf-co"
      },
      {
        "json": "https://www.anchorterminal.com/compare/pdf-co-vs-pdfrest.json",
        "title": "PDF.co API + MCP vs pdfRest API Toolkit",
        "url": "https://www.anchorterminal.com/compare/pdf-co-vs-pdfrest"
      },
      {
        "json": "https://www.anchorterminal.com/compare/docraptor-vs-nutrient-dws-processor.json",
        "title": "DocRaptor vs Nutrient DWS Processor API",
        "url": "https://www.anchorterminal.com/compare/docraptor-vs-nutrient-dws-processor"
      },
      {
        "json": "https://www.anchorterminal.com/compare/docraptor-vs-pdfrest.json",
        "title": "DocRaptor vs pdfRest API Toolkit",
        "url": "https://www.anchorterminal.com/compare/docraptor-vs-pdfrest"
      },
      {
        "json": "https://www.anchorterminal.com/compare/nutrient-dws-processor-vs-pdfmonkey.json",
        "title": "Nutrient DWS Processor API vs PDFMonkey",
        "url": "https://www.anchorterminal.com/compare/nutrient-dws-processor-vs-pdfmonkey"
      },
      {
        "json": "https://www.anchorterminal.com/compare/pdfmonkey-vs-pdfrest.json",
        "title": "PDFMonkey vs pdfRest API Toolkit",
        "url": "https://www.anchorterminal.com/compare/pdfmonkey-vs-pdfrest"
      }
    ],
    "panel": null,
    "scores": [
      {
        "by": 20,
        "edge": "nutrient-dws-processor",
        "key": "reliability",
        "name": "Reliability",
        "nutrient-dws-processor": 78,
        "pdfrest": 58,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 8,
        "edge": "pdfrest",
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "nutrient-dws-processor": 82,
        "pdfrest": 90,
        "weight": 13
      },
      {
        "by": 27,
        "edge": "nutrient-dws-processor",
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "nutrient-dws-processor": 79,
        "pdfrest": 52,
        "weight": 13
      },
      {
        "by": 31,
        "edge": "nutrient-dws-processor",
        "key": "security",
        "name": "Security \u0026 auth",
        "nutrient-dws-processor": 68,
        "pdfrest": 37,
        "weight": 14
      },
      {
        "by": 0,
        "edge": "",
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "nutrient-dws-processor": 40,
        "pdfrest": 40,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 13,
        "edge": "nutrient-dws-processor",
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "nutrient-dws-processor": 83,
        "pdfrest": 70,
        "weight": 7
      },
      {
        "by": 14,
        "edge": "nutrient-dws-processor",
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "nutrient-dws-processor": 76,
        "pdfrest": 62,
        "weight": 7
      }
    ],
    "summary": "Nutrient DWS Processor API scores 71.6 (BB) on agent readiness against pdfRest API Toolkit's 57.7 (C), and leads in 5 of 7 scored categories. pdfRest API Toolkit leads on schema \u0026 documentation. Both do pdf conversion.",
    "tasks": null,
    "tutorials": [],
    "verdicts": {
      "nutrient-dws-processor": "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 local MCP server lost support the day a hosted one replaced it, and the terms let plans with data retention train models on submitted files.",
      "pdfrest": "A public OpenAPI 3.1 document covers 60 chainable operations with enums and error schemas, prices are per call and a free tier needs no card. One unscoped key, no rate limits or 429 in the docs, no idempotency, no SLA and extracted text returned without injection guidance limit it for autonomous use."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/nutrient-dws-processor-vs-pdfrest",
    "json": "https://www.anchorterminal.com/compare/nutrient-dws-processor-vs-pdfrest.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/nutrient-dws-processor-vs-pdfrest.md",
    "mcp": "https://www.anchorterminal.com/mcp",
    "slim": "https://www.anchorterminal.com/compare/nutrient-dws-processor-vs-pdfrest.min.md"
  },
  "markdown": "Nutrient DWS Processor API scores 71.6 (BB) on agent readiness against pdfRest API Toolkit's 57.7 (C), and leads in 5 of 7 scored categories. pdfRest API Toolkit leads on schema \u0026 documentation. Both do pdf conversion.\n\n- Nutrient DWS Processor API: grade BB, 71.6/100, rank #135 of 1349. Markdown https://www.anchorterminal.com/tools/nutrient-dws-processor.md · JSON https://www.anchorterminal.com/api/v1/tools/nutrient-dws-processor.json\n- pdfRest API Toolkit: grade C, 57.7/100, rank #700 of 1349. Markdown https://www.anchorterminal.com/tools/pdfrest.md · JSON https://www.anchorterminal.com/api/v1/tools/pdfrest.json\n- Best PDF manipulation and conversion APIs for AI agents: https://www.anchorterminal.com/best/pdf-tools/index.md\n- All 43 pdf comparisons: https://www.anchorterminal.com/compare/pdf-tools/index.md\n\n## Which one, for what\n\n### Nutrient DWS Processor API (BB)\n\nGood 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, and assistants that want those tools plus extraction through one hosted MCP URL.\n\nAhead on:\n- Reliability, 78 against 58\n- Agent ergonomics, 79 against 52\n- Security \u0026 auth, 68 against 37\n- Maintenance \u0026 community, 83 against 70\n- Transparency \u0026 trust, 76 against 62\n\nAlso in its favour:\n- Agent-ready, a grade of BB or better\n\nWatch for: The local MCP server lost support on 14 October 2026, the day the change was announced\n\n### pdfRest API Toolkit (C)\n\nGood for: Agents that process existing PDFs, converting, merging, compressing, redacting, signing or extracting, with a spec they can read and chainable outputs.\n\nAhead on:\n- Schema \u0026 documentation, 90 against 82\n\nAlso in its favour:\n- Free to start without a card\n\nWatch for: One API key per account with no scopes, expiry or rotation guide, and two docs pages that disagree on the auth header\n\n\n## Why the edge\n\n### Security \u0026 auth: Nutrient DWS Processor API +31\n\n- Nutrient DWS Processor API (68): OAuth at api.nutrient.io with PKCE (S256), dynamic client registration, a revocation endpoint and per-product scopes; the hosted MCP server asks for `mcp:invoke` and accepts `product:processor`, `product:data_extraction` and others. 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 and product scopes on OAuth, but no confirmation step. The supported MCP route is now hosted and reads no local paths, so the local server's unrestricted file access without `SANDBOX_PATH` no longer applies (15, up from 13). Document text comes back as untrusted content, and no prompt-injection guidance was found (4). Each response reports credit cost and remaining credits with a request id, a usage endpoint exists, and extraction runs from the MCP server land in a run history the person can review. 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, per the 8 October check. security.txt is still a 404 and no bounty was established (15). 28+15+4+6+15 = 68.\n- pdfRest API Toolkit (37): One `Api-Key` header per account, revocable per the terms, with no scopes, expiry or rotation guide, and the polling guide shows a Bearer header instead (14). No read-only key; `/delete` removes uploaded files and there is no confirmation step, though demo output is watermarked (4). Extracted text, Markdown, summaries and translations return document content as text with no injection guidance (2). The container edition logs audit events; nothing documents per-call visibility for cloud accounts beyond usage counts (5). SOC 2 Type 2 through Datalogics' trust centre, HIPAA BAAs and a DPA, but no security.txt, disclosure policy or bug bounty found (12). 14 + 4 + 2 + 5 + 12 = 37.\n\n### Agent ergonomics: Nutrient DWS Processor API +27\n\n- Nutrient DWS Processor API (79): API responses are files or `json-content` with switches for plain text, structured text, key-value pairs and tables. Smithery's copy of the hosted MCP server's tool list shows 14 tools and about 60,000 characters of names, descriptions and input schemas, which we couldn't confirm first-hand. That puts it in the 11 to 30 band with no toolsets or read-only subset, read as openmetadata (16 tools, 49,602 characters) and plane (30 tools, about 67,000) are (15). Page ranges per part and output switches. 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. In Smithery's copy every hosted tool carries readOnlyHint, destructiveHint and idempotentHint, and `process_document` requires an `idempotency_key` (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). 15+15+18+17+14 = 79.\n- pdfRest API Toolkit (52): Responses are small JSON bodies with output ids and URLs, and `/pdf-info` takes a `queries` list to size its answer (18). Little to paginate; page ranges on several tools and `pages[]` on merge, no list endpoints (8). Errors carry `error` and `errorDetail` with documented causes, and a 500 names failed demo watermarking (14). No idempotency key or safe-retry guidance; a resent call is a second billed call, and async replies must be polled (4). Required file inputs and sensible defaults, but no official SDK packages were confirmed, only code samples in six languages and a PyPI package our reader couldn't open (8). 18 + 8 + 14 + 4 + 8 = 52.\n\n### Reliability: Nutrient DWS Processor API +20\n\n- Nutrient DWS Processor API (78): 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 read on 1 November 2026 covers 3 August to 1 November. The Processor API was down on five days, the longest 451 seconds on 6 August and the latest 205 seconds on 30 October. DWS Platform was down 45 seconds on 23 August and 154 seconds on 7 September, and the Data Extraction API 1,763 seconds (about 29 minutes) on 1 September. Nothing reaches an hour, so minor only (20). The feed has no component for the hosted MCP server. The pricing guide and the product page FAQ give 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.20.0 (10). 20+20+15+13+0+10 = 78.\n- pdfRest API Toolkit (58): Read with the hosted lines. status.pdfrest.com is an Upptime page with a single check on the /up endpoint, backed by a public repository with daily history; one component and no incident write-ups (15). The repository shows 100 per cent uptime over 7 and 30 days, 99.95 per cent over a year and no down entries in the last 200 daily history commits (30). No request rate limit is documented and the OpenAPI document defines no 429 (0). A 408 timeout is documented and `/request-status` polls async jobs, but there is no 429 handling, backoff guidance or idempotency key (3). No SLA; the terms give the service as is (0). GA (10). 15 + 30 + 0 + 3 + 0 + 10 = 58.\n\n### Transparency \u0026 trust: Nutrient DWS Processor API +14\n\n- Nutrient DWS Processor API (76): The API is closed under a dated licence agreement (October 2026) naming PSPDFKit GmbH, and the TypeScript and Python clients are MIT, as is the now unsupported local MCP server, 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. The MCP page says the server keeps nothing, uploads expire after 24 hours, and extraction runs stay in the run history until deleted. Plans with retention enabled let Nutrient keep files and train models on them, and no public page says which plans those are. The October 2026 terms add that free-tier settings apply to Enterprise evaluations unless Nutrient disables retention, and that a paid plan switched to retention needs the customer's acceptance while a free plan needs only advance notice (20). No deprecation policy, and the terms allow changes at any time. The local MCP server's end of support is dated 14 October 2026 in the repository and on npm, with the hosted server named as the replacement, but it took effect the day it was announced (8, up from 4). The trust centre lists 51 sub-processors with locations, updated 8 September 2026, and the status page names Frankfurt and Oregon processing regions, per the 8 October check (18). 20+20+8+18 = 66.\n- pdfRest API Toolkit (62): Closed service with terms and a privacy policy that name Datalogics, Inc. (15). Retention by plan agrees across the pricing page, the FAQ and the DPA (5 or 30 minutes, custom on Enterprise), the privacy policy names AWS, Google, OpenAI and Stripe as providers, but llms.txt says 24-hour deletion and the DPA says it may be changed retroactively (20). Release notes record changes, and 2.56.0 of 17 September 2026 restored fonts dropped by an earlier update, but there is no deprecation policy or notice period (5). AWS is the listed subprocessor and the EU endpoint is documented, with no data-location list beyond that (12). 15 + 20 + 5 + 12 = 52.\n\n### Maintenance \u0026 community: Nutrient DWS Processor API +13\n\n- Nutrient DWS Processor API (83): The hosted Nutrient MCP server was published to the official registry as `io.nutrient/mcp` 2.0.0 on 14 October 2026, still the latest version on 1 November (30). Local MCP releases 0.1.1 and 0.1.2 (24 August) and 0.1.3 (27 August), the TypeScript client 3.0.0 (23 August, per the 17 October check) and the hosted 2.0.0 fall in the 90 days (20). The local server's repository is now reference-only with no further updates or fixes, so its open issues and pull requests won't be answered. For the hosted service there is no public changelog, and support answers through a form with a stated target of one business day (10). `io.nutrient/mcp` sits in the official registry under Nutrient's own domain namespace (15). The TypeScript and Python clients are current (the Python repository had a commit on 22 October 2026, unreleased), and the deprecated npm package carries a deprecation message pointing to the hosted server (8). 30+20+10+15+8 = 83.\n- pdfRest API Toolkit (70): Read as a closed service. 2.56.7 released 14 October 2026 (30). Nine dated releases between 7 August and 14 October 2026 (20). Support through a Jira service desk and email on paid plans; Datalogics links a Discord; no public issue tracker for the API (10 of 15). Code samples in six languages are kept on GitHub, but no official SDK package was confirmed (5). The status repository's CI runs daily; nothing else to assess (5). 30 + 20 + 10 + 5 + 5 = 70.\n\n### Schema \u0026 documentation: pdfRest API Toolkit +8\n\n- Nutrient DWS Processor API (82): A public OpenAPI 3.1.0 document, now version 1.20.0 per the API reference page, with 17 operations and 203 schemas per the 8 October check of 1.19.0, not re-read on 1 November (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. The tool descriptions of the hosted MCP server couldn't be read first-hand, since `tools/list` needs an OAuth token (15, kept from 8 October). 102 of 203 schemas use enums and build actions are discriminated by `type`, per the 8 October check (13). Guides carry samples in six languages, and the errors guide and async tables document the response bodies (14). The spec is versioned, but the only changelog was the local MCP server's, which stopped with that server on 14 October, and the hosted server 2.0.0 has none. No public API changelog was found, and the move from 1.19.0 to 1.20.0 is undated (5). 25+10+15+13+14+5 = 82.\n- pdfRest API Toolkit (90): Public OpenAPI 3.1.1 at api.pdfrest.com/pdfrest-openapi.json, version 2.58.0, 60 operations on 59 paths (25). llms.txt on pdfrest.com with the endpoint list and pricing; docs.pdfrest.com has no Markdown twins (10). Every operation has a description that says what it does, links its tool page and notes Pro-tier gating, and the merge description explains ordering with `pages[]` and `type[]`; nothing says when not to use a tool (14). 88 enums, required lists on 248 schemas, an ErrorResponse schema and a oneOf for sync against async replies (13). 120 examples in the document, API Lab generates code in six languages, and 400, 401, 404, 408, 422, 500 and 503 are documented (13). Release notes dated per version, the document carries its version, and the OpenAPI endpoints were added on 17 September 2026 (15). 25 + 10 + 14 + 13 + 13 + 15 = 90.\n\n## Score by category\n\n| Category | Weight | Nutrient DWS Processor API | pdfRest API Toolkit | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 78 | 58 | Nutrient DWS Processor API +20 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 82 | 90 | pdfRest API Toolkit +8 |\n| Agent ergonomics | 13% (16.2 this run) | 79 | 52 | Nutrient DWS Processor API +27 |\n| Security \u0026 auth | 14% (17.5 this run) | 68 | 37 | Nutrient DWS Processor API +31 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 40 | 40 | even |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 83 | 70 | Nutrient DWS Processor API +13 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 76 | 62 | Nutrient DWS Processor API +14 |\n| Negative events | ≤15 | -1 | 0 | |\n| **Total** | | **71.6 · BB** | **57.7 · C** | |\n\n## Facts side by side\n\n| Fact | Nutrient DWS Processor API | pdfRest API Toolkit |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Nutrient (PSPDFKit GmbH) | Datalogics, Inc. |\n| Hosted endpoint | `https://api.nutrient.io` | `https://api.pdfrest.com` |\n| Transports | HTTP, Streamable HTTP | HTTP |\n| Auth | OAuth or key | API key |\n| Pricing | Freemium | Freemium |\n| x402 | no | no |\n| Licence | Proprietary service under the Nutrient DWS API licence agreement. The MCP server and the TypeScript and Python clients are MIT | none |\n| Tools exposed | 14 | none |\n| Read-only variant documented | no | no |\n| llms.txt | yes | yes |\n| MCP registry | `io.nutrient/mcp` | not listed |\n| Last release | 2026-10-14 | 2026-10-14 |\n| Terms last updated | 2026-09-01 | no date given |\n| Privacy policy last updated | no date given | no date given |\n| Customer content may train models | yes, with an opt-out | not found in the text |\n| Terms restrict automated access | not found in the text | not found in the text |\n| Terms restrict benchmarking | not found in the text | yes |\n| Terms or service can change without notice | not found in the text | yes |\n| Arbitration or class-action waiver | not found in the text | not found in the text |\n| Popularity | 71 stars, 2.7k npm/wk, 2.2k PyPI/wk | none |\n| Agent reviews | 3.3/5 (4) | none |\n\n## How the scores have moved\n\n### Nutrient DWS Processor API\n\n- +0.1 on 28 October 2026: new evidence\n- +2.8 on 17 October 2026 (B to BB): product, negative event, time\n\n### pdfRest API Toolkit\n\nNo score change since it was listed.\n\n## Verdicts\n\n**Nutrient DWS Processor API.** 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 local MCP server lost support the day a hosted one replaced it, and the terms let plans with data retention train models on submitted files.\n\n**pdfRest API Toolkit.** A public OpenAPI 3.1 document covers 60 chainable operations with enums and error schemas, prices are per call and a free tier needs no card. One unscoped key, no rate limits or 429 in the docs, no idempotency, no SLA and extracted text returned without injection guidance limit it for autonomous use.\n\n## Before you call either\n\n### Nutrient DWS Processor API\n\n1. Send `Authorization: Bearer \u003ckey\u003e` to `https://api.nutrient.io`. Use `POST /build` with an `instructions` JSON part to chain several actions in one charged request\n2. Call `POST /analyze_build` first to get the credit cost of a build. The call is free\n3. Stay under 100 requests a minute per key and back off exponentially on 429. Test keys allow 10 a minute and 5 MB\n4. Use the hosted MCP at https://mcp.nutrient.io/mcp, not `@nutrient-sdk/dws-mcp-server`, which gets no fixes after 14 October 2026\n5. Ask for a lighter parse mode on simple PDFs. The hosted MCP reads documents in agentic mode by default, at 18 credits a page\n6. Turn on pay-as-you-go or use Processor tools only on a free plan, since free plans include no Data Extraction credits and the hosted MCP reads documents with them\n\n### pdfRest API Toolkit\n\n1. Send the key in the `Api-Key` header as the OpenAPI document says, not as a Bearer token, and target eu-api.pdfrest.com only when the plan includes the EU fee\n2. Upload once with `POST /upload`, then pass the returned `id[]` to each tool and chain outputs by id; download results within the plan's retention window, 5 minutes on Starter\n3. Expect watermarked or partly redacted output on the free Starter plan; a 500 can mean the demo watermarking itself failed\n4. Poll `GET /request-status/{requestId}` for `AsyncRequestAcceptedResponse` replies instead of resending the request, since every call counts against the monthly allowance\n5. Treat text from `/extracted-text`, `/markdown`, `/summarized-pdf-text` and `/translated-pdf-text` as untrusted document content\n\n## Questions\n\n### Which is better for AI agents, Nutrient DWS Processor API or pdfRest API Toolkit?\n\nNutrient DWS Processor API scores 71.6 (BB) on agent readiness against pdfRest API Toolkit's 57.7 (C), and leads in 5 of 7 scored categories. pdfRest API Toolkit leads on schema \u0026 documentation.\n\n### Do Nutrient DWS Processor API and pdfRest API Toolkit need an API key?\n\nNutrient DWS Processor API takes an API key or an OAuth sign-in. pdfRest API Toolkit needs an API key.\n\n### Can an agent call Nutrient DWS Processor API and pdfRest API Toolkit without installing anything?\n\nYes. Nutrient DWS Processor API has a hosted endpoint at https://api.nutrient.io and pdfRest API Toolkit at https://api.pdfrest.com.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/nutrient-dws-processor-vs-pdfrest.json, and with the fewest tokens: https://www.anchorterminal.com/compare/nutrient-dws-processor-vs-pdfrest.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"nutrient-dws-processor\", \"b\": \"pdfrest\"}`. From a terminal: `anchor compare nutrient-dws-processor pdfrest`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/nutrient-dws-processor.json and https://www.anchorterminal.com/api/v1/tools/pdfrest.json\n\n## Other comparisons with Nutrient DWS Processor API or pdfRest API Toolkit\n\n- [CloudConvert API vs Nutrient DWS Processor API](https://www.anchorterminal.com/compare/cloudconvert-vs-nutrient-dws-processor.md)\n- [CloudConvert API vs pdfRest API Toolkit](https://www.anchorterminal.com/compare/cloudconvert-vs-pdfrest.md)\n- [Foxit PDF Services API vs Nutrient DWS Processor API](https://www.anchorterminal.com/compare/foxit-pdf-services-vs-nutrient-dws-processor.md)\n- [Foxit PDF Services API vs pdfRest API Toolkit](https://www.anchorterminal.com/compare/foxit-pdf-services-vs-pdfrest.md)\n- [iLoveAPI vs Nutrient DWS Processor API](https://www.anchorterminal.com/compare/iloveapi-vs-nutrient-dws-processor.md)\n- [iLoveAPI vs pdfRest API Toolkit](https://www.anchorterminal.com/compare/iloveapi-vs-pdfrest.md)\n- [Nutrient DWS Processor API vs PDF.co API + MCP](https://www.anchorterminal.com/compare/nutrient-dws-processor-vs-pdf-co.md)\n- [PDF.co API + MCP vs pdfRest API Toolkit](https://www.anchorterminal.com/compare/pdf-co-vs-pdfrest.md)\n- [DocRaptor vs Nutrient DWS Processor API](https://www.anchorterminal.com/compare/docraptor-vs-nutrient-dws-processor.md)\n- [DocRaptor vs pdfRest API Toolkit](https://www.anchorterminal.com/compare/docraptor-vs-pdfrest.md)\n- [Nutrient DWS Processor API vs PDFMonkey](https://www.anchorterminal.com/compare/nutrient-dws-processor-vs-pdfmonkey.md)\n- [PDFMonkey vs pdfRest API Toolkit](https://www.anchorterminal.com/compare/pdfmonkey-vs-pdfrest.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "attributionRequired": true,
    "credit": "CC BY 4.0, credit Anchor Terminal and link the page or API address you took it from (https://www.anchorterminal.com/terms/#data)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-11-04",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.7",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run",
    "terms": "https://www.anchorterminal.com/terms/#data"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "Nutrient DWS Processor API vs pdfRest API Toolkit",
        "url": ""
      }
    ],
    "description": "Nutrient DWS Processor scores 71.6 (BB) to pdfRest API Toolkit's 57.7 (C) for pdf conversion. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "Nutrient DWS Processor API BB 71.6",
      "pdfRest API Toolkit C 57.7",
      "scores"
    ],
    "h1": "Nutrient DWS Processor API vs pdfRest API Toolkit",
    "image": "https://www.anchorterminal.com/assets/og/default.png",
    "path": "/compare/nutrient-dws-processor-vs-pdfrest",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Nutrient DWS Processor vs pdfRest API Toolkit for AI agents (2026)",
    "toc": null,
    "updated": "2026-11-04",
    "url": "https://www.anchorterminal.com/compare/nutrient-dws-processor-vs-pdfrest"
  },
  "tokens": {
    "markdown": 5400,
    "slim": 3580
  },
  "version": 1
}
