MCP server exposing the Nutrient Web Viewer to Claude, enabling document viewing, text extraction, annotation management, form field handling, and PDF manipulation
Server has 20 tools with mostly complete schemas and descriptions. Naming follows verb_noun convention well (open_document, close_document, search_exact_text). Descriptions are present but vary in quality, some are concise (10-50 chars), others adequate (100-200 chars). All tools have input schemas with type definitions. However, output schemas are not documented in the provided source, and several tools lack actionable error guidance. Tool annotations (readOnlyHint/destructiveHint) are declared in the manifest verification script but not visible in actual tool registration code. Internal tools (poll_commands, submit_response, write_document_bytes, viewer_event) are mixed with public tools, creating composition concerns.
Permanently apply (burn) redactions to the document and save changes to disk
Close the currently open document and clean up associated resources
Create a new annotation (highlight, underline, strikethrough, note, or redaction) on the document
Delete an annotation from the document
Render a page as an image and return it as base64-encoded PNG
Retrieve the current view state including page number, zoom level, and scroll position
Open a document file (PDF, Word, Excel, PowerPoint, or image) for viewing and manipulation
Output schemas not documented. Tools return data but LLMs cannot plan downstream calls without knowing response structure. E.g., read_text, read_annotations, read_form_fields lack documented return types.
Internal viewer-communication tools (poll_commands, submit_response, write_document_bytes, viewer_event) mixed with public document-manipulation tools. These are bidirectional RPC stubs, not user-facing tools. Should be hidden from tools/list via internal filter.
Error handling guidance missing. No tool descriptions explain what to do if a call fails (e.g., 'If document fails to open, check file path and permissions'). Descriptions state WHAT but not recovery paths.
Inferred effective spec: 2025-06-18+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | 2025-06-18+ | v2 |
Viewer → server: long-poll for queued commands for this view
List all annotations in the document with their properties and content
Extract metadata and information about the document (title, author, creation date, page count, etc.)
Extract all form fields from the document with their current values and properties
Get information about a specific page including dimensions and rotation
Extract text content from the document with page boundaries preserved
Search for exact text matches in the document and return their locations
Update the view state including page number, zoom level, and scroll position
Viewer → server: respond to a previously queued command
Update properties of an existing annotation
Update the values of form fields in the document
Viewer → server: push an unsolicited event (license error, SDK error)
Internal tool for writing document bytes in chunks
Tool annotations (readOnlyHint, destructiveHint) declared in verify-manifest-tools.mjs but not visible in actual tool registration code (src/mcp/server.ts, src/mcp/tools/*.ts). Annotations must be present in live tool definitions for marketplace compliance.
Pagination not documented for list-like tools. read_annotations and read_form_fields may return large result sets but lack limit/offset/page parameters or total_count in response.