Retro Diffusion Pixel Art
REMOTE · MCP.RETRODIFFUSION.AI · SCANNED SEP 25
Generate authentic pixel art - sprites, animations, and tilesets - from any MCP client
Available components
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security57
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation check failed: no authorisation is required to call this server, and it exposes a tool marked destructive (delete_user_style). See how to fix → View diagnostics → Fail
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- HSTS check failed: the Strict-Transport-Security header is absent. See how to fix → View diagnostics → Fail
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability61
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 9183 tokens (~316/item across 29 items; 29 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
- No destabilizing schema changes in the last 30 days.Pass
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
- Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- All 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 30 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
How do I install the Retro Diffusion Pixel Art MCP server?
Retro Diffusion Pixel Art is a hosted endpoint at https://mcp.retrodiffusion.ai/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · mcp.retrodiffusion.ai
claude mcp add --transport http ai-retrodiffusion-pixel-art 'https://mcp.retrodiffusion.ai/mcp'
{
"mcpServers": {
"ai-retrodiffusion-pixel-art": {
"url": "https://mcp.retrodiffusion.ai/mcp"
}
}
} {
"servers": {
"ai-retrodiffusion-pixel-art": {
"type": "http",
"url": "https://mcp.retrodiffusion.ai/mcp"
}
}
} [mcp_servers.ai-retrodiffusion-pixel-art] url = "https://mcp.retrodiffusion.ai/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"ai-retrodiffusion-pixel-art": {
"type": "remote",
"url": "https://mcp.retrodiffusion.ai/mcp",
"enabled": true
}
}
} openclaw mcp add ai-retrodiffusion-pixel-art --url 'https://mcp.retrodiffusion.ai/mcp' --transport streamable-http
mcp_servers:
ai-retrodiffusion-pixel-art:
url: "https://mcp.retrodiffusion.ai/mcp" {
"McpServers": {
"ai-retrodiffusion-pixel-art": {
"Transport": "http",
"Url": "https://mcp.retrodiffusion.ai/mcp"
}
}
} assistant mcp add ai-retrodiffusion-pixel-art -t streamable-http -u 'https://mcp.retrodiffusion.ai/mcp'
{
"mcpServers": {
"ai-retrodiffusion-pixel-art": {
"type": "http",
"url": "https://mcp.retrodiffusion.ai/mcp"
}
}
} The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 25 Sept 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 24 Sept 26 0
- The server rewrote its instructions, which are the text every model session reads security
- Schema quality: 372 → 314 ▲ functional
- New tool “estimate_lowpoly_cost” functional
- New tool “export_lowpoly_model” functional
- New tool “get_lowpoly_job” functional
- New tool “get_lowpoly_model” functional
- New tool “get_lowpoly_pricing” functional
- New tool “list_lowpoly_models” functional
- New tool “start_lowpoly_animate” functional
- New tool “start_lowpoly_generate” functional
- New tool “start_lowpoly_revise” functional
- 15 Sept 26 0
- The server rewrote its instructions, which are the text every model session reads security
- Tool “create_inference” rewrote its description, which is the text the model reads security
- “create_inference” reworded the description of “frames_duration” cosmetic
- “create_inference” reworded the description of “prompt” cosmetic
- “create_inference” reworded the description of “return_spritesheet” cosmetic
- “estimate_inference_cost” reworded the description of “frames_duration” cosmetic
- “estimate_inference_cost” reworded the description of “prompt” cosmetic
- “estimate_inference_cost” reworded the description of “return_spritesheet” cosmetic
- “start_inference_job” reworded the description of “frames_duration” cosmetic
- “start_inference_job” reworded the description of “prompt” cosmetic
- “start_inference_job” reworded the description of “return_spritesheet” cosmetic
- 10 Sept 26 0
- The server rewrote its instructions, which are the text every model session reads security
- Tool “create_inference” rewrote its description, which is the text the model reads security
- 3 Sept 26 0
- Tool “create_inference” rewrote its description, which is the text the model reads security
- Tool “create_user_style” rewrote its description, which is the text the model reads security
- Tool “delete_user_style” rewrote its description, which is the text the model reads security
- Tool “estimate_inference_cost” rewrote its description, which is the text the model reads security
- Tool “get_balance” rewrote its description, which is the text the model reads security
- Tool “get_service_status” rewrote its description, which is the text the model reads security
- Tool “list_available_models” rewrote its description, which is the text the model reads security
- Tool “list_available_styles” rewrote its description, which is the text the model reads security
- Tool “list_edit_tools” rewrote its description, which is the text the model reads security
- Tool “list_inference_jobs” rewrote its description, which is the text the model reads security
- Tool “run_edit_tool” rewrote its description, which is the text the model reads security
- Tool “start_inference_job” rewrote its description, which is the text the model reads security
- Tool “update_user_style” rewrote its description, which is the text the model reads security
- 26 Aug 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 25 Aug 26 0
- Stability: 0.97 → pass security
- 23 Aug 26 0
- Tool “create_inference” rewrote its description, which is the text the model reads security
- Schema quality: 291 → 357 ▼ functional
- “create_inference” reworded the description of “frames_duration” cosmetic
- “create_inference” reworded the description of “input_image” cosmetic
- “create_inference” reworded the description of “num_images” cosmetic
- “create_inference” reworded the description of “prompt” cosmetic
- “create_inference” reworded the description of “remove_bg” cosmetic
- “create_inference” reworded the description of “width” cosmetic
- “estimate_inference_cost” reworded the description of “frames_duration” cosmetic
- “estimate_inference_cost” reworded the description of “input_image” cosmetic
- “estimate_inference_cost” reworded the description of “num_images” cosmetic
- “estimate_inference_cost” reworded the description of “prompt” cosmetic
- “estimate_inference_cost” reworded the description of “width” cosmetic
- “start_inference_job” reworded the description of “frames_duration” cosmetic
- “start_inference_job” reworded the description of “input_image” cosmetic
- “start_inference_job” reworded the description of “num_images” cosmetic
- “start_inference_job” reworded the description of “prompt” cosmetic
- “start_inference_job” reworded the description of “remove_bg” cosmetic
- “start_inference_job” reworded the description of “width” cosmetic
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 25 Sept 2026 · Probed https://mcp.retrodiffusion.ai/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=mcp.retrodiffusion.ai | CN=YE2,O=Let's Encrypt,C=US | 17 Aug 2026 | 15 Nov 2026 | ECDSA 256 | ECDSA-SHA384 | 600c61a0ab91361e01c33a84d8d3d6f1982 |
| SANs: mcp.retrodiffusion.ai | ||||||
| CN=YE2,O=Let's Encrypt,C=US (CA) | CN=Root YE,O=ISRG,C=US | 3 Sept 2025 | 2 Sept 2028 | ECDSA 384 | ECDSA-SHA384 | 4df3b15dd6c0784c507cd37b58e6f115 |
| CN=Root YE,O=ISRG,C=US (CA) | CN=ISRG Root X2,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | ECDSA 384 | ECDSA-SHA384 | 872165fc34b6e5fba8add5b3705fb53a |
| CN=ISRG Root X2,O=Internet Security Research Group,C=US (CA) | CN=ISRG Root X1,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | ECDSA 384 | SHA256-RSA | 6c8f1dc727c7117f7baf853ac980f9cd |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of mcp.retrodiffusion.ai. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| ai. | present | 3799 | 8 | Verified |
| retrodiffusion.ai. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication No authorisation required
The endpoint answered without asking for a token. Anyone who knows the URL can reach it.
| Result | No authorisation required |
|---|---|
| HTTP status | 200 |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://mcp.retrodiffusion.ai/mcp | Verified | 200 | |
| http (plaintext) | http://mcp.retrodiffusion.ai/mcp | HTTPS enforced | 301 | https://mcp.retrodiffusion.ai/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
authenticate Authenticate ~51
Authenticate this MCP session with a RetroDiffusion public API key.
| Name | Type | Req | Description |
|---|---|---|---|
| api_key | string | yes | RetroDiffusion API key (rdpk-...), created free at https://retrodiffusion.ai/app/devtools. |
Structured output declared, but exposes no named fields.
No examples provided.
create_inference Generate Pixel Art ~1,491
Generate images using the public /v2/inferences endpoint. For the highest quality prefer RD Pro styles (rd_pro__*); they support reference_images for character/style consistency, and most go as small as 12x12 px (check list_available_styles for each style's limits) — a small target size is never a reason to switch to a cheaper model family. Style ids are opaque strings with no uniform format (some RD Fast styles appear as "default:rd_flux"); take them verbatim from the catalog and never infer capabilities from an id's prefix. For animation styles prefer start_inference_job + get_inference_job instead — animations are long-running, and a failed animation is worth one retry with identical parameters (failures auto-refund). Field-tested workflow rules: N distinct items = N individually usable images (separate calls or num_images=N), never one sheet/grid image unless a sheet IS the deliverable. Variants of ONE image (seasons, day/night, palettes) = generate the base once, then derive each variant with the image_edit tool ("... keep the exact same composition") — independent generations of the "same" scene come out unrelated. Converting an existing image INTO pixel art is rd_pro__pixelate with input_image (16-256 px output, batch<=16); reference_images-based generation re-imagines rather than converts. To animate an image you already have, use rd_advanced_animation__* with input_image (fixed-format rd_animation__* styles generate their own subject from the prompt instead). To get the other directional views of a sprite you already have, use rd_advanced_animation__rotate with input_image (same 8-direction layout as rd_animation__8_dir_rotation). Use `input_image` for the main source image, `reference_images` for extra per-inference guidance, and `style_reference_images` only on create_user_style/update_user_style. The response excludes raw base64 image payloads to keep MCP outputs compact.
| Name | Type | Req | Description |
|---|---|---|---|
| bypass_prompt_expansion | – | – | Skip the automatic LLM prompt enrichment and use the prompt verbatim. |
| extra_input_image | – | – | Second base64 input image for styles that use one (e.g. the second texture in rd_tile__tileset_advanced). |
| extra_prompt | – | – | Secondary prompt for styles that use one (e.g. the transition texture in advanced tilesets). |
| frames_duration | – | – | Animation frame count for animation styles: 4, 6, 8, 10, 12, or 16. Pick deliberately: 8 is the sweet spot for loops (walking, idle), 6 for a snappy single action, 10-12 for flowing ambient motion. I… |
| height | integer | yes | Output height in pixels. Each style enforces its own limits; check list_available_styles or get_style_usage. |
| include_downloadable_data | – | – | Include extra structured assets when available (e.g. tileset atlas JSON, animation frame data). |
| input_image | – | – | Base64 PNG used as the main source image for edits, variations, tilesets, animations, or styles that require a starting frame. Raw base64 or a data URL. Send the NATIVE-resolution image: an upscaled… |
| input_palette | – | – | Base64 image of a color palette; output colors are constrained to it. |
| num_images | integer | – | How many images to generate in one batch; a batch produces varied takes of one prompt (the right way to get N distinct items as individually usable images — never pack N items into a single sheet/gri… |
| prompt | string | yes | Describe the SUBJECT only, richly and concretely ('a squat round flask of glowing crimson liquid, cork stopper, bright highlight on the upper-left rim' beats 'a potion'). Never write 'pixel art' — th… |
| prompt_style | string | yes | Style id from list_available_styles (e.g. 'rd_fast__default', 'rd_pro__isometric', or a custom 'user__...' style). |
| rd_api_key | – | – | RetroDiffusion API key (rdpk-...) for this call only; overrides session or header auth. |
| reference_images | – | – | Extra per-inference guidance images (base64), only for styles where supports_reference_images is true. Not for defining custom styles. |
| remove_bg | boolean | – | Remove the background for transparent output. Use true for standalone assets and pair it with a stated contrasting background in the prompt ('on a plain white background') — removal works best on fla… |
| return_non_bg_removed | – | – | Also return the render from before background removal was applied. |
| return_pre_palette | – | – | Also return the render from before palette constraints were applied. |
| return_spritesheet | – | – | For animation styles: return a PNG sprite sheet instead of a GIF (for rd_advanced_animation__rotate, the 3x3 direction sheet whose views face the center). |
| seed | – | – | Seed for reproducible results; reuse the same seed to iterate on one composition. |
| strength | – | – | How strongly to change input_image, 0-1 (default 0.75). Lower values keep more of the original. |
| tile_x | boolean | – | Make the result tile seamlessly on the horizontal axis. |
| tile_y | boolean | – | Make the result tile seamlessly on the vertical axis. |
| timeout_seconds | – | – | Read-timeout override in seconds for this call; increase for animations or large batches. |
| upload_outputs | boolean | – | Host outputs and return URLs in output_urls (recommended for MCP clients) instead of only base64 payloads. |
| upscale_output_factor | – | – | Integer upscale factor for the output image; 1 returns the native pixel size. |
| width | integer | yes | Output width in pixels. Each style enforces its own limits; check list_available_styles or get_style_usage. Genre-native sizes per item: Minecraft 16; items/icons/props 32-64; character sprites 16-48… |
Structured output declared, but exposes no named fields.
No examples provided.
create_user_style Create Custom Style ~371
Create a user style from the public RD Pro template using /v2/styles. Use `style_reference_images` and `style_reference_caption` for style-level references. These are baked into the custom style and are not the same as per-inference `reference_images`.
| Name | Type | Req | Description |
|---|---|---|---|
| apply_prompt_fixer | – | – | Let the API tidy prompts automatically for this style (default true). |
| description | – | – | Short description of the custom style. |
| expanded_llm_instructions | – | – | Extended instructions for the prompt-expansion LLM. |
| force_bg_removal | – | – | Always remove backgrounds for this style. |
| force_palette | – | – | Always apply palette constraining for this style. |
| llm_instructions | – | – | Instructions for the prompt-expansion LLM when this style is used. |
| min_height | – | – | Force a fixed height (96-256); must be provided together with min_width. |
| min_width | – | – | Force a fixed width (96-256); must be provided together with min_height. |
| name | string | yes | Display name for the custom style. |
| rd_api_key | – | – | RetroDiffusion API key (rdpk-...) for this call only; overrides session or header auth. |
| reference_caption | – | – | Alias for style_reference_caption on this tool; prefer style_reference_caption and never provide both. |
| reference_images | – | – | Alias for style_reference_images on this tool; prefer style_reference_images and never provide both. |
| style_icon | – | – | Icon name for the style (e.g. 'sparkles'). |
| style_reference_caption | – | – | Caption describing the style reference image(s). |
| style_reference_images | – | – | Style-level reference image(s), base64, baked into the custom style (max 1 via the public API). |
| user_prompt_template | – | – | Prompt template for the style; must contain the {prompt} token. |
Structured output declared, but exposes no named fields.
No examples provided.
delete_user_style Delete Custom Style ~93
Delete a user style using /v2/styles/{style_id}. style_id can be either internal id or prompt_style/public_id.
| Name | Type | Req | Description |
|---|---|---|---|
| rd_api_key | – | – | RetroDiffusion API key (rdpk-...) for this call only; overrides session or header auth. |
| style_id | string | yes | Style id — the internal id or the prompt_style/public id (e.g. user__mystyle_ab12). |
Structured output declared, but exposes no named fields.
No examples provided.
estimate_edit_tool_cost Estimate Edit Cost (Free) ~589
Validate an edit-tool request and estimate its cost and duration without running it. Always free.
| Name | Type | Req | Description |
|---|---|---|---|
| color_count | – | – | color_reducer: target number of colors. |
| dither_mode | – | – | color_reducer/palette_converter: dithering mode. |
| dither_strength | – | – | color_reducer/palette_converter: dithering strength, 0-10 (0 disables, default 5). |
| expand_bottom | – | – | Outpainting: pixels to add on the bottom edge. |
| expand_left | – | – | Outpainting: pixels to add on the left edge. |
| expand_right | – | – | Outpainting: pixels to add on the right edge. |
| expand_top | – | – | Outpainting: pixels to add on the top edge. |
| extra_input_image | – | – | Second base64 input image for styles that use one (e.g. the second texture in rd_tile__tileset_advanced). |
| force_solid_pixels | – | – | background_remover: force fully solid or fully transparent pixels (tool default applies when omitted). |
| height | – | – | k_centroid_downscale: target height in pixels (required for that tool). |
| input_image | string | yes | Base64 PNG of the image to edit (raw base64 or a data URL). Required by every edit tool. |
| input_palette | – | – | Base64 image of a color palette; output colors are constrained to it. |
| mask_image | – | – | Base64 mask for inpainting: white pixels are regenerated, black pixels are kept. |
| prompt | – | – | What to generate or change (required by image_edit and inpainting; optional for outpainting). |
| rd_api_key | – | – | RetroDiffusion API key (rdpk-...) for this call only; overrides session or header auth. |
| repair_window_size | – | – | seam_tiling: size of the repair window. |
| rotation_degrees | – | – | rotate: rotation angle in degrees (clean-edge pixel rotation). |
| seam_width | – | – | seam_tiling: width in pixels of the seam band to repair. |
| soft_inpaint | – | – | Inpainting/outpainting: blend edits softly with the surrounding pixels. |
| tile_x | – | – | seam_tiling: repair the horizontal seam (tool default applies when omitted). |
| tile_y | – | – | seam_tiling: repair the vertical seam (tool default applies when omitted). |
| timeout_seconds | – | – | Read-timeout override in seconds for this call; increase for animations or large batches. |
| tool_id | string | yes | Edit tool id. One of: image_edit, inpainting, outpainting, seam_tiling, background_remover, color_style_transfer, color_reducer, palette_converter, pixel_correction, k_centroid_downscale, rotate. Use… |
| transparency_threshold | – | – | background_remover: alpha threshold for treating pixels as transparent. |
| width | – | – | k_centroid_downscale: target width in pixels (required for that tool). |
Structured output declared, but exposes no named fields.
No examples provided.
estimate_inference_cost Estimate Cost (Free) ~991
Estimate generation cost using the public /v2/inferences endpoint with check_cost=true. Use `input_image` for the main source image, `reference_images` for extra per-inference guidance, and `style_reference_images` only on create_user_style/update_user_style.
| Name | Type | Req | Description |
|---|---|---|---|
| bypass_prompt_expansion | – | – | Skip the automatic LLM prompt enrichment and use the prompt verbatim. |
| extra_input_image | – | – | Second base64 input image for styles that use one (e.g. the second texture in rd_tile__tileset_advanced). |
| extra_prompt | – | – | Secondary prompt for styles that use one (e.g. the transition texture in advanced tilesets). |
| frames_duration | – | – | Animation frame count for animation styles: 4, 6, 8, 10, 12, or 16. Pick deliberately: 8 is the sweet spot for loops (walking, idle), 6 for a snappy single action, 10-12 for flowing ambient motion. I… |
| height | integer | yes | Output height in pixels. Each style enforces its own limits; check list_available_styles or get_style_usage. |
| include_downloadable_data | – | – | Include extra structured assets when available (e.g. tileset atlas JSON, animation frame data). |
| input_image | – | – | Base64 PNG used as the main source image for edits, variations, tilesets, animations, or styles that require a starting frame. Raw base64 or a data URL. Send the NATIVE-resolution image: an upscaled… |
| input_palette | – | – | Base64 image of a color palette; output colors are constrained to it. |
| num_images | integer | – | How many images to generate in one batch; a batch produces varied takes of one prompt (the right way to get N distinct items as individually usable images — never pack N items into a single sheet/gri… |
| prompt | string | yes | Describe the SUBJECT only, richly and concretely ('a squat round flask of glowing crimson liquid, cork stopper, bright highlight on the upper-left rim' beats 'a potion'). Never write 'pixel art' — th… |
| prompt_style | string | yes | Style id from list_available_styles (e.g. 'rd_fast__default', 'rd_pro__isometric', or a custom 'user__...' style). |
| rd_api_key | – | – | RetroDiffusion API key (rdpk-...) for this call only; overrides session or header auth. |
| reference_images | – | – | Extra per-inference guidance images (base64), only for styles where supports_reference_images is true. Not for defining custom styles. |
| return_non_bg_removed | – | – | Also return the render from before background removal was applied. |
| return_pre_palette | – | – | Also return the render from before palette constraints were applied. |
| return_spritesheet | – | – | For animation styles: return a PNG sprite sheet instead of a GIF (for rd_advanced_animation__rotate, the 3x3 direction sheet whose views face the center). |
| strength | – | – | How strongly to change input_image, 0-1 (default 0.75). Lower values keep more of the original. |
| timeout_seconds | – | – | Read-timeout override in seconds for this call; increase for animations or large batches. |
| upscale_output_factor | – | – | Integer upscale factor for the output image; 1 returns the native pixel size. |
| width | integer | yes | Output width in pixels. Each style enforces its own limits; check list_available_styles or get_style_usage. Genre-native sizes per item: Minecraft 16; items/icons/props 32-64; character sprites 16-48… |
Structured output declared, but exposes no named fields.
No examples provided.
estimate_lowpoly_cost Estimate Low-Poly Job ~159
Price a Low-Poly job without starting it (free). For generate with size auto, returns the size auto would pick.
| Name | Type | Req | Description |
|---|---|---|---|
| asset_id | – | – | Required for revise and animate. |
| operation | string | – | generate, revise or animate. |
| prompt | – | – | What to build or change, up to 250 characters. |
| rd_api_key | – | – | RetroDiffusion API key (rdpk-...) for this call only; overrides session or header auth. |
| size | – | – | Cube size in texels: "16", "32", "64", "128", "256", or "auto" (default). Auto reads the prompt; reference-image-only requests default to 64. Bigger sizes cost more (see get_lowpoly_pricing). |
Structured output declared, but exposes no named fields.
No examples provided.
export_lowpoly_model Export Low-Poly Model ~274
Export a Low-Poly model for an engine or tool and return a hosted download URL (free). Engines (Godot, Unity, Unreal, three.js) and Blender get .glb; Blockbench gets .bbmodel; Minecraft gets a resource pack; .glb and .bbmodel include every animation. Animated GIFs, sprite sheets and MP4 videos need an animation name from the model.
| Name | Type | Req | Description |
|---|---|---|---|
| animation | – | – | Animation name for the gif, sheet and mp4 targets. Omit it for gif or sheet to get every animation in one zip. |
| asset_id | string | yes | asset_id returned by start_lowpoly_generate or get_lowpoly_job. |
| rd_api_key | – | – | RetroDiffusion API key (rdpk-...) for this call only; overrides session or header auth. |
| target | string | yes | godot, unity, unreal, web, blender (all .glb), blockbench (.bbmodel), obj (zip), minecraft (resource pack zip), atlas (png), turntable (png), gif, sheet or mp4 (1024px video) (need an animation). The… |
| version | – | – | Version number to work on (default: the newest). Revisions create versions; animations do not. |
Structured output declared, but exposes no named fields.
No examples provided.
fix_pixel_art Fix Pixel Art ~353
Recover the native pixel grid from enlarged, softened, AI-rendered, or compressed pixel art. Standard uses the native Rust detector. Neural uses the neural reconstruction engine and accepts optional target width and height values. This repairs existing art—it does not generate a new image. Both engines are free and share a limit of 10 requests per minute per API token. Provide exactly one source as base64 input_image or a public HTTPS image_url. URL input avoids the ALB request-body limit. Decoded images may contain up to 16 megapixels. Successful response JSON is limited to 850,000 bytes for AWS ALB compatibility.
| Name | Type | Req | Description |
|---|---|---|---|
| engine | string | – | Fixer engine. Standard uses the native Rust detector; neural uses the neural reconstruction engine. |
| height | – | – | Optional neural target dimension in pixels. Accepted only with engine='neural'. |
| image_url | – | – | Public HTTPS PNG or JPEG URL to reconstruct. Provide this or input_image, not both. URL downloads may contain up to 20 MB and bypass the API request-body limit. |
| input_image | – | – | Base64 PNG or JPEG to reconstruct at its native pixel grid. Raw base64 or a data URL; provide this or image_url, not both. Decoded input may contain up to 16 megapixels, and complete base64 request J… |
| rd_api_key | – | – | RetroDiffusion API key (rdpk-...) for this call only; overrides session or header auth. |
| timeout_seconds | – | – | Read-timeout override in seconds for this call; increase for animations or large batches. |
| width | – | – | Optional neural target dimension in pixels. Accepted only with engine='neural'. |
Structured output declared, but exposes no named fields.
No examples provided.
get_balance Get Balance ~51
Get credits/balance using the public /v2/inferences/credits endpoint.
| Name | Type | Req | Description |
|---|---|---|---|
| rd_api_key | – | – | RetroDiffusion API key (rdpk-...) for this call only; overrides session or header auth. |
Structured output declared, but exposes no named fields.
No examples provided.
get_inference_job Check Async Job ~101
Check the status of an async generation started with start_inference_job. Statuses: pending, running, succeeded, failed. On success the result carries hosted output_urls (raw base64 payloads are excluded to keep MCP outputs compact).
| Name | Type | Req | Description |
|---|---|---|---|
| rd_api_key | – | – | RetroDiffusion API key (rdpk-...) for this call only; overrides session or header auth. |
| task_id | string | yes | Async job id returned by start_inference_job. |
Structured output declared, but exposes no named fields.
No examples provided.
get_inference_result Get Generated Outputs ~102
Retrieve retained outputs for a synchronous generation. Use the request_id returned by create_inference to recover or refresh signed output URLs. This lookup is read-only; never repeat a paid create_inference call just because delivery URLs are temporarily missing.
| Name | Type | Req | Description |
|---|---|---|---|
| rd_api_key | – | – | RetroDiffusion API key (rdpk-...) for this call only; overrides session or header auth. |
| request_id | string | yes | Inference request id returned by create_inference. |
Structured output declared, but exposes no named fields.
No examples provided.
get_lowpoly_job Check Low-Poly Job ~96
Status of a Low-Poly job: pending, running, succeeded or failed. On success, the model with its versions, render URLs and animations. Poll every 10-20 seconds; jobs take minutes.
| Name | Type | Req | Description |
|---|---|---|---|
| rd_api_key | – | – | RetroDiffusion API key (rdpk-...) for this call only; overrides session or header auth. |
| task_id | string | yes | Async job id returned by start_inference_job. |
Structured output declared, but exposes no named fields.
No examples provided.
get_lowpoly_model Get Low-Poly Model ~78
A Low-Poly model: status, versions (render URLs, animations) and any running job.
| Name | Type | Req | Description |
|---|---|---|---|
| asset_id | string | yes | asset_id returned by start_lowpoly_generate or get_lowpoly_job. |
| rd_api_key | – | – | RetroDiffusion API key (rdpk-...) for this call only; overrides session or header auth. |
Structured output declared, but exposes no named fields.
No examples provided.
get_lowpoly_pricing Low-Poly Pricing ~66
Low-Poly (3D) sizes, prices per operation (generate / revise / animate), styles, limits and export targets. Free.
| Name | Type | Req | Description |
|---|---|---|---|
| rd_api_key | – | – | RetroDiffusion API key (rdpk-...) for this call only; overrides session or header auth. |
Structured output declared, but exposes no named fields.
No examples provided.
get_service_status Service Status ~29
Check RetroDiffusion subsystem health (/v2/status, no auth). Useful before bulk generation runs.
Input schema present but exposes no named parameters.
Structured output declared, but exposes no named fields.
No examples provided.
get_style_usage Get Style Usage ~127
Explain how to use a public prompt_style from the RetroDiffusion API. Use this before create_inference if you are unsure whether a style expects `input_image`, supports per-inference `reference_images`, or whether you meant style-level `style_reference_images`.
| Name | Type | Req | Description |
|---|---|---|---|
| prompt_style | string | yes | Style id from list_available_styles (e.g. 'rd_fast__default', 'rd_pro__isometric', or a custom 'user__...' style). |
| rd_api_key | – | – | RetroDiffusion API key (rdpk-...) for this call only; overrides session or header auth. |
Structured output declared, but exposes no named fields.
No examples provided.
list_available_models List Models ~50
Return unique public model identifiers available in /v2/styles/selector.
| Name | Type | Req | Description |
|---|---|---|---|
| rd_api_key | – | – | RetroDiffusion API key (rdpk-...) for this call only; overrides session or header auth. |
Structured output declared, but exposes no named fields.
No examples provided.
list_available_styles List Styles ~119
List publicly available styles from /v2/styles/selector. Use this to discover valid prompt_style values plus style metadata such as require_input_image and supports_reference_images.
| Name | Type | Req | Description |
|---|---|---|---|
| model | – | – | Filter styles by model: rd_fast, rd_plus, rd_pro, or rd_mini. |
| rd_api_key | – | – | RetroDiffusion API key (rdpk-...) for this call only; overrides session or header auth. |
| tab | – | – | Filter styles by tab: tab:image, tab:animation, tab:advanced-animation, or tab:tileset. |
Structured output declared, but exposes no named fields.
No examples provided.
list_edit_tools List Edit Tools ~100
List the enabled canvas edit tools from /v2/edit/tools with their fields, costs, and limits. Edit tools are the recommended way to post-process generated pixel art: background removal, palette conversion, color reduction, pixel correction, rotation, inpainting, outpainting, seam tiling, and prompt-driven edits.
| Name | Type | Req | Description |
|---|---|---|---|
| rd_api_key | – | – | RetroDiffusion API key (rdpk-...) for this call only; overrides session or header auth. |
Structured output declared, but exposes no named fields.
No examples provided.
list_inference_jobs List Async Jobs ~140
List your most recent async jobs, newest first (GET /v2/inferences/tasks). Recovery path: if a submission response was lost (timeout, disconnect) before the task_id arrived, the job was still accepted — find it here instead of re-submitting and being charged twice. Then poll it with get_inference_job.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Maximum number of recent jobs to return (1-100, default 20). |
| rd_api_key | – | – | RetroDiffusion API key (rdpk-...) for this call only; overrides session or header auth. |
| status | – | – | Optional: only return jobs with this status. |
Structured output declared, but exposes no named fields.
No examples provided.
list_lowpoly_models List Low-Poly Models ~64
The account's Low-Poly models, newest first.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | How many models to return (newest first). |
| rd_api_key | – | – | RetroDiffusion API key (rdpk-...) for this call only; overrides session or header auth. |
Structured output declared, but exposes no named fields.
No examples provided.
logout Log Out ~20
Clear the authenticated RetroDiffusion API key for this MCP session.
Input schema present but exposes no named parameters.
Structured output declared, but exposes no named fields.
No examples provided.
run_edit_tool Run Edit Tool ~690
Run a canvas edit tool on an image via /v2/edit/tools/{tool_id}. Free tools: color_reducer, palette_converter, pixel_correction, k_centroid_downscale, rotate. $0.01 tools: background_remover, color_style_transfer. Premium ($0.18): image_edit, inpainting, outpainting, seam_tiling. Use estimate_edit_tool_cost first for anything that charges — estimation is free. The edited image is returned in base64_images.
| Name | Type | Req | Description |
|---|---|---|---|
| color_count | – | – | color_reducer: target number of colors. |
| dither_mode | – | – | color_reducer/palette_converter: dithering mode. |
| dither_strength | – | – | color_reducer/palette_converter: dithering strength, 0-10 (0 disables, default 5). |
| expand_bottom | – | – | Outpainting: pixels to add on the bottom edge. |
| expand_left | – | – | Outpainting: pixels to add on the left edge. |
| expand_right | – | – | Outpainting: pixels to add on the right edge. |
| expand_top | – | – | Outpainting: pixels to add on the top edge. |
| extra_input_image | – | – | Second base64 input image for styles that use one (e.g. the second texture in rd_tile__tileset_advanced). |
| force_solid_pixels | – | – | background_remover: force fully solid or fully transparent pixels (tool default applies when omitted). |
| height | – | – | k_centroid_downscale: target height in pixels (required for that tool). |
| input_image | string | yes | Base64 PNG of the image to edit (raw base64 or a data URL). Required by every edit tool. |
| input_palette | – | – | Base64 image of a color palette; output colors are constrained to it. |
| mask_image | – | – | Base64 mask for inpainting: white pixels are regenerated, black pixels are kept. |
| prompt | – | – | What to generate or change (required by image_edit and inpainting; optional for outpainting). |
| rd_api_key | – | – | RetroDiffusion API key (rdpk-...) for this call only; overrides session or header auth. |
| repair_window_size | – | – | seam_tiling: size of the repair window. |
| rotation_degrees | – | – | rotate: rotation angle in degrees (clean-edge pixel rotation). |
| seam_width | – | – | seam_tiling: width in pixels of the seam band to repair. |
| seed | – | – | Seed for reproducible results; reuse the same seed to iterate on one composition. |
| soft_inpaint | – | – | Inpainting/outpainting: blend edits softly with the surrounding pixels. |
| tile_x | – | – | seam_tiling: repair the horizontal seam (tool default applies when omitted). |
| tile_y | – | – | seam_tiling: repair the vertical seam (tool default applies when omitted). |
| timeout_seconds | – | – | Read-timeout override in seconds for this call; increase for animations or large batches. |
| tool_id | string | yes | Edit tool id. One of: image_edit, inpainting, outpainting, seam_tiling, background_remover, color_style_transfer, color_reducer, palette_converter, pixel_correction, k_centroid_downscale, rotate. Use… |
| transparency_threshold | – | – | background_remover: alpha threshold for treating pixels as transparent. |
| width | – | – | k_centroid_downscale: target width in pixels (required for that tool). |
Structured output declared, but exposes no named fields.
No examples provided.
start_inference_job Start Async Generation ~1,156
Start a generation as an async job (POST /v2/inferences with async=true) and return a task_id. Recommended for advanced animations (rd_advanced_animation__*), other animation styles, and batches — they run for tens of seconds and can outlive a synchronous MCP call. Poll the returned task_id with get_inference_job roughly every 2-5 seconds.
| Name | Type | Req | Description |
|---|---|---|---|
| bypass_prompt_expansion | – | – | Skip the automatic LLM prompt enrichment and use the prompt verbatim. |
| extra_input_image | – | – | Second base64 input image for styles that use one (e.g. the second texture in rd_tile__tileset_advanced). |
| extra_prompt | – | – | Secondary prompt for styles that use one (e.g. the transition texture in advanced tilesets). |
| frames_duration | – | – | Animation frame count for animation styles: 4, 6, 8, 10, 12, or 16. Pick deliberately: 8 is the sweet spot for loops (walking, idle), 6 for a snappy single action, 10-12 for flowing ambient motion. I… |
| height | integer | yes | Output height in pixels. Each style enforces its own limits; check list_available_styles or get_style_usage. |
| include_downloadable_data | – | – | Include extra structured assets when available (e.g. tileset atlas JSON, animation frame data). |
| input_image | – | – | Base64 PNG used as the main source image for edits, variations, tilesets, animations, or styles that require a starting frame. Raw base64 or a data URL. Send the NATIVE-resolution image: an upscaled… |
| input_palette | – | – | Base64 image of a color palette; output colors are constrained to it. |
| num_images | integer | – | How many images to generate in one batch; a batch produces varied takes of one prompt (the right way to get N distinct items as individually usable images — never pack N items into a single sheet/gri… |
| prompt | string | yes | Describe the SUBJECT only, richly and concretely ('a squat round flask of glowing crimson liquid, cork stopper, bright highlight on the upper-left rim' beats 'a potion'). Never write 'pixel art' — th… |
| prompt_style | string | yes | Style id from list_available_styles (e.g. 'rd_fast__default', 'rd_pro__isometric', or a custom 'user__...' style). |
| rd_api_key | – | – | RetroDiffusion API key (rdpk-...) for this call only; overrides session or header auth. |
| reference_images | – | – | Extra per-inference guidance images (base64), only for styles where supports_reference_images is true. Not for defining custom styles. |
| remove_bg | boolean | – | Remove the background for transparent output. Use true for standalone assets and pair it with a stated contrasting background in the prompt ('on a plain white background') — removal works best on fla… |
| return_non_bg_removed | – | – | Also return the render from before background removal was applied. |
| return_pre_palette | – | – | Also return the render from before palette constraints were applied. |
| return_spritesheet | – | – | For animation styles: return a PNG sprite sheet instead of a GIF (for rd_advanced_animation__rotate, the 3x3 direction sheet whose views face the center). |
| seed | – | – | Seed for reproducible results; reuse the same seed to iterate on one composition. |
| strength | – | – | How strongly to change input_image, 0-1 (default 0.75). Lower values keep more of the original. |
| tile_x | boolean | – | Make the result tile seamlessly on the horizontal axis. |
| tile_y | boolean | – | Make the result tile seamlessly on the vertical axis. |
| timeout_seconds | – | – | Read-timeout override in seconds for this call; increase for animations or large batches. |
| upload_outputs | boolean | – | Host outputs and return URLs in output_urls (recommended for MCP clients) instead of only base64 payloads. |
| upscale_output_factor | – | – | Integer upscale factor for the output image; 1 returns the native pixel size. |
| width | integer | yes | Output width in pixels. Each style enforces its own limits; check list_available_styles or get_style_usage. Genre-native sizes per item: Minecraft 16; items/icons/props 32-64; character sprites 16-48… |
Structured output declared, but exposes no named fields.
No examples provided.
start_lowpoly_animate Start Low-Poly Animation ~268
Add an animation to a Low-Poly model version, or change an existing one by passing its name as animation (paid, priced by size). The first animation rigs the model for free. Animations attach to the version; they do not create a new version. Poll get_lowpoly_job(task_id).
| Name | Type | Req | Description |
|---|---|---|---|
| animation | – | – | Name of an existing animation on the version to change instead of adding a new one (it keeps its name). Omit to add a new animation. |
| asset_id | string | yes | asset_id returned by start_lowpoly_generate or get_lowpoly_job. |
| idempotency_key | – | – | Optional retry key: repeating a start call with the same key returns the same job instead of charging again. |
| mode | – | – | "quality" (default) or "fast" (quicker, simpler shapes). Same price. |
| prompt | string | yes | The motion, e.g. 'a bouncy walk cycle' or 'swing the sword overhead'. With animation: what should change about it. |
| rd_api_key | – | – | RetroDiffusion API key (rdpk-...) for this call only; overrides session or header auth. |
| version | – | – | Version number to work on (default: the newest). Revisions create versions; animations do not. |
Structured output declared, but exposes no named fields.
No examples provided.
start_lowpoly_generate Start Low-Poly 3D Model ~398
Start building a low-poly 3D model with pixel-art textures from a prompt and/or reference images (paid). Optional input_palette (a palette image, as for create_inference): the model uses only its colors, and revisions and animations keep them. Returns task_id and asset_id immediately; poll get_lowpoly_job(task_id) until it succeeds (usually 1-5 minutes). Then use export_lowpoly_model for .glb/.bbmodel/Minecraft/OBJ files, start_lowpoly_revise to change it, or start_lowpoly_animate to add motion. Failed jobs are refunded automatically; never restart a running job.
| Name | Type | Req | Description |
|---|---|---|---|
| idempotency_key | – | – | Optional retry key: repeating a start call with the same key returns the same job instead of charging again. |
| input_palette | – | – | Base64 image of a color palette; output colors are constrained to it. |
| mode | – | – | "quality" (default) or "fast" (quicker, simpler shapes). Same price. |
| prompt | – | – | What to build or change, up to 250 characters. |
| rd_api_key | – | – | RetroDiffusion API key (rdpk-...) for this call only; overrides session or header auth. |
| reference_images | – | – | Up to 4 base64 reference images (PNG/JPEG/WEBP) of the object, e.g. front and side views. |
| size | – | – | Cube size in texels: "16", "32", "64", "128", "256", or "auto" (default). Auto reads the prompt; reference-image-only requests default to 64. Bigger sizes cost more (see get_lowpoly_pricing). |
| style | – | – | Low-Poly style id: rd_lowpoly__detailed (default, free-form shapes), rd_lowpoly__blocky (boxes only, tilted where needed, Minecraft-like), or another style listed by get_lowpoly_pricing. |
Structured output declared, but exposes no named fields.
No examples provided.
start_lowpoly_revise Start Low-Poly Revision ~224
Change an existing Low-Poly model (paid, priced by its size). The result is saved as a new version. Poll get_lowpoly_job(task_id). One job per model at a time.
| Name | Type | Req | Description |
|---|---|---|---|
| asset_id | string | yes | asset_id returned by start_lowpoly_generate or get_lowpoly_job. |
| idempotency_key | – | – | Optional retry key: repeating a start call with the same key returns the same job instead of charging again. |
| mode | – | – | "quality" (default) or "fast" (quicker, simpler shapes). Same price. |
| prompt | string | yes | What should change, up to 250 characters. |
| rd_api_key | – | – | RetroDiffusion API key (rdpk-...) for this call only; overrides session or header auth. |
| reference_images | – | – | Up to 4 base64 reference images (PNG/JPEG/WEBP) of the object, e.g. front and side views. |
| version | – | – | Version number to work on (default: the newest). Revisions create versions; animations do not. |
Structured output declared, but exposes no named fields.
No examples provided.
update_user_style Update Custom Style ~425
Update a public RD Pro user style using /v2/styles/{style_id}. Use `style_reference_images` and `style_reference_caption` for style-level references. These are baked into the custom style and are not the same as per-inference `reference_images`.
| Name | Type | Req | Description |
|---|---|---|---|
| apply_prompt_fixer | – | – | Let the API tidy prompts automatically for this style (default true). |
| description | – | – | Short description of the custom style. |
| expanded_llm_instructions | – | – | Extended instructions for the prompt-expansion LLM. |
| force_bg_removal | – | – | Always remove backgrounds for this style. |
| force_palette | – | – | Always apply palette constraining for this style. |
| llm_instructions | – | – | Instructions for the prompt-expansion LLM when this style is used. |
| min_height | – | – | Force a fixed height (96-256); must be provided together with min_width. |
| min_width | – | – | Force a fixed width (96-256); must be provided together with min_height. |
| name | – | – | New display name for the custom style. |
| rd_api_key | – | – | RetroDiffusion API key (rdpk-...) for this call only; overrides session or header auth. |
| reference_caption | – | – | Alias for style_reference_caption on this tool; prefer style_reference_caption and never provide both. |
| reference_images | – | – | Alias for style_reference_images on this tool; prefer style_reference_images and never provide both. |
| reset_forced_dimensions | boolean | – | Clear previously forced dimensions; do not combine with min_width/min_height. |
| style_icon | – | – | Icon name for the style (e.g. 'sparkles'). |
| style_id | string | yes | Style id — the internal id or the prompt_style/public id (e.g. user__mystyle_ab12). |
| style_reference_caption | – | – | Caption describing the style reference image(s). |
| style_reference_images | – | – | Style-level reference image(s), base64, baked into the custom style (max 1 via the public API). |
| user_prompt_template | – | – | Prompt template for the style; must contain the {prompt} token. |
Structured output declared, but exposes no named fields.
No examples provided.
What is the Retro Diffusion Pixel Art MCP server?
Retro Diffusion Pixel Art is an MCP server listed in the public MCP registry as ai.retrodiffusion/pixel-art. Generate authentic pixel art - sprites, animations, and tilesets - from any MCP client. This page covers its hosted endpoint (https://mcp.retrodiffusion.ai/mcp).
Is the Retro Diffusion Pixel Art MCP server safe to use?
Retro Diffusion Pixel Art scores 76 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the Retro Diffusion Pixel Art MCP server expose?
Retro Diffusion Pixel Art exposes 29 tools: authenticate, logout, create_user_style, update_user_style, delete_user_style, and 24 more. Their descriptions and schemas cost roughly 8,676 tokens of context every time the server is loaded.
Does the Retro Diffusion Pixel Art MCP server require authentication?
No. We connected to Retro Diffusion Pixel Art without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.
Is the Retro Diffusion Pixel Art MCP server still maintained?
Retro Diffusion Pixel Art is still listed as active in the MCP registry. We last reached this channel on 25 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.