Retro Diffusion Pixel Art
by retrodiffusion.ai · remote · no sign-in to list tools · v1.1.0 · published by ai.retrodiffusion
Generate authentic pixel art - sprites, animations, and tilesets - from any MCP client
33 tools: 2 can delete or cancel things, 18 change things and 13 only read.
Scanned Oct 21, 2026
- Deletes or cancels2Claude Code: deny: see these tools
- Can't be undone0Claude Code: ask
- Changes things18Claude Code: ask: see these tools
- Only reads13Claude Code: allow: see these tools
2 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http pixel-art https://mcp.retrodiffusion.ai/mcp --header 'Authorization: <your-authorization>'Findings
Matches of fixed checks, with the text they matched.
- Warncreate_inference
The description names a tool "image_edit" that this server does not list.
What this check looks forMatched text
description: "...once, then derive each variant with the image_edit tool ("... keep the exact same composition")..."
The server marks "estimate_edit_tool_cost" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "estimate_edit_tool_cost" says "edit": a word for a change.
Tools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
33 tools
Deletes or cancels 2Claude Code: deny
delete_lowpoly_animationDelete one animation from a Low-Poly model's version (free) and return the model.No findings
Why it is in this group
- The name "delete_lowpoly_animation" says "delete": a word for removing or ending something.
- The description says "cannot be undone".
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Delete one animation from a Low-Poly model's version (free) and return the model. The rig stays, so animating again needs no new rig. This cannot be undone.
Annotations the server declares
- title: Delete Low-Poly Animation
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: false
- openWorldHint: true
delete_user_styleDelete a user style using /v2/styles/{style_id}.No findings
Why it is in this group
- The name "delete_user_style" says "delete": a word for removing or ending something.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Delete a user style using /v2/styles/{style_id}. style_id can be either internal id or prompt_style/public_id.
Annotations the server declares
- title: Delete Custom Style
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: true
- openWorldHint: true
Changes things 18Claude Code: ask
authenticateAuthenticate this MCP session with a RetroDiffusion public API key.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Authenticate this MCP session with a RetroDiffusion public API key.
Annotations the server declares
- title: Authenticate
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
create_inferenceGenerate images using the public /v2/inferences endpoint.1 finding
Why it is in this group
- The name "create_inference" says "create": a word for a change.
Findings
- Warn
The description names a tool "image_edit" that this server does not list.
What this check looks forMatched text
description: "...once, then derive each variant with the image_edit tool ("... keep the exact same composition")..."
Description, as the server wrote it 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.
Annotations the server declares
- title: Generate Pixel Art
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
create_user_styleCreate a user style from the public RD Pro template using /v2/styles.No findings
Why it is in this group
- The name "create_user_style" says "create": a word for a change.
Description, as the server wrote it 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`.
Annotations the server declares
- title: Create Custom Style
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
estimate_edit_tool_costValidate an edit-tool request and estimate its cost and duration without running it.1 finding
Why it is in this group
- The name "estimate_edit_tool_cost" says "edit": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "estimate_edit_tool_cost" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "estimate_edit_tool_cost" says "edit": a word for a change.
Description, as the server wrote it Validate an edit-tool request and estimate its cost and duration without running it. Always free.
Annotations the server declares
- title: Estimate Edit Cost (Free)
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
estimate_inference_costEstimate generation cost using the public /v2/inferences endpoint with check_cost=true.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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.
Annotations the server declares
- title: Estimate Cost (Free)
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
estimate_lowpoly_costPrice a Low-Poly job without starting it (free).No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Price a Low-Poly job without starting it (free). For generate with size auto, returns the size auto would pick. style prices a generate in that style (Lite styles cost less); other operations use the model's own style.
Annotations the server declares
- title: Estimate Low-Poly Job
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
export_lowpoly_modelExport a Low-Poly model for an engine or tool and return a hosted download URL (free).No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it 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.
Annotations the server declares
- title: Export Low-Poly Model
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
fix_pixel_artRecover the native pixel grid from enlarged, softened, AI-rendered, or compressed pixel art.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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.
Annotations the server declares
- title: Fix Pixel Art
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
logoutClear the authenticated RetroDiffusion API key for this MCP session.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Clear the authenticated RetroDiffusion API key for this MCP session.
Annotations the server declares
- title: Log Out
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
recolor_lowpoly_modelRecolor a Low-Poly model's textures with the image color tools and save the result as a new version (returns the model).No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Recolor a Low-Poly model's textures with the image color tools and save the result as a new version (returns the model). Color Reducer and Palette Converter are free; Color Style Transfer costs $0.01. Later revisions and animations keep the new colors.
Annotations the server declares
- title: Recolor Low-Poly Model
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
run_edit_toolRun a canvas edit tool on an image via /v2/edit/tools/{tool_id}.No findings
Why it is in this group
- The name "run_edit_tool" says "run": a word for a change.
Description, as the server wrote it 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.
Annotations the server declares
- title: Run Edit Tool
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
start_inference_jobStart a generation as an async job (POST /v2/inferences with async=true) and return a task_id.No findings
Why it is in this group
- The name "start_inference_job" says "start": a word for a change.
Description, as the server wrote it 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.
Annotations the server declares
- title: Start Async Generation
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
start_lowpoly_animateAdd an animation to a Low-Poly model version, or change an existing one by passing its name as animation (paid, priced by size).No findings
Why it is in this group
- The name "start_lowpoly_animate" says "start": a word for a change.
Description, as the server wrote it 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).
Annotations the server declares
- title: Start Low-Poly Animation
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
start_lowpoly_generateStart building a low-poly 3D model with pixel-art textures from a prompt and/or reference images (paid).No findings
Why it is in this group
- The name "start_lowpoly_generate" says "start": a word for a change.
Description, as the server wrote it Start building a low-poly 3D model with pixel-art textures from a prompt and/or reference images (paid). reference_models puts your existing models (by asset_id) into it exactly, e.g. "a tavern with my table". 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.
Annotations the server declares
- title: Start Low-Poly 3D Model
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
start_lowpoly_rerigRebuild the skeleton of a rigged Low-Poly model version (paid, priced by size), e.g.No findings
Why it is in this group
- The name "start_lowpoly_rerig" says "start": a word for a change.
Description, as the server wrote it Rebuild the skeleton of a rigged Low-Poly model version (paid, priced by size), e.g. to move a pivot or add bones. The version is updated in place; animations whose bones the new rig still has are kept. Versions without a rig are rigged for free by their first animation instead. Poll get_lowpoly_job(task_id).
Annotations the server declares
- title: Re-rig Low-Poly Model
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
start_lowpoly_reviseChange an existing Low-Poly model (paid, priced by its size).No findings
Why it is in this group
- The name "start_lowpoly_revise" says "start": a word for a change.
Description, as the server wrote it 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.
Annotations the server declares
- title: Start Low-Poly Revision
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
start_lowpoly_splitBreak a Low-Poly model into separate models (paid, priced by its size): a desk scene becomes the desk, a candle, each book, and so on.No findings
Why it is in this group
- The name "start_lowpoly_split" says "start": a word for a change.
Description, as the server wrote it Break a Low-Poly model into separate models (paid, priced by its size): a desk scene becomes the desk, a candle, each book, and so on. Each piece is a new model (and history item) facing the front, with its own textures, rig and animations; the original is unchanged. Poll get_lowpoly_job(task_id); its pieces list the new models.
Annotations the server declares
- title: Split Low-Poly Model
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
update_user_styleUpdate a public RD Pro user style using /v2/styles/{style_id}.No findings
Why it is in this group
- The name "update_user_style" says "update": a word for a change.
Description, as the server wrote it 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`.
Annotations the server declares
- title: Update Custom Style
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
Only reads 13Claude Code: allow
get_balanceGet credits/balance using the public /v2/inferences/credits endpoint.No findings
Why it is in this group
- The name "get_balance" says "get": a word for reading.
Description, as the server wrote it Get credits/balance using the public /v2/inferences/credits endpoint.
Annotations the server declares
- title: Get Balance
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
get_inference_jobCheck the status of an async generation started with start_inference_job.No findings
Why it is in this group
- The name "get_inference_job" says "get": a word for reading.
Description, as the server wrote it 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).
Annotations the server declares
- title: Check Async Job
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
get_inference_resultRetrieve retained outputs for a synchronous generation.No findings
Why it is in this group
- The name "get_inference_result" says "get": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: Get Generated Outputs
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
get_lowpoly_jobStatus of a Low-Poly job: pending, running, succeeded or failed.No findings
Why it is in this group
- The name "get_lowpoly_job" says "get": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: Check Low-Poly Job
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
get_lowpoly_modelA Low-Poly model: status, versions (render URLs, animations) and any running job.No findings
Why it is in this group
- The name "get_lowpoly_model" says "get": a word for reading.
Description, as the server wrote it A Low-Poly model: status, versions (render URLs, animations) and any running job.
Annotations the server declares
- title: Get Low-Poly Model
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
get_lowpoly_pricingLow-Poly (3D) sizes, prices per operation (generate / revise / animate), styles, limits and export targets.No findings
Why it is in this group
- The name "get_lowpoly_pricing" says "get": a word for reading.
Description, as the server wrote it Low-Poly (3D) sizes, prices per operation (generate / revise / animate), styles, limits and export targets. Free.
Annotations the server declares
- title: Low-Poly Pricing
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
get_service_statusCheck RetroDiffusion subsystem health (/v2/status, no auth).No findings
Why it is in this group
- The name "get_service_status" says "get": a word for reading.
Description, as the server wrote it Check RetroDiffusion subsystem health (/v2/status, no auth). Useful before bulk generation runs.
Annotations the server declares
- title: Service Status
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
get_style_usageExplain how to use a public prompt_style from the RetroDiffusion API.No findings
Why it is in this group
- The name "get_style_usage" says "get": a word for reading.
Description, as the server wrote it 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`.
Annotations the server declares
- title: Get Style Usage
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
list_available_modelsReturn unique public model identifiers available in /v2/styles/selector.No findings
Why it is in this group
- The name "list_available_models" says "list": a word for reading.
Description, as the server wrote it Return unique public model identifiers available in /v2/styles/selector.
Annotations the server declares
- title: List Models
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
list_available_stylesList publicly available styles from /v2/styles/selector.No findings
Why it is in this group
- The name "list_available_styles" says "list": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: List Styles
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
list_edit_toolsList the enabled canvas edit tools from /v2/edit/tools with their fields, costs, and limits.No findings
Why it is in this group
- The name "list_edit_tools" says "list": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: List Edit Tools
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
list_inference_jobsList your most recent async jobs, newest first (GET /v2/inferences/tasks).No findings
Why it is in this group
- The name "list_inference_jobs" says "list": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: List Async Jobs
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
list_lowpoly_modelsThe account's Low-Poly models, newest first.No findings
Why it is in this group
- The name "list_lowpoly_models" says "list": a word for reading.
Description, as the server wrote it The account's Low-Poly models, newest first.
Annotations the server declares
- title: List Low-Poly Models
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 1.1.0. Values in angle brackets are yours to fill in.
claude mcp add --transport http pixel-art https://mcp.retrodiffusion.ai/mcp --header 'Authorization: <your-authorization>'Run in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__pixel-art__list_available_styles",
"mcp__pixel-art__list_available_models",
"mcp__pixel-art__get_style_usage",
"mcp__pixel-art__get_balance",
"mcp__pixel-art__list_edit_tools",
"mcp__pixel-art__get_inference_result",
"mcp__pixel-art__get_inference_job",
"mcp__pixel-art__list_inference_jobs",
"mcp__pixel-art__get_service_status",
"mcp__pixel-art__get_lowpoly_pricing",
"mcp__pixel-art__get_lowpoly_job",
"mcp__pixel-art__get_lowpoly_model",
"mcp__pixel-art__list_lowpoly_models"
],
"ask": [
"mcp__pixel-art__authenticate",
"mcp__pixel-art__logout",
"mcp__pixel-art__create_user_style",
"mcp__pixel-art__update_user_style",
"mcp__pixel-art__estimate_inference_cost",
"mcp__pixel-art__create_inference",
"mcp__pixel-art__fix_pixel_art",
"mcp__pixel-art__run_edit_tool",
"mcp__pixel-art__estimate_edit_tool_cost",
"mcp__pixel-art__start_inference_job",
"mcp__pixel-art__estimate_lowpoly_cost",
"mcp__pixel-art__start_lowpoly_generate",
"mcp__pixel-art__start_lowpoly_revise",
"mcp__pixel-art__start_lowpoly_animate",
"mcp__pixel-art__start_lowpoly_split",
"mcp__pixel-art__start_lowpoly_rerig",
"mcp__pixel-art__export_lowpoly_model",
"mcp__pixel-art__recolor_lowpoly_model"
],
"deny": [
"mcp__pixel-art__delete_user_style",
"mcp__pixel-art__delete_lowpoly_animation"
]
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as pixel-art. Review it before you use it.