MCP server for AI image generation, transformation, and style management via the Recraft API
This server demonstrates solid definition quality with comprehensive schemas, good descriptions, and proper parameter constraints across all 16 tools. Naming is verb-focused and clear (generate_image, inpaint_image, remove_background, etc.). All tools have substantive descriptions (100-350 chars typical). Input schemas are complete with proper types, enums, ranges, and minLength constraints. Error handling is exemplary with contextual recovery suggestions mapped to HTTP status codes. The main gaps are: (1) output schemas are not documented for most tools, LLMs must infer result structure; (2) some parameter descriptions could be more detailed about constraints and dependencies (e.g., style/substyle/style_id mutual exclusivity mentioned in tool description but not in param docs); (3) no tool composition guidance (which tools chain together, what IDs flow between them). Tool names follow verb_noun pattern consistently. All tools properly support both URL and base64-encoded image inputs, reducing the need for extra lookup calls. Per-tool average: 72/100.
Create a custom style from 1-5 reference images. The style can be used in subsequent image generation by passing the returned style_id. Reference images define the visual style that will be applied.
Upscale an image with creative enhancement — adds detail and improves quality beyond simple scaling. Best for artistic images where added creative detail is desirable. Input image must be max 5MB and <16MP.
Upscale an image with crisp, sharp detail preservation. Best for images where sharpness is important. Input image must be max 5MB and <4MP.
Delete a custom style by its ID. This action is irreversible.
Erase a region from an image defined by a mask. The erased area is filled seamlessly. Provide the image and a grayscale mask (white = erase, black = preserve).
Output schemas are undocumented. Tool descriptions do not specify what fields are returned, forcing LLMs to infer structure and plan downstream composition without clear IDs and references. Example: generate_image returns images but schema does not document image URL field, style_id field, or whether multiple outputs return as array.
Parameter descriptions for generation/processing tools lack explicit dependency rules. Many tools accept style + substyle + style_id but tool desc says 'Cannot be used together' without per-parameter warnings. LLMs may pass conflicting params, causing API rejection.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 59 | 2025-06-18+ | v2 |
| 2026-03-09 | F | 39 | - | v1 |
Generate a new background for an image while preserving the foreground subject and a specified masked area.
Generate images from a text prompt using Recraft AI. Supports multiple styles (realistic, illustration, vector, icon, logo), various sizes, and fine-tuning controls like color palette and artistic level. V4 models do not support style parameters — use the prompt to control style instead.
Retrieve information about the authenticated user, including remaining credits.
Retrieve details of a custom style by its ID.
Transform an existing image based on a text prompt. The strength parameter controls how much the image changes (0.0 = minimal change, 1.0 = maximum change). Provide the image as a URL or base64-encoded string.
Inpaint (fill in) a masked region of an image based on a text prompt. Requires the original image and a grayscale mask (white = inpaint, black = preserve).
List all available curated/basic styles provided by Recraft. These can be used as the style parameter in generation tools.
List all custom styles created by the authenticated user.
Remove the background from an image, leaving a transparent background. Provide the image as a URL or base64-encoded string.
Replace the background of an image while preserving the foreground subject. Provide a text prompt describing the new background.
Convert a raster image (PNG/JPG/WEBP) to a scalable vector SVG format. Useful for converting logos, icons, and illustrations to resolution-independent vectors.
list_styles and list_basic_styles accept no parameters, making pagination impossible. If user has 100+ custom styles, all are returned, bloating context. Should accept limit and offset parameters.
get_current_user and list_basic_styles/list_styles return only user info and style metadata, but do not document response structure. LLM cannot know which fields are safe to extract and pass to downstream tools.
No confirmation or dry-run mechanism for destructive operations. delete_style removes a custom style irreversibly, tool description notes 'This action is irreversible' but provides no undo or confirm-before-execute pattern. Agents can destroy styles without safety checks.
Error recovery suggestions are hard-coded in src/tool-result.ts with HTTP status mapping. This is production-quality, but error responses do not indicate whether failures are retryable (429), user-fixable (400), or fatal (500). Categorization would help agents decide retry strategy.