Deterministic image editing SDK for AI agents. Ships with MCP tools.
23 tools with explicit schemas and descriptions, but significant quality gaps. Most tools have basic descriptions (50-150 chars) but lack parameter-level documentation. Complex tools like image_add_text, image_composite, and image_pipeline expose generic 'items: {type: object}' schemas with no field documentation, making them unusable by LLMs. Parameter descriptions are sparse: image_crop has 11 properties but only 1 documented; image_adjust documents ranges well but is an outlier. No output schemas documented. Error handling absent. Naming is consistent (image_*) but descriptions don't explain WHEN to use each tool or dependencies between them (e.g., image_pipeline vs sequential calls). No tool declares idempotency, destructiveness, or permissions.
Adds text layers. Requires x, y, text, font size, and optional alignment parameters.
Adjusts brightness, contrast, saturation, hue, sharpness, and temperature (-100 to 100).
Runs a single operation on multiple images.
Blurs specific absolute regions in the image.
Clips an image to a shape: circle, ellipse, or rounded-rect. Perfect for profile photos.
Composites images together with blend modes.
Converts image to jpeg, png, webp, avif, or gif.
Complex tools expose untyped object schemas. image_add_text, image_composite, image_pipeline, and image_batch all define 'layers' or 'operations' as 'items: {type: object}' with zero field documentation. LLMs cannot infer required fields, types, or valid values. These tools are effectively unusable without external documentation.
Parameter descriptions are sparse or missing. image_crop has 11 properties (x, y, width, height, left, top, right, bottom, aspectRatio, anchor, mode) but only 'image' is documented. image_add_text description says 'Requires x, y, text, font size' but the schema shows only 'image' and 'layers', no x, y, text, or font size fields visible. This mismatch will confuse LLMs.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 52 | 2026-07-28+ | v2 |
Crops an image. Supports absolute coords, ratio, aspect ratio, or subject mode.
Detects bounding boxes around faces/people in the image using AI.
Creates a new image containing a shape (rect, circle, ellipse, line). Use with composite to layer.
Adds a drop shadow behind the image.
Runs OCR using tesseract.js to extract text from the image.
Applies preset filters: grayscale, sepia, invert, vintage, unsharp, or blur with radius.
Returns hex values of the primary colors in the image.
Returns image metadata like dimensions, format, hasAlpha.
Applies a gradient overlay for text readability. Great for placing text over photos.
Optimizes an image to fit max size in KB or max dimension.
Pads an image edges. Supports absolute edges or square target size with custom color.
Runs a sequence of operations on the image seamlessly in memory.
Removes background using AI model RMBG-1.4. Optionally replaces with color or image.
Resizes an image. Specify width/height or a scale multiplier.
Rotates an image by an arbitrary angle. Exposed areas are transparent by default.
Applies watermarks either text or image at discrete positions or tiled.
No output schemas documented. Tools return base64 data URIs or structured metadata, but LLMs have no schema to parse responses. image_get_metadata returns 'dimensions, format, hasAlpha' but the response structure is not defined. image_get_dominant_colors returns 'hex values' but count, order, and format are unspecified.
No error handling guidance. Tools do not document failure modes, recovery steps, or actionable error messages. If image_remove_bg fails due to unsupported format or model unavailability, the LLM receives no guidance on what to try next.
Tool composition unclear. image_pipeline and image_batch exist alongside individual tools, but descriptions do not explain when to use them vs sequential calls. No guidance on performance, memory, or idempotency trade-offs. Agents will waste reasoning cycles deciding between image_crop + image_resize vs image_pipeline.