MCP server exposing GroupDocs.Conversion for .NET as AI-callable tools (Convert, GetSupportedFormats, GetDocumentInfo) for Claude, Cursor, GitHub Copilot, and other MCP agents.
Three tools with clear verb-noun naming (convert, get_document_info, get_supported_formats). Descriptions are present and moderately detailed (120-180 chars), explaining WHAT and WHEN to call. However, input schemas lack explicit type declarations and constraints. FileInput is used but not formally defined in visible code. No output schemas documented. Error handling descriptions mention 'returns an error with available files' but lack actionable recovery guidance. Parameters lack enums, ranges, or format constraints. Tests show good internal error propagation but no evidence of LLM-facing error messages.
Converts a document to a different format and saves the result to storage. Supports PDF, DOCX, XLSX, PPTX, HTML, PNG, JPG, and 70+ 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.
Returns file type, page count, and basic properties (author, title, dates, password-protected) for a source document. Call this tool immediately whenever the user asks to inspect a document, get document info, check file type, page count, or properties. 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.
Lists every target format the source document can be converted to, with primary/secondary indicators. Call this tool immediately whenever the user asks what formats they can convert a file to, what conversions are supported, or which output types are available for a given 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.
Input schemas lack explicit type definitions and constraints. FileInput is referenced but not formally defined in visible code. No enums for 'format' parameter (should enumerate pdf, docx, xlsx, pptx, html, png, jpg, csv, txt, rtf). No ranges or patterns for optional 'password' parameter.
Output schemas not documented. No specification of what convert() returns (filename, path, size, format?), what get_document_info() returns (structure of properties, date formats), or what get_supported_formats() returns (list structure, primary/secondary indicators).
Error handling descriptions are generic ('returns an error with available files if a name is not found'). No actionable recovery guidance for LLMs. Tests show FileNotFoundException propagation but no evidence of user-facing error messages with suggestions or next steps.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 51 | 2026-07-28+ | v2 |
Tool descriptions instruct 'Do NOT pre-check whether files exist' but this is implementation guidance, not user-facing context. Descriptions should focus on WHEN to call (user intent) rather than internal behavior.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) visible in definitions. convert is destructive (WRITE risk), get_document_info and get_supported_formats are read-only, these should be explicitly marked.