MCP server exposing GroupDocs.Signature for .NET as AI-callable tools for signing, verifying, and searching signatures (text, QR codes, barcodes, digital, images) in documents
Strong tool definitions with comprehensive descriptions (avg 250+ chars) and clear parameter documentation. All 8 tools have explicit schemas with typed inputs. Naming follows verb_noun convention (Search*, Get*, Sign, Verify). Error handling is well-documented with specific failure message patterns. Main gaps: no enum constraints on signature types, missing output schema documentation, no pagination support for search results, and no idempotency/confirmation patterns for destructive Sign operation.
Returns the file type, page count, size, and per-page dimensions of a document as JSON, without modifying the file. Supports PDF, DOCX, XLSX, PPTX, images, and 30+ more document formats. Call this tool whenever the user asks to inspect a document, check its page count, or get its details — useful as a precondition check before sign / verify / search (e.g. 'how many pages does this PDF have?'). Do NOT pre-check whether the file exists — just pass the filename the user provided. Returns a JSON object with fields `fileName`, `fileType`, `pageCount`, `size`, and `pages` (array of `{ number, width, height }`). On failure, the response text starts with 'Document-info lookup failed for' followed by the underlying exception type, message, and inner-exception chain.
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.
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.
Sign tool lacks confirmation/dry-run pattern for destructive operation. No mechanism to preview signature placement or confirm before writing to file.
Signature type parameter ('text', 'qrcode', 'barcode', 'digital') is free-form string, not enum. LLMs may hallucinate invalid types like 'signature' or 'stamp'.
Search tools (SearchBarcodes, SearchQrCodes, SearchTextSignatures) return all results without pagination. Large documents could return hundreds of signatures, exhausting context window.
Output schemas not documented in tool descriptions. LLMs cannot plan downstream operations without knowing response structure (e.g., field names for signature position, certificate details).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | 2026-07-28+ | v2 |
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.
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.
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.
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.
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.
Sign tool accepts 'certificate' FileInput but does not validate certificate format or password correctness before attempting to sign. Errors are generic exception chains rather than actionable guidance.