MCP server that consolidates multiple PPT files into one
Three tools with complete input schemas and reasonable descriptions (avg 156 chars). Tool names follow verb_noun pattern (analyze, preview, consolidate). However, parameter descriptions lack specificity on constraints, formats, and error recovery. Output schemas are not documented. Error handling is generic (catch-all exception → JSON error). No tool annotations (readOnlyHint/destructiveHint). Missing guidance on when to call each tool in sequence and how to chain results.
Parse and analyze multiple .pptx files. Extracts slide content, speaker notes, and visual information. Call this first to understand what content exists before consolidating.
Run the consolidation pipeline: parse → merge → output .pptx. Copies slides at the PPTX package level so original themes, layouts, and visuals are preserved; deduplicate defaults to false. Pass relevance_data from earlier tool calls to reuse prior parsing work.
Preview the merge structure for consolidation without rendering a file. Shows how slides will be ordered and indicates duplicate slides. Use this to review the consolidation plan before building the final file.
Output schemas not documented. LLMs cannot plan downstream operations or extract chaining IDs (e.g., what fields does analyze_presentations return in _relevance_data?). Agents must guess structure.
Parameter descriptions lack format/constraint details. 'file_paths' accepts 'absolute paths' but no validation rules stated (must exist? must be .pptx?). 'goal' is free-form string with no length/content guidance. Invites invalid input.
No tool annotations. consolidate_presentations is destructive (WRITE risk) but lacks destructiveHint. analyze_presentations and preview_structure are read-only but lack readOnlyHint. Agents cannot distinguish safe from risky calls.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 53 | 2026-07-28+ | v2 |
Error handling is generic. Exception caught and returned as JSON {error, tool}. No recovery guidance, no error classification (retryable vs user-fixable vs fatal), no actionable messages. LLM cannot self-correct.
Tool composition unclear. Description says 'Call this first' (analyze_presentations) but does not explain how to pass _relevance_data to downstream tools or what happens if you skip analysis. Multi-step workflow not documented.