CLI and MCP server for privacy-first image compression and conversion via mochify.app
Three well-structured image/PDF manipulation tools with comprehensive parameter schemas and detailed descriptions. All tools have explicit input schemas with typed parameters and descriptions. Descriptions are detailed and actionable (200-400 chars), explaining what each tool does, when to use it, and critical constraints. Parameters use schemars JsonSchema with proper typing and individual descriptions. However, error handling guidance is minimal/absent, tools declare WRITE risk but don't document recovery strategies or failure modes. No tool annotations (readOnlyHint/destructiveHint/idempotentHint). Output schemas are not explicitly documented in the source.
Manipulate a PDF on the user's local filesystem. Choose an operation: optimize (recompress images inside and save space), extract (pull out the embedded images), rasterize (render every page to an image), or split (one single-page PDF per page). Reads the file and writes the result itself, so do not load the PDF into the conversation first. Use `squish` for anything that takes a single image in; use `pdf_create` to build a PDF from images.
Build a PDF from a collection of images on the user's local filesystem. Specify the images, optional page size (fit — each page is exactly its image, a4, or letter), and optional quality and DPI. Reads the files and writes the PDF itself, so do not load the images into the conversation first. Use `squish` for image processing and `pdf` for PDF manipulation.
Process a single image file on the user's local filesystem: format conversion (jpg/png/webp/avif/jxl), resizing, cropping, rotation, background removal, brightness, clarity, quality control (fixed, saliency-guided or lossless), web optimization, and Ultra HDR gain maps. Reads the file and writes the result itself, so do not load the image into the conversation first. Use `pdf` instead for anything that takes a PDF in, and `pdf_create` to build a PDF out of images. Writes a new file beside the input (or in output_dir) and never overwrites the original: a name collision gets a numeric suffix.
No explicit output schema documentation visible in source. Tools process files but return signatures are inferred (file paths, error messages). LLMs cannot predict downstream parameters without explicit return type definitions.
Error handling and recovery guidance missing. All three tools are marked WRITE (destructive/irreversible) but descriptions do not explain failure modes, rollback strategies, or what to do if the operation fails (e.g., 'If conversion fails, check file permissions' or 'Output file collision uses numeric suffix, confirm output path before retry').
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). WRITE-risk tools should declare destructiveHint:true to signal irreversibility. This helps agents plan confirmations and retry strategies.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 69 | 2026-07-28+ | v2 |
| 2026-03-09 | D | 57 | - | v1 |
squish: 'strip_metadata' defaults to true (removes EXIF/GPS). While documented, no warning that this is irreversible and may surprise users expecting metadata preservation. Consider requiring explicit user consent for destructive privacy operations.
pdf: 'optimize' operation is lossy (recompresses images). Description says 'recompress' but does not warn that quality may be visibly reduced or that the operation is non-reversible. LLMs and users may assume 'optimize' is safe.