# Nutrient DWS MCP Server (npm · @nutrient-sdk/dws-mcp-server)

Nutrient Processor + Data Extraction MCP: convert, OCR, sign, redact, and extract PDFs/Office docs.

- Trust score: 84/100 (high trust)
- Change this week: +4
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-09-23

## Components

- npm · `@nutrient-sdk/dws-mcp-server`: 84/100 (this document), [markdown](https://verifymcp.io/servers/pspdfkit-nutrient-dws-mcp-server/nutrient-sdk-dws-mcp-server.md), [page](https://verifymcp.io/servers/pspdfkit-nutrient-dws-mcp-server/nutrient-sdk-dws-mcp-server)

## Channel facts

- Registry: `npm`
- Package: `@nutrient-sdk/dws-mcp-server`
- Version: `0.1.3`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-09-23.

- **Supply Chain Security**: 98/100
  - No malware found by supply-chain analysis.
  - No known CVEs affecting this package version or its production dependencies.
  - No install/post-install scripts declared.
  - 51 of 149 dependencies flagged as unhealthy.
- **Provenance & Transparency**: 45/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 26 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 73/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 2651 tokens (~378/item across 7 items; 7 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 100/100
  - No destabilizing schema changes in the last 30 days.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 7 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 7 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### How do I install the Nutrient DWS MCP Server server?

Nutrient DWS MCP Server runs locally as an npm package, launched with npx -y @nutrient-sdk/dws-mcp-server. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add pspdfkit-nutrient-dws-mcp-server -- npx -y @nutrient-sdk/dws-mcp-server
```

### Cursor

```json
{
  "mcpServers": {
    "pspdfkit-nutrient-dws-mcp-server": {
      "command": "npx",
      "args": [
        "-y",
        "@nutrient-sdk/dws-mcp-server"
      ]
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "pspdfkit-nutrient-dws-mcp-server": {
      "command": "npx",
      "args": [
        "-y",
        "@nutrient-sdk/dws-mcp-server"
      ]
    }
  }
}
```

### Codex

```bash
codex mcp add pspdfkit-nutrient-dws-mcp-server -- npx -y @nutrient-sdk/dws-mcp-server
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "pspdfkit-nutrient-dws-mcp-server": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "@nutrient-sdk/dws-mcp-server"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add pspdfkit-nutrient-dws-mcp-server --command npx --arg -y --arg @nutrient-sdk/dws-mcp-server
```

### Hermes

```yaml
mcp_servers:
  pspdfkit-nutrient-dws-mcp-server:
    command: "npx"
    args: ["-y", "@nutrient-sdk/dws-mcp-server"]
```

### Netclaw

```json
{
  "McpServers": {
    "pspdfkit-nutrient-dws-mcp-server": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "@nutrient-sdk/dws-mcp-server"
      ]
    }
  }
}
```

### Vellum

```bash
assistant mcp add pspdfkit-nutrient-dws-mcp-server -t stdio -c npx -a -y @nutrient-sdk/dws-mcp-server
```

### Other

```json
{
  "mcpServers": {
    "pspdfkit-nutrient-dws-mcp-server": {
      "command": "npx",
      "args": [
        "-y",
        "@nutrient-sdk/dws-mcp-server"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-09-23 (score 84, +1)

- [security] Stability: 0.97 → pass

### 2026-09-21 (score 83, +1)

No change was recorded against any check on this day. Stability & Change Management went from 90 to 93. That category is still filling its 30-day observation window: 27 days of observed history at the previous scan, 28 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-19 (score 82, +1)

No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-17 (score 81, +1)

No change was recorded against any check on this day. Stability & Change Management went from 77 to 80. That category is still filling its 30-day observation window: 23 days of observed history at the previous scan, 24 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-15 (score 80, +1)

No change was recorded against any check on this day. Stability & Change Management went from 70 to 73. That category is still filling its 30-day observation window: 21 days of observed history at the previous scan, 22 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-13 (score 79, +1)

No change was recorded against any check on this day. Stability & Change Management went from 63 to 67. That category is still filling its 30-day observation window: 19 days of observed history at the previous scan, 20 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-10 (score 78, +1)

No change was recorded against any check on this day. Stability & Change Management went from 53 to 57. That category is still filling its 30-day observation window: 16 days of observed history at the previous scan, 17 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-08 (score 77, +1)

No change was recorded against any check on this day. Stability & Change Management went from 47 to 50. That category is still filling its 30-day observation window: 14 days of observed history at the previous scan, 15 at this one. The score rises as the window fills, whether or not the server changes.

## MCP tools (7)

### `document_processor` (~172 tokens)

Process, convert, and transform documents using the Nutrient API. Reads input files from the local file system or sandbox (if enabled) and writes results back locally.

Features:
• Import XFDF annotations
• Flatten annotations
• OCR processing
• Page rotation
• Watermarking (text/image)
• Redaction creation and application

Output formats: PDF, PDF/A, images (PNG, JPEG, WebP), Office (DOCX, XLSX, PPTX)

For structured data extraction (typed JSON or Markdown with bounding boxes and confidence scores), use the dedicated parse_document tool instead.

Input parameters:

- `instructions` (object, required): Build instructions.
- `outputPath` (string, required): A path to the output file to. (if required) Resolves to sandbox path if enabled, otherwise resolves to the local file system.

### `document_signer` (~302 tokens)

Digitally sign PDF files using the Nutrient Sign API. Reads input files from the local file system or sandbox (if enabled) and writes signed output back locally.

Signature types:
• CMS/PKCS#7 (standard digital signatures)
• CAdES (advanced electronic signatures)

Appearance options:
• Visible or invisible signatures
• Multiple display modes (signature only, description only, or both)
• Customizable elements (signer name, reason, location, date)
• Support for watermarks and custom graphics

Positioning:
• Place on specific page coordinates
• Use existing signature form fields

Input parameters:

- `filePath` (string, required): The path to the file to be signed. Resolves to sandbox path if enabled, otherwise resolves to the local file system.
- `graphicImagePath` (string): The path to the graphic image to be used as part of the signature's appearance. Optional. Resolves to sandbox path if enabled, otherwise resolves to the local file system.
- `outputPath` (string, required): A path to the output file to. Resolves to sandbox path if enabled, otherwise resolves to the local file system.
- `signatureOptions` (object): Options for creating the digital signature. If not provided, defaults will be used.
- `watermarkImagePath` (string): The path to the watermark image to be used as part of the signature's appearance. Optional. Resolves to sandbox path if enabled, otherwise resolves to the local file system.

### `ai_redactor` (~394 tokens)

Detect and permanently redact sensitive content using the Nutrient AI Redaction API. Reads input files from the local file system or sandbox (if enabled) and writes redacted output back locally.

Automatically detects and permanently removes sensitive information from documents using AI analysis.
Detected content types include:
• Personally identifiable information (names, addresses, phone numbers)
• Financial data (credit card numbers, bank accounts, SSNs)
• Email addresses and URLs
• Protected health information (PHI)
• Any custom criteria you specify

By default (when neither stage nor apply is set), redactions are detected and immediately applied. Set stage to true to detect and stage redactions without applying them. Set apply to true to apply previously staged redactions.

Input parameters:

- `apply` (boolean): Applies previously staged redactions. By default (when neither stage nor apply is set), redactions are detected and immediately applied. Mutually exclusive with stage. Typical workflow: run once with…
- `criteria` (string): What sensitive information to redact. The AI will detect and remove matching content. Examples: "All personally identifiable information", "Social security numbers and credit card numbers", "Names, e…
- `filePath` (string, required): The path to the document to redact. Resolves to sandbox path if enabled, otherwise resolves to the local file system.
- `outputPath` (string, required): Path for the redacted output file. Resolves to sandbox path if enabled, otherwise resolves to the local file system.
- `stage` (boolean): Stages redactions without applying them. By default (when neither stage nor apply is set), redactions are detected and immediately applied. Mutually exclusive with apply. Typical workflow: run once w…

### `check_credits` (~57 tokens)

Check your Nutrient DWS API credit balance and usage for the current billing period.

This is a read-only account lookup. It does not upload any document content.

Returns: subscription type, total credits, used credits, and remaining credits.

### `parse_document` (~829 tokens)

Extract structured data from a document using the Nutrient DWS Data Extraction API. Reads the input file from the local file system or sandbox (if enabled), or fetches it directly from a URL — provide exactly one of filePath or url.

Output formats:
• spatial — typed elements (paragraphs, tables, key-value pairs, formulas, pictures, handwriting) with bounding boxes, confidence scores, and reading order. Written to outputPath (the list can be large).
• markdown — whole-document Markdown. Returned inline, or written to outputPath when provided (recommended for large documents). Good for RAG and search indexing.
• Both at once via formats: ["spatial", "markdown"] — a second format costs no extra credits, so ask for both up front instead of extracting twice.

Processing modes (cost per page): text = fast Markdown, no OCR (1 credit); structure = OCR spatial (1.5 credits); understand = AI-augmented, default (9 credits); agentic = VLM-augmented (18 credits).

Note: markdown output and any extracted content are returned into this conversation and may be logged by the host. For sensitive documents, prefer spatial output to a file plus targeted extract_fields calls.

Input parameters:

- `enableSemanticBlockFormatting` (boolean): Markdown only. Group related content into semantic blocks. Server default: true.
- `extractWordsFromPictures` (boolean): Markdown only. Extract words found inside pictures into the Markdown output. Server default: false.
- `filePath` (string): Path to the document to extract from (PDF, image, or Office file). Exactly one of filePath or url is required. Resolves to sandbox path if enabled, otherwise resolves to the local file system.
- `format` (string): Single output format. Defaults to markdown for text mode and spatial for all other modes. Mutually exclusive with formats.
- `formats` (array): Request multiple output formats in one call, e.g. ["spatial", "markdown"] — both output.elements and output.markdown are returned, billed the same as a single format (no extra credits). Mutually excl…
- `includeHeadersAndFooters` (boolean): Markdown only. Include page headers and footers in the Markdown output. Server default: false.
- `includeWords` (boolean): Include word-level bounding boxes in spatial output. Server default: false. Ignored for markdown output.
- `language`: OCR language(s) — full name (e.g. "german"), ISO code (e.g. "deu"), or array for multilingual docs. Only applies to structure/understand/agentic modes; ignored for text mode. Leave unset for auto-det…
- `maxLanguages` (integer): Maximum number of languages to auto-detect. Only valid when language is left unset (auto-detect), and not in text mode, which does no OCR. Server default: 2.
- `maxScripts` (integer): Maximum number of scripts to auto-detect. Only valid when language is left unset (auto-detect), and not in text mode, which does no OCR. Server default: 2.
- `mode` (string): Processing mode (cost/quality trade-off). text: fast Markdown from digital-born documents, no OCR (1 credit/page). structure: OCR-based spatial elements (1.5 credits/page). understand: AI-augmented s…
- `outputPath` (string): Where to write spatial JSON output. Required when spatial is among the requested formats (the element list can be large and is kept out of the conversation). Resolves to sandbox path if enabled.
- `url` (string): URL of the document to extract from — fetched directly by the API instead of uploading a local file. Exactly one of filePath or url is required.
- `useHtmlTables` (boolean): Markdown only. Render tables as HTML instead of Markdown table syntax. Server default: true.

### `extract_fields` (~814 tokens)

Pull specific named fields out of a document into a JSON shape you define, using the Nutrient DWS Data Extraction API. Reads the input file from the local file system or sandbox (if enabled), or fetches it directly from a URL — provide exactly one of filePath or url.

Unlike parse_document, which parses a whole document into elements or Markdown, extract_fields takes a JSON schema (root type: "object", with properties) and returns only the values matching it — e.g. { invoiceNumber, total, lineItems: [...] } — each with a per-field citation (bounding box, confidence, and match quality) tying it back to where it was found.

Processing modes (cost per page, parse component only — no text mode here): structure = OCR spatial parse (1.5 credits); understand = AI-augmented, default (9 credits); agentic = VLM-augmented (18 credits). Total cost per page is this parse component plus a fixed extract component, billed in Data Extraction credits — a separate balance from the Processor API credits reported by check_credits.

output.data (the extracted values) is always returned inline. Per-field citations and page geometry are large and are only kept when outputPath is provided; otherwise a note says they were omitted.

Input parameters:

- `filePath` (string): Path to the document to extract from (PDF, image, or Office file). Exactly one of filePath or url is required. Resolves to sandbox path if enabled, otherwise resolves to the local file system.
- `includeCitations` (boolean): Include per-field citations (bounding box, confidence, match quality) in output.metadata. Server default: true. Leave unset to keep that default — passing false here disables citations.
- `instructions` (string): Free-text guidance for the extraction, e.g. clarifying an ambiguous field. Max 10000 characters.
- `language`: OCR language(s) — full name (e.g. "german"), ISO code (e.g. "deu"), or array for multilingual docs. Leave unset for auto-detection.
- `maxLanguages` (integer): Maximum number of languages to auto-detect. Only valid when language is left unset. Server default: 2.
- `maxScripts` (integer): Maximum number of scripts to auto-detect. Only valid when language is left unset. Server default: 2.
- `mode` (string): Parse mode feeding the extraction (cost/quality trade-off). No text mode — schema-guided extraction needs the structural parse (OCR/layout) that text mode skips. structure: OCR-based spatial parse (1…
- `multimodal` (boolean): Use multimodal (vision) extraction for higher accuracy on visual fields. Increases cost and latency. Server default: false.
- `outputPath` (string): Where to write the full response (data, per-field citations, and pages). Resolves to sandbox path if enabled. output.data is always returned inline regardless of this option; set it to also keep the…
- `schema` (object, required): JSON Schema describing the fields to extract. Root must be type: "object" with properties. Schemas are closed — do NOT set additionalProperties yourself, the API rejects a schema that sets it. Limits…
- `strict` (boolean): Fail the extraction if a required field cannot be found, instead of returning a partial result. Server default: false.
- `url` (string): URL of the document to extract from — fetched directly by the API instead of uploading a local file. Exactly one of filePath or url is required.

### `directory_tree` (~83 tokens)

Browse local files when sandbox mode is disabled. This is a read-only local filesystem operation, but it can inspect any path visible to the current user. Sandbox mode is strongly recommended.

Input parameters:

- `path` (string, required): The path to the directory to analyze to find documents or files a user has referenced. Resolves to sandbox path if enabled, otherwise resolves to the local file system.

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/pspdfkit-nutrient-dws-mcp-server/nutrient-sdk-dws-mcp-server#diagnostics

## Score history

- 2026-09-23: 84
- 2026-09-22: 83
- 2026-09-21: 83
- 2026-09-20: 82
- 2026-09-19: 82
- 2026-09-18: 81
- 2026-09-17: 81
- 2026-09-16: 80
- 2026-09-15: 80
- 2026-09-14: 79
- 2026-09-13: 79
- 2026-09-12: 78
- 2026-09-11: 78
- 2026-09-10: 78
- 2026-09-09: 77
- 2026-09-08: 77
- 2026-09-07: 76
- 2026-09-06: 76
- 2026-09-05: 75
- 2026-09-04: 75
- 2026-09-03: 74
- 2026-09-02: 74
- 2026-09-01: 73
- 2026-08-31: 73
- 2026-08-30: 72
- 2026-08-29: 72
- 2026-08-28: 56
- 2026-08-27: 67
- 2026-08-26: 67
- 2026-08-25: 65

## Common questions

### What is the Nutrient DWS MCP Server server?

Nutrient DWS MCP Server is listed in the public MCP registry as io.github.PSPDFKit/nutrient-dws-mcp-server. Nutrient Processor + Data Extraction MCP: convert, OCR, sign, redact, and extract PDFs/Office docs. This page covers its npm package (@nutrient-sdk/dws-mcp-server).

### Is the Nutrient DWS MCP Server server safe to use?

Nutrient DWS MCP Server scores 84 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 23 September 2026. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the Nutrient DWS MCP Server server expose?

Nutrient DWS MCP Server exposes 7 tools: document_processor, document_signer, ai_redactor, check_credits, parse_document, and 2 more. Their descriptions and schemas cost roughly 2,651 tokens of context every time the server is loaded.

### Is the Nutrient DWS MCP Server server still maintained?

Nutrient DWS MCP Server is still listed as active in the MCP registry. We last reached this channel on 23 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

### What licence is the Nutrient DWS MCP Server server under?

Nutrient DWS MCP Server declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.

## Links

- npm package: https://www.npmjs.com/package/@nutrient-sdk/dws-mcp-server
- Socket report: https://socket.dev/npm/package/@nutrient-sdk/dws-mcp-server
- Repository: https://github.com/PSPDFKit/nutrient-dws-mcp-server
- Changelog RSS feed: https://verifymcp.io/servers/pspdfkit-nutrient-dws-mcp-server/nutrient-sdk-dws-mcp-server.xml
- Changelog JSON feed: https://verifymcp.io/servers/pspdfkit-nutrient-dws-mcp-server/nutrient-sdk-dws-mcp-server.json
- HTML version of this page: https://verifymcp.io/servers/pspdfkit-nutrient-dws-mcp-server/nutrient-sdk-dws-mcp-server
