io.github.groupdocs-total/groupdocs-total-mcp
OCI · GHCR.IO/GROUPDOCS-TOTAL/TOTAL-NET-MCP:26.7.3 · SCANNED SEP 20
MCP server for GroupDocs.Total — annotate, sign, convert, watermark, parse, redact documents via AI.
Available components
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. How we score → Why this is hard to score →
Supply Chain Security0
- Malware scan not yet available for this package.Unverified
- Known CVEs could not be checked: this artifact ships no SBOM, so there is no dependency list to read. Publishing one would let us assess it.Unverified
- Install-script risk not yet assessed.Unverified
- Dependency health could not be checked: this artifact ships no SBOM, so there is no dependency list to read. Publishing one would let us assess it.Unverified
Provenance & Transparency45
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 56 days ago).Pass
- Security-disclosure policy not yet verified: we couldn't inspect the source repository.Unverified
Schema Quality & AI Usability54
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 7645 tokens (~201/item across 38 items; 38 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management80
- Stability observed for 24 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage91
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 74% of tool parameters carry a description.Partial
Tool Safety75
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- 0 of 6 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "annotation_remove_annotations" implies "remove" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Fail
- An AI judge read all 38 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Unverified: 1 category
A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.
How do I install the io.github.groupdocs-total/groupdocs-total-mcp server?
io.github.groupdocs-total/groupdocs-total-mcp runs locally as a container image, launched with docker run --rm -i ghcr.io/groupdocs-total/total-net-mcp:26.7.3. Ready-made configuration for Claude, Cursor, VS Code, Codex and 3 more is on this page, copied from each client's own documentation.
oci · ghcr.io/groupdocs-total/total-net-mcp:26.7.3
claude mcp add groupdocs-total-groupdocs-total-mcp -- docker run --rm -i ghcr.io/groupdocs-total/total-net-mcp:26.7.3
{
"mcpServers": {
"groupdocs-total-groupdocs-total-mcp": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"ghcr.io/groupdocs-total/total-net-mcp:26.7.3"
]
}
}
} {
"servers": {
"groupdocs-total-groupdocs-total-mcp": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"ghcr.io/groupdocs-total/total-net-mcp:26.7.3"
]
}
}
} codex mcp add groupdocs-total-groupdocs-total-mcp -- docker run --rm -i ghcr.io/groupdocs-total/total-net-mcp:26.7.3
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"groupdocs-total-groupdocs-total-mcp": {
"type": "local",
"command": [
"docker",
"run",
"--rm",
"-i",
"ghcr.io/groupdocs-total/total-net-mcp:26.7.3"
],
"enabled": true
}
}
} mcp_servers:
groupdocs-total-groupdocs-total-mcp:
command: "docker"
args: ["run", "--rm", "-i", "ghcr.io/groupdocs-total/total-net-mcp:26.7.3"] {
"McpServers": {
"groupdocs-total-groupdocs-total-mcp": {
"Transport": "stdio",
"Command": "docker",
"Arguments": [
"run",
"--rm",
"-i",
"ghcr.io/groupdocs-total/total-net-mcp:26.7.3"
]
}
}
} {
"mcpServers": {
"groupdocs-total-groupdocs-total-mcp": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"ghcr.io/groupdocs-total/total-net-mcp:26.7.3"
]
}
}
} Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 20 Sept 26 −3
- Security disclosure: pass → unverified ▼ functional
- Stability: pass → 0.80 functional
- 19 Sept 26 0
- Stability: 0.97 → pass security
- 18 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.
- 16 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 87 to 90. That category is still filling its 30-day observation window: 26 days of observed history at the previous scan, 27 at this one. The score rises as the window fills, whether or not the server changes.
- 14 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 80 to 83. That category is still filling its 30-day observation window: 24 days of observed history at the previous scan, 25 at this one. The score rises as the window fills, whether or not the server changes.
- 13 Sept 26 −3
- Stability: pass → 0.80 functional
- 12 Sept 26 0
- Stability: 0.97 → pass security
- 11 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 20 Sept 2026 · Analysed oci/ghcr.io/groupdocs-total/total-net-mcp:26.7.3
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | oci |
| Reason | No attestation published |
Background: How many MCP packages publish verified provenance →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
annotation_add_annotation ~285
[GroupDocs.Annotation] Adds an annotation to a document and saves the annotated file as '<name>_annotated.<ext>'. Supported types: textfield, area, point, arrow, highlight, underline, strikeout. Supports PDF, DOCX, XLSX, PPTX, and 50+ more document and image formats. Call this tool whenever the user asks to annotate, comment, highlight, underline, strikeout, or mark up a document. Do NOT pre-check whether files exist — pass the filename the user provided directly. The tool resolves files from storage and returns an error with available files if a name is not found. Returns a saved-path message ('Added <type> annotation to <file> on page <n>') with the download URL or storage path. On failure, the response text starts with 'Annotation failed for' followed by the underlying exception type, message, and inner-exception chain.
| Name | Type | Req | Description |
|---|---|---|---|
| file | object | yes | – |
| page | integer | – | Page number (1-based) |
| password | string|null | – | Password for protected documents |
| text | string | yes | Annotation text or comment |
| type | string | yes | Annotation type: textfield, area, point, arrow, highlight, underline, strikeout |
| x | integer | – | X position (document coordinates) |
| y | integer | – | Y position (document coordinates) |
No output schema declared.
No examples provided.
annotation_add_reply ~218
[GroupDocs.Annotation] Adds a reply to an existing annotation and saves the result back to storage. Supports PDF, DOCX, XLSX, PPTX, and 50+ more document and image formats. Call get_annotations first to retrieve the target annotation 'id'. Call this tool whenever the user asks to reply to an annotation, add a comment thread, or respond to a review note. Do NOT pre-check whether files exist — pass the filename the user provided directly. Returns a saved-path message ('Added reply to annotation <id> in <file>'). On failure, the response text starts with 'Reply add failed for' followed by the underlying exception type, message, and inner-exception chain.
| Name | Type | Req | Description |
|---|---|---|---|
| annotationId | integer | yes | Annotation ID to reply to (from get_annotations) |
| comment | string | yes | Reply comment text |
| file | object | yes | – |
| password | string|null | – | Password for protected documents |
| userName | string | – | Name of the user posting the reply. Defaults to 'mcp-user'. |
No output schema declared.
No examples provided.
annotation_export_annotations ~166
[GroupDocs.Annotation] Extracts annotations from a document and saves them as an XML file (suitable for re-import via import_annotations). Supports PDF, DOCX, XLSX, PPTX, and 50+ more document and image formats. Call this tool whenever the user asks to export, extract, serialize, or save annotations to XML. Do NOT pre-check whether files exist — pass the filename the user provided directly. Returns a saved-path message ('Exported N annotation(s) from <file> to <name>.annotations.xml'). On failure, the response text starts with 'Annotation export failed for' followed by the underlying exception type, message, and inner-exception chain.
| Name | Type | Req | Description |
|---|---|---|---|
| file | object | yes | – |
| password | string|null | – | Password for protected documents |
No output schema declared.
No examples provided.
annotation_get_annotations ~188
[GroupDocs.Annotation] Lists all annotations in a document as JSON. Supports PDF, DOCX, XLSX, PPTX, and 50+ more document and image formats. Each entry includes 'id' (use this with remove_annotations / update_annotation / add_reply), 'type', 'message', 'page' (1-based), bounding box, user, and replies. Call this tool first whenever the user asks to list, show, inspect, or review annotations or comments. Do NOT pre-check whether files exist — pass the filename the user provided directly. Returns a JSON object with `found` (count) and `annotations` (array). On failure, the response text starts with 'Annotation lookup failed for' followed by the underlying exception type, message, and inner-exception chain.
| Name | Type | Req | Description |
|---|---|---|---|
| file | object | yes | – |
| password | string|null | – | Password for protected documents |
No output schema declared.
No examples provided.
annotation_import_annotations ~219
[GroupDocs.Annotation] Imports annotations from another source (an XML annotations file or an annotated document) and saves the merged document back to storage. Supports PDF, DOCX, XLSX, PPTX, and 50+ more document and image formats for the target. Source must be either an XML file produced by export_annotations, or another annotated document of the same engine format. Call this tool whenever the user asks to import, merge, or apply annotations from one document to another. Do NOT pre-check whether files exist — pass the filenames the user provided directly. Returns a saved-path message ('Imported annotations from <source> into <file>'). On failure, the response text starts with 'Annotation import failed for' followed by the underlying exception type, message, and inner-exception chain.
| Name | Type | Req | Description |
|---|---|---|---|
| file | object | yes | – |
| password | string|null | – | Password for protected target documents |
| source | object | yes | Source file containing annotations to import — an XML file (.xml) or an annotated document (.pdf, .docx, etc.). |
No output schema declared.
No examples provided.
annotation_remove_annotations ~204
[GroupDocs.Annotation] Removes annotations from a document by ID and saves the result back to storage. Supports PDF, DOCX, XLSX, PPTX, and 50+ more document and image formats. Call get_annotations first to retrieve annotation IDs, then pass them here. Omit 'ids' to remove every annotation in the document. Call this tool whenever the user asks to delete, remove, or clear annotations. Do NOT pre-check whether files exist — pass the filename the user provided directly. Returns a saved-path message ('Removed N annotation(s) from <file>'). On failure, the response text starts with 'Annotation removal failed for' followed by the underlying exception type, message, and inner-exception chain.
| Name | Type | Req | Description |
|---|---|---|---|
| file | object | yes | – |
| ids | string|null | – | Comma-separated annotation IDs to remove, e.g. '1,3,5'. Omit to remove all. |
| password | string|null | – | Password for protected documents |
No output schema declared.
No examples provided.
annotation_remove_replies ~254
[GroupDocs.Annotation] Removes replies from annotations and saves the result back to storage. Supports PDF, DOCX, XLSX, PPTX, and 50+ more document and image formats. Filter mode: pass 'replyIds' (comma-separated) to remove by reply ID, OR pass 'userName' to remove all replies from one user. Pass neither to remove ALL replies in the document. Call this tool whenever the user asks to delete a reply, remove a comment thread, or clear replies from one author. Do NOT pre-check whether files exist — pass the filename the user provided directly. Returns a saved-path message ('Removed N reply / replies from <file>'). On failure, the response text starts with 'Reply removal failed for' followed by the underlying exception type, message, and inner-exception chain.
| Name | Type | Req | Description |
|---|---|---|---|
| file | object | yes | – |
| password | string|null | – | Password for protected documents |
| replyIds | string|null | – | Comma-separated reply IDs to remove, e.g. '12,34'. Omit to fall back to userName / remove-all. |
| userName | string|null | – | Remove all replies authored by this user name. Mutually exclusive with replyIds. |
No output schema declared.
No examples provided.
annotation_update_annotation ~287
[GroupDocs.Annotation] Updates an existing annotation's message and/or bounding box, then saves the result back to storage. Supports PDF, DOCX, XLSX, PPTX, and 50+ more document and image formats. Call get_annotations first to retrieve the annotation 'id' and current values. Pass any subset of message/x/y/width/height — omitted parameters keep their current value. Call this tool whenever the user asks to edit, modify, move, or resize an existing annotation. Do NOT pre-check whether files exist — pass the filename the user provided directly. Returns a saved-path message ('Updated annotation <id> in <file>'). On failure, the response text starts with 'Annotation update failed for' followed by the underlying exception type, message, and inner-exception chain.
| Name | Type | Req | Description |
|---|---|---|---|
| file | object | yes | – |
| height | integer|null | – | New height. Omit to keep current. |
| id | integer | yes | Annotation ID to update (from get_annotations) |
| message | string|null | – | New message/comment text. Omit to keep current. |
| password | string|null | – | Password for protected documents |
| width | integer|null | – | New width. Omit to keep current. |
| x | integer|null | – | New X position. Omit to keep current. |
| y | integer|null | – | New Y position. Omit to keep current. |
No output schema declared.
No examples provided.
comparison_compare ~193
[GroupDocs.Comparison] Compares two documents and highlights the differences between them. Call this tool immediately whenever the user asks to compare, diff, or check differences between two files. Do NOT pre-check whether files exist — just pass the filenames the user provided. The tool resolves files from storage and returns an error with available files if a name is not found. Returns a change count summary and saves the marked-up result document to storage.
| Name | Type | Req | Description |
|---|---|---|---|
| sourceFile | object | yes | Source (original) document — provide the filename as given by the user, e.g. 'source.pdf' |
| sourcePassword | string|null | – | Password for source document, if password-protected |
| targetFile | object | yes | Target (modified) document to compare against — provide the filename as given by the user, e.g. 'target.pdf' |
| targetPassword | string|null | – | Password for target document, if password-protected |
No output schema declared.
No examples provided.
conversion_convert ~165
[GroupDocs.Conversion] Converts a document to a different format and saves the result to storage. Supports PDF, DOCX, XLSX, PPTX, HTML, PNG, JPG, and 50+ more formats. Call this tool immediately whenever the user asks to convert, change format, export, or save as a different file type. Do NOT pre-check whether files exist — just pass the filenames the user provided. The tool resolves files from storage and returns an error with available files if a name is not found.
| Name | Type | Req | Description |
|---|---|---|---|
| file | object | yes | – |
| format | string | yes | Target format: pdf, docx, xlsx, pptx, html, png, jpg, csv, txt, rtf |
| password | string|null | – | Password for protected documents |
No output schema declared.
No examples provided.
conversion_get_supported_formats ~166
[GroupDocs.Conversion] Lists every output format the document can be converted TO via ConversionConvert. Returns the source format plus the full list of viable target extensions (pdf, docx, xlsx, pptx, html, jpg, png, …). Use BEFORE ConversionConvert when the user asks 'what can I convert this to?' or to validate a target extension is supported. Do NOT pre-check whether files exist — pass the filename the user provided directly. Returns a JSON object with `source` (extension), `count`, and `targets` (array of supported target extensions). On failure, the response text starts with 'Supported-formats lookup failed for' followed by the underlying exception type, message, and inner-exception chain.
| Name | Type | Req | Description |
|---|---|---|---|
| file | object | yes | – |
No output schema declared.
No examples provided.
get_document_info ~197
Returns basic information about ANY document: file type, page count, and size as JSON. Backed by GroupDocs.Parser — supports 170+ formats including PDF, DOCX, XLSX, PPTX, ODT, JPEG, PNG, TIFF, CAD, EPUB, EML, MSG, and more. Use this as the first call when the user asks 'what is this file?' or 'how many pages?' before invoking format-specific tools. Do NOT pre-check whether files exist — pass the filename the user provided directly. Returns a JSON object with `fileName`, `fileType` (extension), `fileTypeName` (human-readable), `pageCount`, `size`. On failure, the response text starts with 'Document-info lookup failed for' followed by the underlying exception type, message, and inner-exception chain.
| Name | Type | Req | Description |
|---|---|---|---|
| file | object | yes | – |
| password | string|null | – | Password for protected documents |
No output schema declared.
No examples provided.
get_document_page_image ~266
Renders one or more document pages as PNG images and returns them INLINE so AI clients can display them directly. Backed by GroupDocs.Viewer — supports 170+ formats including PDF, DOCX, XLSX, PPTX, ODT, JPEG, PNG, TIFF, CAD, EPUB, and more. Pass 'pages' as a comma-separated list (e.g. '1,3,5') or a range ('1-3'); omit to render only page 1. Use whenever the user asks to preview, show, render, view, or visualise document pages. Maximum 5 pages per call to stay under MCP client message size limits; batch further pages in additional calls. Do NOT pre-check whether files exist — pass the filename the user provided directly. Returns a CallToolResult with one TextContentBlock summary followed by one ImageContentBlock per rendered page. On failure, the response contains a single TextContentBlock starting with 'Preview generation failed for' and IsError=true.
| Name | Type | Req | Description |
|---|---|---|---|
| file | object | yes | – |
| pages | string|null | – | Pages to render, e.g. '1,3,5' or '1-3'. Omit for page 1 only. |
| password | string|null | – | Password for protected documents |
No output schema declared.
No examples provided.
markdown_compose_from_markdown ~193
[GroupDocs.Markdown] Composes a document (DOCX, PDF, HTML, RTF, ODT, etc.) FROM Markdown. Provide the Markdown either as inline text ('markdown' parameter) OR as a file from storage ('sourceFile' parameter — pointing to an existing .md). The target format is inferred from the extension of 'outputFileName'. Call this tool whenever the user asks to export, render, compose, or convert Markdown to a document format like Word, PDF, or HTML.
| Name | Type | Req | Description |
|---|---|---|---|
| markdown | string|null | – | Inline Markdown text. Leave empty when passing 'sourceFile' instead. |
| outputFileName | string | yes | Output filename whose extension determines the target format, e.g. 'report.docx', 'readme.pdf', 'notes.html' |
| sourceFile | object|null | – | Source Markdown file from storage (used when 'markdown' is not provided) |
No output schema declared.
No examples provided.
markdown_convert_to_markdown ~369
[GroupDocs.Markdown] Converts a document to clean, structured Markdown (.md). Supports PDF, DOCX/DOC/RTF/ODT, XLSX/XLS/ODS/CSV/TSV, EPUB, MOBI, TXT, CHM and other formats. By default, images are embedded as base64 data URIs so the output is fully self-contained. Use 'images' to control image handling: 'base64' (default), 'file' (save images alongside the .md and reference by path), or 'skip' (omit images — text-only). Use 'pages' to limit output to specific 1-based pages or worksheets. The generated Markdown is saved to storage AND the content is returned inline. Call this tool immediately whenever the user asks to convert a document to Markdown, export as MD, or extract as Markdown. Do NOT pre-check whether files exist — just pass the filename the user provided. The tool resolves files from storage and returns an error with available files if a name is not found.
| Name | Type | Req | Description |
|---|---|---|---|
| file | object | yes | – |
| flavor | string | – | Markdown dialect: 'github' (default) or 'commonmark' |
| frontMatter | boolean | – | Include YAML front matter (title, author, format, page count) at the top of the output |
| images | string | – | Image handling: 'base64' (default — embed as data URIs, self-contained), 'file' (save images alongside .md), or 'skip' (text-only, no images) |
| pages | string|null | – | Comma-separated 1-based page or worksheet numbers to convert, e.g. '1,3,5'. Omit for the whole document. |
| password | string|null | – | Password for protected documents |
No output schema declared.
No examples provided.
merger_merge ~147
[GroupDocs.Merger] Merges 2–4 documents into a single file and saves the result to storage. Supports PDF, DOCX, XLSX, PPTX and more. Call this tool immediately whenever the user asks to merge, combine, or join documents together. Do NOT pre-check whether files exist — just pass the filenames the user provided. The tool resolves files from storage and returns an error with available files if a name is not found.
| Name | Type | Req | Description |
|---|---|---|---|
| file1 | object | yes | First document |
| file2 | object | yes | Second document |
| file3 | object|null | – | Third document (optional) |
| file4 | object|null | – | Fourth document (optional) |
No output schema declared.
No examples provided.
merger_split ~139
[GroupDocs.Merger] Splits a document into separate files by extracting specific pages, saving each as an individual document to storage. Call this tool immediately whenever the user asks to split, extract pages, or separate a document into parts. Do NOT pre-check whether files exist — just pass the filename the user provided. The tool resolves files from storage and returns an error with available files if a name is not found.
| Name | Type | Req | Description |
|---|---|---|---|
| file | object | yes | – |
| pages | string | yes | Page numbers to extract as separate documents (1-based), e.g. '3,6,8' |
| password | string|null | – | Password for protected documents |
No output schema declared.
No examples provided.
metadata_read_metadata ~116
[GroupDocs.Metadata] Reads all metadata properties from a document (author, title, creation date, custom properties) and returns them as JSON. Call this tool immediately whenever the user asks to read metadata, show document properties, or get author/title/date info. Do NOT pre-check whether files exist — just pass the filename the user provided. The tool resolves files from storage and returns an error with available files if a name is not found.
| Name | Type | Req | Description |
|---|---|---|---|
| file | object | yes | – |
| password | string|null | – | Password for protected documents |
No output schema declared.
No examples provided.
metadata_remove_metadata ~105
[GroupDocs.Metadata] Removes all metadata from a document and saves the cleaned file to storage. Call this tool immediately whenever the user asks to remove metadata, strip properties, or clean a document before sharing. Do NOT pre-check whether files exist — just pass the filename the user provided. The tool resolves files from storage and returns an error with available files if a name is not found.
| Name | Type | Req | Description |
|---|---|---|---|
| file | object | yes | – |
| password | string|null | – | Password for protected documents |
No output schema declared.
No examples provided.
parser_extract_barcodes ~174
[GroupDocs.Parser] Extracts all barcodes and QR codes from a document and returns their decoded values and type names as JSON. Detects Code128, QR Code, PDF417, DataMatrix, EAN-13, EAN-8, UPC, Aztec, and many more symbologies. Call this tool immediately whenever the user asks to read, scan, or extract barcodes or QR codes from a document. Do NOT pre-check whether files exist — just pass the filename the user provided. The tool resolves files from storage and returns an error with available files if a name is not found.
| Name | Type | Req | Description |
|---|---|---|---|
| file | object | yes | – |
| page | integer|null | – | Page number to scan (1-based). Omit for all pages. |
| password | string|null | – | Password for protected documents |
No output schema declared.
No examples provided.
parser_extract_images ~139
[GroupDocs.Parser] Extracts all images from a document and saves them to storage. Returns a list of saved image file paths or download URLs. Call this tool immediately whenever the user asks to extract images, get images, or save images from a document. Do NOT pre-check whether files exist — just pass the filename the user provided. The tool resolves files from storage and returns an error with available files if a name is not found.
| Name | Type | Req | Description |
|---|---|---|---|
| file | object | yes | – |
| page | integer|null | – | Page number to extract images from (1-based). Omit for all pages. |
| password | string|null | – | Password for protected documents |
No output schema declared.
No examples provided.
parser_extract_metadata ~114
[GroupDocs.Parser] Extracts metadata from a document file (author, title, creation date, page count, etc.) and returns it as JSON. Call this tool immediately whenever the user asks to extract metadata or get document properties from a file. Do NOT pre-check whether files exist — just pass the filename the user provided. The tool resolves files from storage and returns an error with available files if a name is not found.
| Name | Type | Req | Description |
|---|---|---|---|
| file | object | yes | – |
| password | string|null | – | Password for protected documents |
No output schema declared.
No examples provided.
parser_extract_tables ~206
[GroupDocs.Parser] Extracts tables from a document and returns them as Markdown (default) or JSON. Markdown tables render instantly in VS Code, GitHub, and AI chat — use this format to visually review table data right in the response. Use format='json' to get a structured array of rows for programmatic processing or further manipulation. Call this tool immediately whenever the user asks to extract, read, or view tables from a document. Do NOT pre-check whether files exist — just pass the filename the user provided. The tool resolves files from storage and returns an error with available files if a name is not found.
| Name | Type | Req | Description |
|---|---|---|---|
| file | object | yes | – |
| format | string | – | Output format: 'markdown' (default — renders in IDE and chat) or 'json' (structured data) |
| page | integer|null | – | Page number to extract tables from (1-based). Omit for all pages. |
| password | string|null | – | Password for protected documents |
No output schema declared.
No examples provided.
parser_extract_text ~161
[GroupDocs.Parser] Extracts plain text from a document file. Supports PDF, DOCX, XLSX, PPTX, TXT, HTML, CSV, EML, MSG, RTF, ODT, EPUB, and 50+ more formats. Call this tool immediately whenever the user asks to extract text, read text, or get the content of a document. Do NOT pre-check whether files exist — just pass the filename the user provided. The tool resolves files from storage and returns an error with available files if a name is not found.
| Name | Type | Req | Description |
|---|---|---|---|
| file | object | yes | – |
| page | integer|null | – | Page number to extract from (1-based). Omit for all pages. |
| password | string|null | – | Password for protected documents |
No output schema declared.
No examples provided.
redaction_erase_metadata ~232
[GroupDocs.Redaction] Erases metadata fields from a document (author, title, company, keywords, dates, etc.) and saves the cleaned file to storage. Use to remove personally identifiable or confidential information embedded in document properties before sharing. Call this tool whenever the user asks to erase, strip, clean, or remove metadata from a document. Accepted fields (comma-separated): All, Author, Title, Subject, Category, Keywords, Description, Creator, Producer, CreatedTime, LastPrinted, LastSavedTime, TotalEditingTime, NameOfApplication, Manager, Company, ContentStatus, Version, Revision, HyperlinkBase, ContentType, Template. Default is All. Do NOT pre-check whether files exist — just pass the filename the user provided. The tool resolves files from storage and returns an error with available files if a name is not found.
| Name | Type | Req | Description |
|---|---|---|---|
| fields | string | – | Comma-separated metadata fields to erase (default: 'All'). E.g. 'Author,Company,CreatedTime' |
| file | object | yes | – |
| password | string|null | – | Password for protected documents |
No output schema declared.
No examples provided.
redaction_redact_annotations ~206
[GroupDocs.Redaction] Redacts or deletes annotations (comments, sticky notes, highlights) in a document and saves the result to storage. Can replace matching annotation text with a placeholder, or delete annotations entirely. Call this tool whenever the user asks to redact, remove, hide, or clean up comments or annotations in a document. Do NOT pre-check whether files exist — just pass the filename the user provided. The tool resolves files from storage and returns an error with available files if a name is not found.
| Name | Type | Req | Description |
|---|---|---|---|
| deleteAll | boolean | – | When true, deletes matched annotations entirely instead of replacing their text (default: false) |
| file | object | yes | – |
| password | string|null | – | Password for protected documents |
| pattern | string|null | – | Regex pattern to match annotations. Omit to target all annotations. |
| replacement | string | – | Replacement text for matched annotation content. Ignored when deleteAll is true (default: '[REDACTED]') |
No output schema declared.
No examples provided.
redaction_redact_image_area ~256
[GroupDocs.Redaction] Covers a rectangular area of a document page with a solid-color box, permanently hiding image content (e.g. faces, signatures, stamps). Coordinates are in pixels from the top-left corner of the page. Call this tool whenever the user asks to hide, cover, or black out an image area or region in a document. Do NOT pre-check whether files exist — just pass the filename the user provided. The tool resolves files from storage and returns an error with available files if a name is not found.
| Name | Type | Req | Description |
|---|---|---|---|
| color | string | – | Fill color for the redaction box — named color (e.g. 'Black', 'Red') or hex (e.g. '#FF0000'). Default: 'Black' |
| file | object | yes | – |
| height | integer | yes | Height (pixels) of the area to redact |
| password | string|null | – | Password for protected documents |
| width | integer | yes | Width (pixels) of the area to redact |
| x | integer | yes | X coordinate (pixels) of the top-left corner of the area to redact |
| y | integer | yes | Y coordinate (pixels) of the top-left corner of the area to redact |
No output schema declared.
No examples provided.
redaction_redact_text ~188
[GroupDocs.Redaction] Redacts text matching a regex pattern from a document and saves the redacted file to storage. Use to permanently hide sensitive data like SSNs, emails, phone numbers, or any custom pattern. Call this tool immediately whenever the user asks to redact, hide, remove, or black out text in a document. Do NOT pre-check whether files exist — just pass the filename the user provided. The tool resolves files from storage and returns an error with available files if a name is not found.
| Name | Type | Req | Description |
|---|---|---|---|
| file | object | yes | – |
| password | string|null | – | Password for protected documents |
| pattern | string | yes | Regex pattern to match text for redaction, e.g. '\d{3}-\d{2}-\d{4}' for SSN |
| replacement | string | – | Replacement text (default: '[REDACTED]') |
No output schema declared.
No examples provided.
signature_search_barcodes ~261
[GroupDocs.Signature] Searches a document for barcode signatures (Code39, Code128, EAN, QR-adjacent 1D barcodes, etc.) and returns each barcode's decoded text value, page, position, and — when returnImage is true — the barcode graphic as a base64-encoded PNG. Supports PDF, DOCX, XLSX, PPTX, and 30+ more document formats. Optionally filters results to barcodes whose text contains a specific string. Do NOT pre-check whether the file exists — pass the filename the user provided directly. Returns a JSON object with `found` (count) and `signatures` (array with `page`, `type`, `text`, position, dimensions, and optional `imageBase64`). On failure, the response text starts with 'Barcode search failed for' followed by the underlying exception type, message, and inner-exception chain.
| Name | Type | Req | Description |
|---|---|---|---|
| file | object | yes | – |
| password | string|null | – | Password for protected documents. |
| returnImage | boolean | – | Include the barcode graphic as a base64 PNG in the response. |
| text | string|null | – | Return only barcodes whose decoded text contains this string. Omit to return all barcodes. |
No output schema declared.
No examples provided.
signature_search_digital_signatures ~182
[GroupDocs.Signature] Searches a document for digital certificate signatures and returns details for each: signer name, issuer, certificate serial number, validity period, sign timestamp, validity status, and any comments or reason attached to the signature. Supports PDF and Office documents (DOCX, XLSX, PPTX). Do NOT pre-check whether the file exists — pass the filename the user provided directly. Returns a JSON object with `found` (count) and `signatures` (array with `signTime`, `isValid`, `comments`, `thumbprint`, and a nested `certificate` object). On failure, the response text starts with 'Digital signature search failed for' followed by the underlying exception type, message, and inner-exception chain.
| Name | Type | Req | Description |
|---|---|---|---|
| file | object | yes | – |
| password | string|null | – | Password for protected documents. |
No output schema declared.
No examples provided.
signature_search_image_signatures ~182
[GroupDocs.Signature] Searches a document for embedded image signatures (logo, stamp image, picture overlays) and returns each image's page, position, size, and content as a base64-encoded PNG ready for display. Supports PDF, DOCX, XLSX, PPTX, and 30+ more document formats. Do NOT pre-check whether the file exists — pass the filename the user provided directly. Returns a JSON object with `found` (count) and `signatures` (array with `index`, `page`, position, dimensions, `sizeBytes`, and `imageBase64`). On failure, the response text starts with 'Image signature search failed for' followed by the underlying exception type, message, and inner-exception chain.
| Name | Type | Req | Description |
|---|---|---|---|
| file | object | yes | – |
| password | string|null | – | Password for protected documents. |
No output schema declared.
No examples provided.
signature_search_qr_codes ~244
[GroupDocs.Signature] Searches a document for QR code signatures and returns each QR code's decoded text, page, position, and — when returnImage is true — the QR code graphic as a base64-encoded PNG. Supports PDF, DOCX, XLSX, PPTX, and 30+ more document formats. Optionally filters results to QR codes whose decoded text contains a specific string. Do NOT pre-check whether the file exists — pass the filename the user provided directly. Returns a JSON object with `found` (count) and `signatures` (array with `page`, `type`, `text`, position, dimensions, and optional `imageBase64`). On failure, the response text starts with 'QR code search failed for' followed by the underlying exception type, message, and inner-exception chain.
| Name | Type | Req | Description |
|---|---|---|---|
| file | object | yes | – |
| password | string|null | – | Password for protected documents. |
| returnImage | boolean | – | Include the QR code graphic as a base64 PNG in the response. |
| text | string|null | – | Return only QR codes whose decoded text contains this string. Omit to return all QR codes. |
No output schema declared.
No examples provided.
signature_search_text_signatures ~240
[GroupDocs.Signature] Searches a document for embedded text signatures (stamps, labels, native text annotations) and returns each signature's text content, page, position, and implementation type. Supports PDF, DOCX, XLSX, PPTX, and 30+ more document formats. Optionally filters to signatures whose text contains a specific string. Note: this searches for signature objects — to search for arbitrary text inside document content use a text-extraction tool instead. Do NOT pre-check whether the file exists — pass the filename the user provided directly. Returns a JSON object with `found` (count) and `signatures` (array with `page`, `text`, `implementation`, `left`, `top`, `width`, `height` per signature). On failure, the response text starts with 'Text signature search failed for' followed by the underlying exception type, message, and inner-exception chain.
| Name | Type | Req | Description |
|---|---|---|---|
| file | object | yes | – |
| password | string|null | – | Password for protected documents. |
| text | string|null | – | Return only text signatures whose content contains this string. Omit to return all text signatures. |
No output schema declared.
No examples provided.
signature_sign ~251
[GroupDocs.Signature] Signs a document with a text, QR code, barcode, or digital certificate signature and saves the signed file to storage. Supports PDF, DOCX, XLSX, PPTX, and 30+ more document formats. Call this tool immediately whenever the user asks to sign a document, add a signature, or apply a digital signature. Do NOT pre-check whether files exist — just pass the filenames the user provided. The tool resolves files from storage and returns an error with available files if a name is not found. Returns a saved-path message ('Signed <file> with <type> signature') and the download URL or storage path. On failure, the response text starts with 'Signing failed for' followed by the underlying exception type, message, and inner-exception chain.
| Name | Type | Req | Description |
|---|---|---|---|
| certificate | object|null | – | Digital certificate file (for type 'digital') |
| certificatePassword | string|null | – | Certificate password |
| file | object | yes | – |
| password | string|null | – | Password for protected documents |
| text | string|null | – | Signature text (for text/qrcode/barcode types) |
| type | string | yes | Signature type: text, qrcode, barcode, digital |
No output schema declared.
No examples provided.
signature_verify ~221
[GroupDocs.Signature] Verifies signatures in a document and returns the result (valid/invalid, counts) as JSON. Supports text, QR code, barcode, and digital signatures. Supports PDF, DOCX, XLSX, PPTX, and 30+ more document formats. Call this tool immediately whenever the user asks to verify a signature, check if a document is signed, or validate a signature. Do NOT pre-check whether files exist — just pass the filename the user provided. The tool resolves files from storage and returns an error with available files if a name is not found. Returns a JSON object with `isValid`, `succeeded` (count), and `failed` (count) fields. On failure, the response text starts with 'Verification failed for' followed by the underlying exception type, message, and inner-exception chain.
| Name | Type | Req | Description |
|---|---|---|---|
| file | object | yes | – |
| password | string|null | – | Password for protected documents |
| type | string | – | Signature type to verify: text, qrcode, barcode, digital, all |
No output schema declared.
No examples provided.
watermark_add_watermark ~157
[GroupDocs.Watermark] Adds a text watermark to a document and saves the watermarked file to storage. Call this tool immediately whenever the user asks to add a watermark, stamp text onto a document, or mark a document as draft/confidential. Do NOT pre-check whether files exist — just pass the filename the user provided. The tool resolves files from storage and returns an error with available files if a name is not found.
| Name | Type | Req | Description |
|---|---|---|---|
| file | object | yes | – |
| fontSize | integer | – | Font size (default 36) |
| password | string|null | – | Password for protected documents |
| rotation | integer | – | Rotation angle in degrees (default -45) |
| text | string | yes | Watermark text to add |
No output schema declared.
No examples provided.
watermark_remove_watermarks ~232
[GroupDocs.Watermark] Removes watermarks from a document and saves the cleaned file to storage as '<name>_unwatermarked.<ext>'. Supports PDF, DOCX, XLSX, PPTX, and 50+ more document and image formats. Filter mode: pass 'text' to remove only watermarks whose text contains this string; omit to remove ALL watermarks found by Search(). Call this tool whenever the user asks to remove a watermark, strip watermarks, clean / unstamp a document, or remove a specific tagged watermark. Do NOT pre-check whether files exist — pass the filename the user provided directly. Returns a saved-path message ('Removed N watermark(s) from <file>'). On failure, the response text starts with 'Watermark removal failed for' followed by the underlying exception type, message, and inner-exception chain.
| Name | Type | Req | Description |
|---|---|---|---|
| file | object | yes | – |
| password | string|null | – | Password for protected documents |
| text | string|null | – | Remove only watermarks whose text contains this string (case-insensitive). Omit to remove every watermark in the document. |
No output schema declared.
No examples provided.
watermark_search_watermarks ~122
[GroupDocs.Watermark] Searches for watermarks in a document and returns their details (type, text, position, size) as JSON. Call this tool immediately whenever the user asks to search for watermarks, find watermarks, or check if a document has watermarks. Do NOT pre-check whether files exist — just pass the filename the user provided. The tool resolves files from storage and returns an error with available files if a name is not found.
| Name | Type | Req | Description |
|---|---|---|---|
| file | object | yes | – |
| password | string|null | – | Password for protected documents |
No output schema declared.
No examples provided.
What is the io.github.groupdocs-total/groupdocs-total-mcp server?
io.github.groupdocs-total/groupdocs-total-mcp is listed in the public MCP registry as io.github.groupdocs-total/groupdocs-total-mcp. MCP server for GroupDocs.Total, annotate, sign, convert, watermark, parse, redact documents via AI. This page covers its container image (ghcr.io/groupdocs-total/total-net-mcp:26.7.3).
Is the io.github.groupdocs-total/groupdocs-total-mcp server safe to use?
io.github.groupdocs-total/groupdocs-total-mcp scores 46 out of 100 on VerifyMCP. 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 io.github.groupdocs-total/groupdocs-total-mcp server expose?
io.github.groupdocs-total/groupdocs-total-mcp exposes 38 tools: signature_search_image_signatures, signature_search_digital_signatures, annotation_remove_annotations, metadata_read_metadata, annotation_update_annotation, and 33 more. Their descriptions and schemas cost roughly 7,645 tokens of context every time the server is loaded.
Is the io.github.groupdocs-total/groupdocs-total-mcp server still maintained?
io.github.groupdocs-total/groupdocs-total-mcp is still listed as active in the MCP registry. We last reached this channel on 20 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 io.github.groupdocs-total/groupdocs-total-mcp server under?
io.github.groupdocs-total/groupdocs-total-mcp declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.