Retro Diffusion Pixel Art MCP
Server Details
Hosted MCP server for Retro Diffusion. Generate authentic, grid-aligned pixel art — sprites, characters, animations, and tilesets — from Claude, Cursor, VS Code, Windsurf, or any MCP client. 90+ styles, free cost estimation, pay-per-generation with no subscription and credits that never expire.
- Status
- Healthy
- Uptime
- 99.9% over 45 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 33 tools
Each tool maps to a distinct resource/action, and the descriptions carefully separate sync vs async generation, estimates, style CRUD, edit tools, and low-poly lifecycle steps. A couple of pairs like list_available_models/list_available_styles and get_inference_job/get_inference_result could still cause brief hesitation, but the descriptions resolve the ambiguity.
All tool names consistently follow lower_snake_case verb_noun conventions such as create_, get_, list_, start_, estimate_, delete_, and update_. There are no camelCase or mixed-style exceptions, making the API highly predictable.
33 tools is well above the 25+ threshold and feels heavy for a single MCP server, even though it spans 2D pixel art and 3D low-poly workflows. Several estimate/get/list variants could be consolidated without losing much capability.
The server covers the core domains thoroughly: sync and async generation, cost estimation, style CRUD, pixel-art repair and editing, and an extensive low-poly generate/revise/animate/export pipeline. Minor gaps exist, such as no user-style listing and no delete/cancel for low-poly models or jobs, but agents can work around them.
Available Tools
33 toolsauthenticateAuthenticateARead-onlyIdempotentInspect
Authenticate this MCP session with a RetroDiffusion public API key.
| Name | Required | Description | Default |
|---|---|---|---|
| api_key | Yes | RetroDiffusion API key (rdpk-...), created free at https://retrodiffusion.ai/app/devtools. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, which effectively communicate the tool's behavioral traits. The description adds the context of using a public API key, which is consistent with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence of 10 words. Every word is meaningful, with no extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple nature of the tool and the comprehensive parameter description in the schema, the description is largely complete. The output schema (not shown) likely provides success/error details. Some context about when authentication is needed could improve completeness, but it is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% descriptive coverage for the single parameter 'api_key', specifying its format and creation URL. The tool description does not add further semantic meaning, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'Authenticate' and the resource 'this MCP session' with a RetroDiffusion public API key. It distinguishes the tool from its sibling 'logout' by being the opposite operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool should be used to authenticate a session but does not explicitly state when to use it (e.g., before other tools) or provide guidance on alternatives. The parameter description hints at key creation but no direct usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_inferenceGenerate Pixel ArtAInspect
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 | Required | Description | Default |
|---|---|---|---|
| seed | No | Seed for reproducible results; reuse the same seed to iterate on one composition. | |
| width | 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 retro or 96-128 showcase; tiles 16-32; portraits 96-128; full scenes 256 (RD Pro's max; 16:9 scenes = 256x144 — pixel art integer-upscales losslessly). | |
| height | Yes | Output height in pixels. Each style enforces its own limits; check list_available_styles or get_style_usage. | |
| prompt | 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' — the selected style handles all rendering. For standalone assets, state a flat background color that contrasts the subject (default 'on a plain white background') and pair with remove_bg=true; never write 'transparent background' (that is remove_bg's job), and never leave the background unstated (it drifts to drab dark gray). Scenes instead describe their real environment. For rd_advanced_animation__rotate the prompt is only an optional hint describing the uploaded subject — a few words or an empty string. | |
| tile_x | No | Make the result tile seamlessly on the horizontal axis. | |
| tile_y | No | Make the result tile seamlessly on the vertical axis. | |
| strength | No | How strongly to change input_image, 0-1 (default 0.75). Lower values keep more of the original. | |
| remove_bg | No | 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 flat contrasting backdrops. Animations inherit the start frame's transparency automatically. | |
| num_images | No | 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/grid image unless a sheet IS the deliverable). Style-specific maximums apply. | |
| rd_api_key | No | RetroDiffusion API key (rdpk-...) for this call only; overrides session or header auth. | |
| input_image | No | 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 display copy (e.g. a 96px sprite exported at 4x = 384px) exceeds style ranges and gets rejected — downscale to the true pixel grid first. For advanced animations the frame's dimensions must equal width/height, and sprites whose opaque pixels touch the canvas edge animate badly (pad onto a larger transparent canvas first, e.g. 48x48 content onto 64x64). | |
| extra_prompt | No | Secondary prompt for styles that use one (e.g. the transition texture in advanced tilesets). | |
| prompt_style | Yes | Style id from list_available_styles (e.g. 'rd_fast__default', 'rd_pro__isometric', or a custom 'user__...' style). | |
| input_palette | No | Base64 image of a color palette; output colors are constrained to it. | |
| upload_outputs | No | Host outputs and return URLs in output_urls (recommended for MCP clients) instead of only base64 payloads. | |
| frames_duration | No | 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. Ignored by rd_advanced_animation__rotate (always 8 views). | |
| timeout_seconds | No | Read-timeout override in seconds for this call; increase for animations or large batches. | |
| reference_images | No | Extra per-inference guidance images (base64), only for styles where supports_reference_images is true. Not for defining custom styles. | |
| extra_input_image | No | Second base64 input image for styles that use one (e.g. the second texture in rd_tile__tileset_advanced). | |
| return_pre_palette | No | Also return the render from before palette constraints were applied. | |
| return_spritesheet | No | 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). | |
| return_non_bg_removed | No | Also return the render from before background removal was applied. | |
| upscale_output_factor | No | Integer upscale factor for the output image; 1 returns the native pixel size. | |
| bypass_prompt_expansion | No | Skip the automatic LLM prompt enrichment and use the prompt verbatim. | |
| include_downloadable_data | No | Include extra structured assets when available (e.g. tileset atlas JSON, animation frame data). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare non-readonly, non-idempotent, openWorld, non-destructive, so the safety profile is largely covered. The description adds genuine behavioral context beyond that — the response excludes raw base64 payloads, animation failures auto-refund and are worth one identical retry, and reference_images only work where supports_reference_images is true. Auth (rd_api_key) is handled in the schema, not the description, so it is not perfect.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded correctly, but the body is a sprawling multiple-paragraph block and duplicates schema content — the 'N items = N images, never a sheet/grid' rule is repeated verbatim in both the description and the num_images schema text, and pixelate/animation routing is dense. Sizable but not tight.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 25-parameter generation tool with an output schema and rich annotations, the description covers routing, style selection, reference-image semantics, batching, and failure/refund behavior. Nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real disambiguation the schema does not: input_image vs reference_images vs style_reference_images usage, the rule that reference_images guidance re-imagines rather than converts, and that prompt must never contain 'pixel art'. This meaningfully surpasses the structured fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Generate images using the public /v2/inferences endpoint') and immediately distinguishes scope from siblings by naming the alternatives for animation (start_inference_job + get_inference_job), variant derivation (image_edit), conversion (rd_pro__pixelate), and directional views (rd_advanced_animation__rotate). An agent can route correctly without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use and when-not-to-use rules abound: prefer RD Pro styles for quality, use start_inference_job for animations, derive variants via image_edit rather than regenerating, use rd_pro__pixelate to convert rather than re-imagine. Alternatives are named conditionally, not merely listed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_user_styleCreate Custom StyleAInspect
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 | Required | Description | Default |
|---|---|---|---|
| name | Yes | Display name for the custom style. | |
| min_width | No | Force a fixed width (96-256); must be provided together with min_height. | |
| min_height | No | Force a fixed height (96-256); must be provided together with min_width. | |
| rd_api_key | No | RetroDiffusion API key (rdpk-...) for this call only; overrides session or header auth. | |
| style_icon | No | Icon name for the style (e.g. 'sparkles'). | |
| description | No | Short description of the custom style. | |
| force_palette | No | Always apply palette constraining for this style. | |
| force_bg_removal | No | Always remove backgrounds for this style. | |
| llm_instructions | No | Instructions for the prompt-expansion LLM when this style is used. | |
| reference_images | No | Alias for style_reference_images on this tool; prefer style_reference_images and never provide both. | |
| reference_caption | No | Alias for style_reference_caption on this tool; prefer style_reference_caption and never provide both. | |
| apply_prompt_fixer | No | Let the API tidy prompts automatically for this style (default true). | |
| user_prompt_template | No | Prompt template for the style; must contain the {prompt} token. | |
| style_reference_images | No | Style-level reference image(s), base64, baked into the custom style (max 1 via the public API). | |
| style_reference_caption | No | Caption describing the style reference image(s). | |
| expanded_llm_instructions | No | Extended instructions for the prompt-expansion LLM. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag this as a mutating (non-read-only) operation, so the descrioption does not need to restate that. It adds value by explaining that style_reference_images are baked into the custom style and are not the same as per-inference reference images, which is a non-obvious persistence behavior an agent should know before calling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short, front-loaded, and every sentence earns its keep: it states the endpoint and resource, then highlights the key styling nuance. No fluff or redundant repetition of schema details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 16 parameters, 100% schema coverage, an output schema, and annotations marking this as a mutating operation, the description provides enough orienting context. It is slightly light on how this relates to update_user_style or deletion, but those are inferable from the create verb and sibling names.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 100% parameter coverage, so the baseline is solid. The description supplements this by making the crucial distinction between style-level reference images and per-inference reference images, clarifying that the former are baked in. This adds semantic meaning beyond the schema fields, especially around the reference_image alias warnings.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies a specific action and resource: it creates a user/custom style via /v2/tyles from the RD Pro template. It also highlights style-level reference semantics, which helps distinguish style creation from ordinary inference. It does not explicitly name a sibling alternative, but the core purpose is unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides concrete usage guidance by directing agents to use style_reference_images and style_reference_caption for style-level references and warning that these differ from per-inference reference_images. This effectively communicates when to use the style-reference parameters during creation. It does not list exclusions or alternative sibling tools, but the guidance is relevant and operational.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_lowpoly_animationDelete Low-Poly AnimationADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| version | Yes | The version the animation belongs to. | |
| asset_id | Yes | asset_id returned by start_lowpoly_generate or get_lowpoly_job. | |
| animation | Yes | The animation's name, as listed on the version. | |
| rd_api_key | No | RetroDiffusion API key (rdpk-...) for this call only; overrides session or header auth. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds meaningful behavioral context beyond the destructiveHint annotation: the operation is irreversible ('This cannot be undone'), preserves the rig ('The rig stays'), is free, and returns the model. This fully informs the agent about the consequences of calling the tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: three short sentences, with the primary action front-loaded, followed by the most important behavioral notes. Every sentence contributes value, and there is no redundant or fluff content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is sufficient for a destructive tool with full schema documentation and an output schema. It covers the action, scope, irreversibility, cost implication, and return value. It does not cover error cases like deleting a nonexistent animation, but that is not essential for selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema itself documents all four parameters. The description does not add additional parameter-level semantics beyond what the schema already provides, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Delete'), resource ('animation'), target container ('Low-Poly model's version'), and outcome ('return the model'). It clearly distinguishes this from sibling tools like start_lowpoly_animate or export_lowpoly_model.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies when to use it: when one animation needs to be removed. However, it does not explicitly list alternatives or say when not to use it. The note about the rig staying provides helpful context but does not directly route the agent relative to other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_user_styleDelete Custom StyleBDestructiveIdempotentInspect
Delete a user style using /v2/styles/{style_id}. style_id can be either internal id or prompt_style/public_id.
| Name | Required | Description | Default |
|---|---|---|---|
| style_id | Yes | Style id — the internal id or the prompt_style/public id (e.g. user__mystyle_ab12). | |
| rd_api_key | No | RetroDiffusion API key (rdpk-...) for this call only; overrides session or header auth. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description says 'Delete a user style,' which is a destructive mutation, while the annotations declare readOnlyHint: true. This directly contradicts the operation's semantics, so the score must be 1 per the rubric. The description adds no mitigating context about irreversibility or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short, front-loaded sentences with no filler: the first states the action and endpoint, the second clarifies the accepted id forms. This is appropriately sized for a simple delete operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although an output schema exists and the operation is simple, the readOnlyHint contradiction leaves the behavior ambiguous. The description also does not address ownership/permissions, irreversibility of deletion, or behavior when style_id is not found, so it is not complete enough for a destructive tool carrying conflicting annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both style_id and rd_api_key are already documented. The description repeats the fact that style_id can be an internal id or prompt_style/public id, matching the schema description without adding new information. It meets the baseline but does not go beyond it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Delete a user style' and identifies the exact endpoint /v2/styles/{style_id}. This clearly distinguishes the tool from siblings such as create_user_style and update_user_style without being a tautology.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended use is plainly stated: use this when a user style should be removed. It gives clear context, but it does not explicitly name alternatives or exclusions, such as using update_user_style when only a modification is needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
estimate_edit_tool_costEstimate Edit Cost (Free)ARead-onlyIdempotentInspect
Validate an edit-tool request and estimate its cost and duration without running it. Always free.
| Name | Required | Description | Default |
|---|---|---|---|
| width | No | k_centroid_downscale: target width in pixels (required for that tool). | |
| height | No | k_centroid_downscale: target height in pixels (required for that tool). | |
| prompt | No | What to generate or change (required by image_edit and inpainting; optional for outpainting). | |
| tile_x | No | seam_tiling: repair the horizontal seam (tool default applies when omitted). | |
| tile_y | No | seam_tiling: repair the vertical seam (tool default applies when omitted). | |
| tool_id | 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 list_edit_tools for authoritative fields, costs, and limits. | |
| expand_top | No | Outpainting: pixels to add on the top edge. | |
| mask_image | No | Base64 mask for inpainting: white pixels are regenerated, black pixels are kept. | |
| rd_api_key | No | RetroDiffusion API key (rdpk-...) for this call only; overrides session or header auth. | |
| seam_width | No | seam_tiling: width in pixels of the seam band to repair. | |
| color_count | No | color_reducer: target number of colors. | |
| dither_mode | No | color_reducer/palette_converter: dithering mode. | |
| expand_left | No | Outpainting: pixels to add on the left edge. | |
| input_image | Yes | Base64 PNG of the image to edit (raw base64 or a data URL). Required by every edit tool. | |
| expand_right | No | Outpainting: pixels to add on the right edge. | |
| soft_inpaint | No | Inpainting/outpainting: blend edits softly with the surrounding pixels. | |
| expand_bottom | No | Outpainting: pixels to add on the bottom edge. | |
| input_palette | No | Base64 image of a color palette; output colors are constrained to it. | |
| dither_strength | No | color_reducer/palette_converter: dithering strength, 0-10 (0 disables, default 5). | |
| timeout_seconds | No | Read-timeout override in seconds for this call; increase for animations or large batches. | |
| rotation_degrees | No | rotate: rotation angle in degrees (clean-edge pixel rotation). | |
| extra_input_image | No | Second base64 input image for styles that use one (e.g. the second texture in rd_tile__tileset_advanced). | |
| force_solid_pixels | No | background_remover: force fully solid or fully transparent pixels (tool default applies when omitted). | |
| repair_window_size | No | seam_tiling: size of the repair window. | |
| transparency_threshold | No | background_remover: alpha threshold for treating pixels as transparent. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark readOnlyHint, idempotentHint, destructiveHint as false. The description adds 'Always free' and 'without running it,' which goes beyond annotations and provides useful cost transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences that pack key info: purpose, cost, and behavior. Efficient and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 25 parameters with 100% schema coverage and annotations, the description captures the core function well. The 'Always free' note is valuable. Could mention when to use over run_edit_tool explicitly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with detailed descriptions for each parameter. The description adds 'Always free' but no extra parameter info. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'validate an edit-tool request and estimate its cost and duration' and notes 'Always free,' distinguishing it from run_edit_tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says this is for validation and estimation without running, implying use before executing. No direct sibling alternative named, but context with run_edit_tool is implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
estimate_inference_costEstimate Cost (Free)BRead-onlyIdempotentInspect
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 | Required | Description | Default |
|---|---|---|---|
| width | 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 retro or 96-128 showcase; tiles 16-32; portraits 96-128; full scenes 256 (RD Pro's max; 16:9 scenes = 256x144 — pixel art integer-upscales losslessly). | |
| height | Yes | Output height in pixels. Each style enforces its own limits; check list_available_styles or get_style_usage. | |
| prompt | 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' — the selected style handles all rendering. For standalone assets, state a flat background color that contrasts the subject (default 'on a plain white background') and pair with remove_bg=true; never write 'transparent background' (that is remove_bg's job), and never leave the background unstated (it drifts to drab dark gray). Scenes instead describe their real environment. For rd_advanced_animation__rotate the prompt is only an optional hint describing the uploaded subject — a few words or an empty string. | |
| strength | No | How strongly to change input_image, 0-1 (default 0.75). Lower values keep more of the original. | |
| num_images | No | 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/grid image unless a sheet IS the deliverable). Style-specific maximums apply. | |
| rd_api_key | No | RetroDiffusion API key (rdpk-...) for this call only; overrides session or header auth. | |
| input_image | No | 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 display copy (e.g. a 96px sprite exported at 4x = 384px) exceeds style ranges and gets rejected — downscale to the true pixel grid first. For advanced animations the frame's dimensions must equal width/height, and sprites whose opaque pixels touch the canvas edge animate badly (pad onto a larger transparent canvas first, e.g. 48x48 content onto 64x64). | |
| extra_prompt | No | Secondary prompt for styles that use one (e.g. the transition texture in advanced tilesets). | |
| prompt_style | Yes | Style id from list_available_styles (e.g. 'rd_fast__default', 'rd_pro__isometric', or a custom 'user__...' style). | |
| input_palette | No | Base64 image of a color palette; output colors are constrained to it. | |
| frames_duration | No | 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. Ignored by rd_advanced_animation__rotate (always 8 views). | |
| timeout_seconds | No | Read-timeout override in seconds for this call; increase for animations or large batches. | |
| reference_images | No | Extra per-inference guidance images (base64), only for styles where supports_reference_images is true. Not for defining custom styles. | |
| extra_input_image | No | Second base64 input image for styles that use one (e.g. the second texture in rd_tile__tileset_advanced). | |
| return_pre_palette | No | Also return the render from before palette constraints were applied. | |
| return_spritesheet | No | 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). | |
| return_non_bg_removed | No | Also return the render from before background removal was applied. | |
| upscale_output_factor | No | Integer upscale factor for the output image; 1 returns the native pixel size. | |
| bypass_prompt_expansion | No | Skip the automatic LLM prompt enrichment and use the prompt verbatim. | |
| include_downloadable_data | No | Include extra structured assets when available (e.g. tileset atlas JSON, animation frame data). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so the safety profile is covered. The description adds the concrete mechanism (check_cost=true against the public endpoint), implying no credits are consumed and no job is created, which is useful context beyond the annotations. It stops short of saying whether a cost value or an error is returned when the estimate fails.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is short and front-loaded, leading with the action and the endpoint before secondary notes. The second paragraph is somewhat tangential and includes the off-schema parameter reference, but there is no padding or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need no explanation, and all 20 parameters are documented in the schema. However, for a cost-estimation tool the description never confirms that the call is free/no-credit (only the title and annotations imply it) and gives no guidance on which sibling estimator to use, leaving coverage adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the 20 parameters are already fully documented and a baseline of 3 applies. The description adds a little routing logic for input_image vs reference_images vs style_reference_images, but mentions style_reference_images, which is not present in this input schema, creating mild confusion rather than extra clarity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Estimate generation cost') and names the mechanism ('the public /v2/inferences endpoint with check_cost=true'). It is clear on its own, but never distinguishes itself from the sibling estimate_edit_tool_cost or from create_inference, which an agent may be choosing between.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to reach for this tool versus create_inference (the paid generation) or estimate_edit_tool_cost. The three usage hints present ('use input_image for...', 'style_reference_images only on create_user_style/update_user_style') are parameter-level guidance, not tool-selection guidance, and one of them references a parameter that does not appear in this schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
estimate_lowpoly_costEstimate Low-Poly JobARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | 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 | No | Low-Poly style id: rd_lowpoly__detailed (default, free-form shapes), rd_lowpoly__blocky (boxes only, tilted where needed, Minecraft-like), their Lite versions rd_lowpoly__detailed_lite / rd_lowpoly__blocky_lite (a lighter model: simpler results for much less, and Lite prices for everything done to the model later), or another style listed by get_lowpoly_pricing (each style lists its prices). | |
| prompt | No | What to build or change, up to 250 characters. | |
| asset_id | No | Required for revise, animate, split and rerig. | |
| operation | No | generate, revise, animate, split or rerig. | generate |
| rd_api_key | No | RetroDiffusion API key (rdpk-...) for this call only; overrides session or header auth. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as read-only and idempotent, and the description reinforces that by stating it does not start the job and is free. It adds valuable behavioral nuance beyond annotations: auto size returns the size that would be picked, and style only affects pricing for generate while other operations use the model's own style.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, with the core purpose front-loaded and no filler. Each sentence contributes either a primary function, a size edge case, or a style/pricing interaction.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only estimator with a rich schema, an output schema, and annotations covering safety, the description covers the non-obvious behaviors an agent needs: no execution, no charge, auto-size behavior, and style/operation pricing interaction. Remaining operation and asset_id details are already in the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already documents all six parameters at 100% coverage, so the baseline is 3. The description adds non-obvious semantic detail: size=auto causes the estimate to reveal the auto-selected size, and style affects only generate pricing, with Lite styles costing less and other operations ignoring style. This is meaningful added value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Price a Low-Poly job' without starting it, clearly distinguishing this from start_lowpoly_* tools. It also highlights the special auto-size behavior for generate, differentiating the tool's purpose from generic pricing-list endpoints like get_lowpoly_pricing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'without starting it (free)' gives clear context: use this to estimate cost before committing to a job, not to execute one. It does not explicitly name alternatives or exclusion cases, but the context is enough to route an agent away from the start_lowpoly_* siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_lowpoly_modelExport Low-Poly ModelAIdempotentInspect
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 | Required | Description | Default |
|---|---|---|---|
| target | Yes | godot, unity, unreal, web, blender (all .glb), blockbench (.bbmodel), obj (zip), minecraft (resource pack zip), atlas (png), turntable (png), axis_views (zip of 6 pixel-exact PNGs, one per axis direction), gif, sheet or mp4 (1024px video) (need an animation). The .glb and .bbmodel files include every animation. | |
| version | No | Version number to work on (default: the newest). Revisions create versions; animations do not. | |
| asset_id | Yes | asset_id returned by start_lowpoly_generate or get_lowpoly_job. | |
| animation | No | Animation name for the gif, sheet and mp4 targets. Omit it for gif or sheet to get every animation in one zip. | |
| rd_api_key | No | RetroDiffusion API key (rdpk-...) for this call only; overrides session or header auth. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds useful behavioral context beyond annotations: the result is a hosted, free download URL; format depends on target; .glb and .bbmodel include all animations; GIF/sheet/MP4 exports require an animation name. This is meaningful context that helps the agent predict behavior. No contradiction with the idempotent or non-destructive annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, front-loaded with the primary action and output, and every sentence carries useful information. The target format rules and animation caveat are stated efficiently without unnecessary prose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the rich input schema, output schema, and annotations, the description is complete enough for correct invocation. It covers the core export purpose, target-specific formats, animation behavior, and the free hosted URL, leaving no critical ambiguity for an agent to call this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters well. The description adds a bit of semantic value by clarifying target-to-format mapping and animation inclusion, but most parameter meaning is already present in the schema, so the additional contribution is limited.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action and resource: exporting a Low-Poly model and returning a hosted download URL. It also distinguishes by output format (e.g., .glb, .bbmodel, resource pack), though it does not explicitly name an alternative sibling like get_lowpoly_model.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool: when you need an exported Low-Poly model for a specific engine or tool. It also gives practical targeting guidance (e.g., Blender gets .glb, Blockbench gets .bbmodel) and notes animation requirements, but it does not explicitly explain when to choose this over sibling tools or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fix_pixel_artFix Pixel ArtARead-onlyIdempotentInspect
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 | Required | Description | Default |
|---|---|---|---|
| width | No | Optional neural target dimension in pixels. Accepted only with engine='neural'. | |
| engine | No | Fixer engine. Standard uses the native Rust detector; neural uses the neural reconstruction engine. | standard |
| height | No | Optional neural target dimension in pixels. Accepted only with engine='neural'. | |
| image_url | No | 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. | |
| rd_api_key | No | RetroDiffusion API key (rdpk-...) for this call only; overrides session or header auth. | |
| input_image | No | 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 JSON must stay within 900,000 bytes. | |
| timeout_seconds | No | Read-timeout override in seconds for this call; increase for animations or large batches. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate read-only, non-destructive behavior, which the description confirms by stating it 'repairs existing art—it does not generate a new image.' The description adds details beyond annotations: rate limits (10 req/min), image size limits (16 MP), response size (850KB), and URL input benefits. No contradictions. Could mention synchronous/asynchronous behavior, but overall strong.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single paragraph of 7 sentences, starting with the core purpose. It is informative without extraneous details. Could be slightly more structured (e.g., bullet points for limits) but is efficient and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 7 parameters, complete schema coverage, annotations, and an output schema, the description covers purpose, engines, input options, and important limits. It does not explain the output format, but that is reasonable given the output schema exists. Minor gaps: no mention of error handling, but overall comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the description's added value over the schema is minimal. It repeats that width/height are for neural engine and that input_image and image_url are mutually exclusive. This is helpful but does not provide new meaning beyond what is already in the structured fields. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool's action—recovering the native pixel grid from various degraded pixel art—and distinguishes the two engines (standard and neural). It is specific and differs from sibling tools, which cover authentication, inference, style management, etc. No ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use each engine and how to provide input (URL vs base64), including the rate limit. While it doesn't explicitly list alternatives or exclusions, the sibling tools are very different, making usage context clear. Missing explicit 'when not to use' keeps it from a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_balanceGet BalanceARead-onlyIdempotentInspect
Get credits/balance using the public /v2/inferences/credits endpoint.
| Name | Required | Description | Default |
|---|---|---|---|
| rd_api_key | No | RetroDiffusion API key (rdpk-...) for this call only; overrides session or header auth. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false. The description adds only that the endpoint is 'public', which is a mild behavioral trait. It does not describe rate limits, response behavior, or auth interactions beyond that, but the annotations carry most of the safety profile.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence contains the action, the resource, and the endpoint. There is zero filler, and the most important distinguishing detail (the exact endpoint) is included without extra words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple: one optional parameter, no required inputs, an output schema exists, and annotations cover the safety profile. The description's mention of the public endpoint combined with the schema and annotations is sufficient for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the rd_api_key parameter is already fully described in the schema as optional and overriding session/header auth. The description adds no parameter-level information, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('Get') and resource ('credits/balance') and pins it to the exact endpoint '/v2/inferences/credits'. This is unambiguous and, by naming the endpoint, effectively distinguishes it from other tools without needing to list siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not state when to use this tool versus alternatives or when not to use it. The word 'public' hints that it may not need authentication, but there is no explicit usage context or exclusion. An agent is left to infer that this is simply the balance-checking tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_inference_jobCheck Async JobARead-onlyIdempotentInspect
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 | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | Async job id returned by start_inference_job. | |
| rd_api_key | No | RetroDiffusion API key (rdpk-...) for this call only; overrides session or header auth. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint and idempotentHint. Description adds valuable context about output_urls and omission of base64 payloads, enhancing transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose, no fluff. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given output schema exists, description covers statuses and output details adequately. No gaps for this simple tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and description adds helpful context for task_id (links to start_inference_job). Slight added value beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it checks async job status, using specific verb and resource. Distinguishes from sibling tools like start_inference_job and list_inference_jobs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly links to start_inference_job and mentions statuses, but could more explicitly differentiate from list_inference_jobs for batch queries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_inference_resultGet Generated OutputsARead-onlyIdempotentInspect
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 | Required | Description | Default |
|---|---|---|---|
| rd_api_key | No | RetroDiffusion API key (rdpk-...) for this call only; overrides session or header auth. | |
| request_id | Yes | Inference request id returned by create_inference. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, and the description reinforces this with 'This lookup is read-only.' It adds valuable context beyond annotations: the tool returns signed output URLs and warns against unnecessary paid calls, which is a meaningful economic/behavioral nuance. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three short, purposeful paragraphs: purpose, usage, and warning. Every sentence earns its place, with no filler. The front-loaded purpose makes it immediately clear what the tool does.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a simple lookup tool with an output schema and strong annotations. The description covers the synchronous generation context, how to obtain the request_id, and the read-only nature. There are no significant gaps for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (both request_id and rd_api_key are documented). The description adds contextual meaning by linking request_id to create_inference's return value, clarifying the parameter's origin. This goes beyond the schema description, justifying a score above the baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Retrieve retained outputs for a synchronous generation.' It uses a specific verb ('retrieve') and resource ('retained outputs'), and distinguishes itself from siblings like get_inference_job and create_inference by focusing on output retrieval via request_id.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage context: use the request_id from create_inference to recover/refresh signed URLs. It also cautions against repeating a paid create_inference call, which is a clear anti-pattern. It doesn't explicitly contrast with alternative tools like get_inference_job, but the guidance is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_lowpoly_jobCheck Low-Poly JobARead-onlyIdempotentInspect
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 | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | Async job id returned by start_inference_job. | |
| rd_api_key | No | RetroDiffusion API key (rdpk-...) for this call only; overrides session or header auth. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds valuable behavior beyond these annotations: it lists observable status transitions alert the success payload contents (model, versions, render URLs, animations) and the expected polling latency. This meaningfully informs agent behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: the first sentence states the core purpose, the second describes success outputs, and the third gives polling instructions. Every sentence contributes distinct information with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity, the output schema, and rich annotations, the description covers the essential operational details: statuses, success contents, and polling frequency. The only minor gap is not clarifying how this relates to start_lowpoly_generate or how it differs from get_inference_job, but this is not critical for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already documents task_id and rd_api_key adequately. The description does not add parameter-level details, but with full schema coverage the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns the status of a Low-Poly job and enumerates the possible states: pending, running, succeeded, or failed. It also says what is returned on success, which distinguishes it from sibling tools like get_inference_job or get_lowpoly_model. The verb and resource are specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly gives polling guidance: 'Poll every 10-20 seconds; jobs take minutes.' This tells an agent when and how often to call the tool. It does not explicitly name alternative tools or conditions for when not to use it, but the polling context is clear and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_lowpoly_modelGet Low-Poly ModelBRead-onlyIdempotentInspect
A Low-Poly model: status, versions (render URLs, animations) and any running job.
| Name | Required | Description | Default |
|---|---|---|---|
| asset_id | Yes | asset_id returned by start_lowpoly_generate or get_lowpoly_job. | |
| rd_api_key | No | RetroDiffusion API key (rdpk-...) for this call only; overrides session or header auth. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, non-destructive behavior. The description adds value beyond those annotations by indicating that the response includes status, version artifacts such as render URLs and animations, and any running job, which helps the agent anticipate the tool's output.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single compact line with no filler and front-loads the resource before listing the salient response categories. It could be improved by using a complete sentence with a verb, but it is efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only fetch with an output schema and fully documented parameters, the core invocation details are covered enough. The main gap is the lack of routing guidance versus get_lowpoly_job, though the schema's asset_id description partially compensates by referencing the generating job.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%; both asset_id and rd_api_key are documented in the input schema. The description itself adds no parameter meaning, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the resource (Low-Poly model) and the returned content categories: status, versions with render URLs and animations, and any running job. It does not use an explicit verb like 'retrieves' or 'returns,' but combined with the title it is clear enough to distinguish from lowpoly job-specific siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus get_lowpoly_job, list_lowpoly_models, or start_lowpoly_generate. An agent must infer selection criteria from sibling names and the schema's asset_id provenance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_lowpoly_pricingLow-Poly PricingBRead-onlyIdempotentInspect
Low-Poly (3D) sizes, prices per operation (generate / revise / animate), styles, limits and export targets. Free.
| Name | Required | Description | Default |
|---|---|---|---|
| rd_api_key | No | RetroDiffusion API key (rdpk-...) for this call only; overrides session or header auth. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds the useful 'Free' cost signal but does not go further to explain whether authentication is needed or how the endpoint behaves; there is no contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short and front-loads the important pricing categories before the 'Free' note; there is no filler. It is structured as fragments rather than a full sentence with an explicit verb, which slightly weakens clarity but keeps it concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only endpoint with one optional parameter and an output schema, the key contents are listed. However, the description omits any statement of what operation the tool performs or when to choose it over the nearby estimate_lowpoly_cost and get_lowpoly_model endpoints, leaving part of the selection context to inference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single optional rd_api_key parameter is fully documented in the schema (100% coverage), so the description does not need to explain it. The description adds no parameter-level detail, but the baseline of 3 is appropriate because the schema carries the full burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies a concrete resource — Low-Poly pricing — and enumerates the specific contents (sizes, per-operation prices for generate/revise/animate, styles, limits, export targets), so an agent can tell this is the pricing/metadata endpoint. It lacks an explicit verb such as 'retrieves' or 'returns,' and it does not directly differentiate from sibling estimation tools like estimate_lowpoly_cost, stopping short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to call this tool versus estimate_lowpoly_cost, get_balance, or the low-poly job/model getters. The only usage hint is 'Free,' which says the call itself has no cost but does not state when this endpoint is the right choice or when an alternative should be used.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_service_statusService StatusARead-onlyIdempotentInspect
Check RetroDiffusion subsystem health (/v2/status, no auth). Useful before bulk generation runs.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only and idempotent behavior, and the description adds the no-auth detail and the health-check scope. No contradiction with annotations; the additional context around intended use complements them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence conveys purpose, endpoint, auth status, and usage context with zero waste. Front-loaded with the action and resource before the context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters and an output schema present, the description covers the essential call-time context (auth, health-check purpose). Could mention what status values are returned, but the output schema likely covers that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and schema coverage is 100% (trivially). The description doesn't need to document parameters; the no-auth note and health-check context provide all needed semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states a specific verb ('Check'), resource ('RetroDiffusion subsystem health'), path ('/v2/status'), and no-auth requirement. It clearly distinguishes this health-check tool from sibling inference/job/balance tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides usage context ('before bulk generation runs') without naming alternatives. No explicit when-not-to-use, but the context is enough for an agent to select it appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_style_usageGet Style UsageARead-onlyIdempotentInspect
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 | Required | Description | Default |
|---|---|---|---|
| rd_api_key | No | RetroDiffusion API key (rdpk-...) for this call only; overrides session or header auth. | |
| prompt_style | Yes | Style id from list_available_styles (e.g. 'rd_fast__default', 'rd_pro__isometric', or a custom 'user__...' style). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnly, openWorld, idempotent, non-destructive. The description adds behavioral context about what the tool explains (style expectations), going beyond annotations to clarify its role as a consultation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: first states purpose, second gives usage guidance. No superfluous words; every sentence earns its place. Front-loaded with the essential action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of output schema and comprehensive annotations, the description provides all necessary context: it explains the tool's purpose and when to use it, fitting the complexity of a style usage query.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% coverage with descriptions for both parameters. The description does not repeat param details but adds meaningful context about how the tool's output informs the usage of those parameters in create_inference, thus enhancing semantic understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Explain how to use a public prompt_style', using a specific verb and resource. It distinguishes from sibling tools like 'create_inference' and 'list_available_styles' by focusing on usage explanation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Directly advises 'Use this before create_inference if you are unsure...' and lists specific scenarios (input_image, reference_images, style_reference_images). Provides explicit when-to-use guidance and implies alternative by referencing create_inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_available_modelsList ModelsARead-onlyIdempotentInspect
Return unique public model identifiers available in /v2/styles/selector.
| Name | Required | Description | Default |
|---|---|---|---|
| rd_api_key | No | RetroDiffusion API key (rdpk-...) for this call only; overrides session or header auth. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and non-destructive behavior. The description adds the endpoint path and the uniqueness/public qualifiers, but provides no further behavioral context such as authentication behavior, ordering, or open-world implications.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence conveys the core purpose with no filler. Every word contributes meaning, and the most important information appears immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple, has full parameter documentation, a complete output schema, and annotations covering safety and idempotency. The description covers what is returned and where, though it does not help an agent disambiguate between this and sibling list tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: the only parameter, rd_api_key, is fully documented in the input schema. The description adds no parameter-level detail, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Return' and identifies the resource as 'unique public model identifiers available in /v2/styles/selector'. This clearly distinguishes it from sibling tools like list_available_styles and list_edit_tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternative list tools, and does not mention any exclusion criteria or contexts where a sibling would be more appropriate. Usage must be inferred entirely from the tool's name and endpoint.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_available_stylesList StylesARead-onlyIdempotentInspect
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 | Required | Description | Default |
|---|---|---|---|
| tab | No | Filter styles by tab: tab:image, tab:animation, tab:advanced-animation, or tab:tileset. | |
| model | No | Filter styles by model: rd_fast, rd_plus, rd_pro, or rd_mini. | |
| rd_api_key | No | RetroDiffusion API key (rdpk-...) for this call only; overrides session or header auth. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, and destructiveHint=false, so no safety contradiction exists. The description adds useful behavioral context by naming the exact endpoint and the metadata fields returned, which goes beyond the annotations. It does not go into details like pagination or response envelope, but the output schema likely covers that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no filler. The primary action and endpoint are front-loaded, followed immediately by the practical purpose and example metadata fields. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no required parameters, a complete input schema, an output schema, and annotations that clearly establish it as a safe read-only operation. The description adds endpoint and purpose context, making the tool fully understandable for an agent without any apparent missing information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already explains tab, model, and rd_api_key with their filtering values and defaults. The description adds overall purpose but does not enrich the meaning of individual parameters beyond what the schema provides. Therefore, the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'List publicly available styles from /v2/styles/selector.' It also clearly states the tool's purpose: discovering valid prompt_style values and style metadata such as require_input_image and supports_reference_images. This clearly differentiates it from sibling tools like list_available_models or style-management tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear usage context: 'Use this to discover valid prompt_style values plus style metadata.' This implies the right time to call it when an agent needs style options before creating or running an inference. It does not explicitly mention alternatives or exclusions, such as not using it for user-defined styles, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_edit_toolsList Edit ToolsARead-onlyIdempotentInspect
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 | Required | Description | Default |
|---|---|---|---|
| rd_api_key | No | RetroDiffusion API key (rdpk-...) for this call only; overrides session or header auth. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description adds the endpoint and the fact that it lists only enabled tools with their fields, costs, and limits, which is useful but not extensive. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, both purposeful. The first sentence states the core action and endpoint, and the second adds useful context about why edit tools matter. There is no wasted text or repetition of schema details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, read-only listing tool with a single optional parameter, an output schema, and strong annotations, the description is complete enough. It names the endpoint, the data returned, and the domain context, leaving no significant gaps for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter, rd_api_key, has full schema description coverage. The description does not need to explain the parameter, and the schema already provides its type, default, and purpose. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific language: 'List the enabled canvas edit tools from /v2/edit/tools with their fields, costs, and limits.' This clearly identifies the verb, resource, endpoint, and what is returned, distinguishing it from sibling tools like run_edit_tool and estimate_edit_tool_cost.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides helpful context by positioning edit tools as the recommended post-processing approach, but it does not explicitly state when to use this listing tool versus alternatives such as run_edit_tool or estimate_edit_tool_cost. Usage context is implied rather than directly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_inference_jobsList Async JobsARead-onlyIdempotentInspect
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 | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of recent jobs to return (1-100, default 20). | |
| status | No | Optional: only return jobs with this status. | |
| rd_api_key | No | RetroDiffusion API key (rdpk-...) for this call only; overrides session or header auth. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, it discloses non-obvious durability behavior: a job may be accepted even if the response was lost, and listing it here is the safe way to recover it without re-submitting. This adds real value beyond readOnly/idempotent hints and has no contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise, purpose-driven sentences followed by a useful recovery note. Every sentence contributes: the first defines the operation, the second explains why an agent might need this tool, and the sibling pointer adds actional guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list operation with an output schema and complete annotations, the description covers purpose, ordering, recovery behavior, and the next-step sibling. Nothing needed for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema coverage is 100%, with clear descriptions for limit, status, and rd_api_key. The description itself adds little parameter-specific meaning besides confirming the list is reverse-chronological, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb and resource: 'List your most recent async jobs, newest first', and includes the exact endpoint. It also distinguishes itself from the sibling get_inference_job by positioning it as the polling tool to use after this listing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides an explicit recovery path: when a submission response is lost before task_id arrives, use this tool instead of re-submitting to avoid double charges. It also names get_inference_job as the next step, but doesn't explicitly state when not to use this tool for single-job lookups.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_lowpoly_modelsList Low-Poly ModelsBRead-onlyIdempotentInspect
The account's Low-Poly models, newest first.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | How many models to return (newest first). | |
| rd_api_key | No | RetroDiffusion API key (rdpk-...) for this call only; overrides session or header auth. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered structurally. The description adds the account scoping and 'newest first' ordering, but does not disclose pagination behavior, result limits, or auth details beyond what the schema already states.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence with no filler, and the key facts are front-loaded. It is appropriately concise for a simple list operation, though it sacrifices usage and alternative context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with two optional parameters, full schema coverage, and an output schema, the description supplies the essential invocation context: resource scope and ordering. It is less complete in differentiating sibling tools, but the tool name and context signals partly cover that gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and both parameters (limit and rd_api_key) are fully documented in the input schema. The description's 'newest first' reinforces the limit semantics but adds no new parameter-level meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource ('the account's Low-Poly models') and an ordering guarantee ('newest first'), so the core action is clear. It does not explicitly contrast with sibling tools like get_lowpoly_model or list_available_models, though 'account's' gives some scope differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus list_available_models, get_lowpoly_model, or get_lowpoly_job. The only usage context is implicit in the phrase 'account's Low-Poly models,' with no exclusions, prerequisites, or alternative routing provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
logoutLog OutAIdempotentInspect
Clear the authenticated RetroDiffusion API key for this MCP session.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds valuable context beyond annotations: it specifies the exact behavior of clearing the API key per session, confirming idempotency and non-destructiveness. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no waste, front-loaded with the action and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool with an output schema, the description is complete and leaves no ambiguity about its function.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist; baseline 4 is appropriate. The description covers the tool's purpose sufficiently.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('clear') and the specific resource ('authenticated RetroDiffusion API key' for this MCP session). It effectively distinguishes from sibling 'authenticate'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for ending an authenticated session but lacks explicit when-to-use or when-not-to-use guidance compared to alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recolor_lowpoly_modelRecolor Low-Poly ModelAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| tool | Yes | color_reducer (limit the colors), palette_converter (convert to a palette image) or color_style_transfer (take a reference image's color style). | |
| version | No | Version number to work on (default: the newest). Revisions create versions; animations do not. | |
| asset_id | Yes | asset_id returned by start_lowpoly_generate or get_lowpoly_job. | |
| rd_api_key | No | RetroDiffusion API key (rdpk-...) for this call only; overrides session or header auth. | |
| color_count | No | color_reducer: how many colors, 2-256 (omit for automatic). | |
| dither_mode | No | none | bayer_2x2 | bayer_4x4 | bayer_8x8 (color_reducer, palette_converter). | |
| palette_image | No | Base64 image of a color palette; output colors are constrained to it. | |
| dither_strength | No | Dithering strength, 0-10 (default 5). | |
| reference_image | No | color_style_transfer: base64 reference image. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations establish that this is a non-read-only, non-destructive mutation. The description adds meaningful behavioral context: results are saved as a new version, the model is returned, the recolor persists across later revisions and animations, and one tool carries a per-use cost. No annotation contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, all information-dense: action/result/return in the first, cost in the second, persistence in the third. The description is front-loaded and has no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 9 parameters, full schema coverage, and an output schema present, the description need not enumerate fields. It supplies the missing operational context—cost, new-version semantics, and persistence—so an agent has what it needs to call the tool correctly. It could be slightly more explicit about parameter interactions, but the schema covers the mechanics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds value by mapping the tool parameter to cost implications (free vs $0.01) and by emphasizing the persistence behavior that affects how version/asset parameters should be understood. It does not add syntax or format details, but the schema already covers those.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the exact operation ('Recolor a Low-Poly model's textures'), the output ('save the result as a new version'), and the return value ('returns the model'). This clearly distinguishes it from sibling generation, revision, animation, and export tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It conveys the use context—recoloring textures with image color tools—and gives practical selection guidance through the cost breakdown (free vs $0.01 for Color Style Transfer). It does not explicitly name alternative tools or exclusion criteria, so it stops short of a full when-to-use/not-to-use guide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_edit_toolRun Edit ToolAInspect
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 | Required | Description | Default |
|---|---|---|---|
| seed | No | Seed for reproducible results; reuse the same seed to iterate on one composition. | |
| width | No | k_centroid_downscale: target width in pixels (required for that tool). | |
| height | No | k_centroid_downscale: target height in pixels (required for that tool). | |
| prompt | No | What to generate or change (required by image_edit and inpainting; optional for outpainting). | |
| tile_x | No | seam_tiling: repair the horizontal seam (tool default applies when omitted). | |
| tile_y | No | seam_tiling: repair the vertical seam (tool default applies when omitted). | |
| tool_id | 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 list_edit_tools for authoritative fields, costs, and limits. | |
| expand_top | No | Outpainting: pixels to add on the top edge. | |
| mask_image | No | Base64 mask for inpainting: white pixels are regenerated, black pixels are kept. | |
| rd_api_key | No | RetroDiffusion API key (rdpk-...) for this call only; overrides session or header auth. | |
| seam_width | No | seam_tiling: width in pixels of the seam band to repair. | |
| color_count | No | color_reducer: target number of colors. | |
| dither_mode | No | color_reducer/palette_converter: dithering mode. | |
| expand_left | No | Outpainting: pixels to add on the left edge. | |
| input_image | Yes | Base64 PNG of the image to edit (raw base64 or a data URL). Required by every edit tool. | |
| expand_right | No | Outpainting: pixels to add on the right edge. | |
| soft_inpaint | No | Inpainting/outpainting: blend edits softly with the surrounding pixels. | |
| expand_bottom | No | Outpainting: pixels to add on the bottom edge. | |
| input_palette | No | Base64 image of a color palette; output colors are constrained to it. | |
| dither_strength | No | color_reducer/palette_converter: dithering strength, 0-10 (0 disables, default 5). | |
| timeout_seconds | No | Read-timeout override in seconds for this call; increase for animations or large batches. | |
| rotation_degrees | No | rotate: rotation angle in degrees (clean-edge pixel rotation). | |
| extra_input_image | No | Second base64 input image for styles that use one (e.g. the second texture in rd_tile__tileset_advanced). | |
| force_solid_pixels | No | background_remover: force fully solid or fully transparent pixels (tool default applies when omitted). | |
| repair_window_size | No | seam_tiling: size of the repair window. | |
| transparency_threshold | No | background_remover: alpha threshold for treating pixels as transparent. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds useful operational behavior beyond the annotations: per-tool pricing, the endpoint pattern, and the base64_images return format. Annotations already cover read-only/idempotent/destructive hints, so the description isn't burdened with those, and there is no contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Every sentence earns its place: endpoint, tool list with costs, free estimation caveat, and output format. It is compact, scannable, and front-loaded with the primary action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 26-parameter tool with 100% schema coverage and an output schema, the description does not need to enumerate parameters. It covers the critical workflow (estimate before paid calls), cost, and output representation, making the definition complete enough for safe invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema coverage, the schema already documents most parameters, but the description adds cost categories attached to specific tool_id values, which helps an agent select the right tool parameter. It also notes that the edited image returns in base64, which is relevant to handling the output but not a schema parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific action and resource—'Run a canvas edit tool on an image via /v2/edit/tools/{tool_id}'—and enumerates the valid tool IDs, making the tool's job unmistakable and separating it from cost-estimation and listing siblings. The name alone is generic, but the description removes ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit workflow rule: call estimate_edit_tool_cost first for any paid tool, and flags which tools are free versus paid. It does not explicitly say 'use list_edit_tools instead when you only need metadata' or list exclusions, but the pricing guidance is concrete and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_inference_jobStart Async GenerationAInspect
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 | Required | Description | Default |
|---|---|---|---|
| seed | No | Seed for reproducible results; reuse the same seed to iterate on one composition. | |
| width | 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 retro or 96-128 showcase; tiles 16-32; portraits 96-128; full scenes 256 (RD Pro's max; 16:9 scenes = 256x144 — pixel art integer-upscales losslessly). | |
| height | Yes | Output height in pixels. Each style enforces its own limits; check list_available_styles or get_style_usage. | |
| prompt | 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' — the selected style handles all rendering. For standalone assets, state a flat background color that contrasts the subject (default 'on a plain white background') and pair with remove_bg=true; never write 'transparent background' (that is remove_bg's job), and never leave the background unstated (it drifts to drab dark gray). Scenes instead describe their real environment. For rd_advanced_animation__rotate the prompt is only an optional hint describing the uploaded subject — a few words or an empty string. | |
| tile_x | No | Make the result tile seamlessly on the horizontal axis. | |
| tile_y | No | Make the result tile seamlessly on the vertical axis. | |
| strength | No | How strongly to change input_image, 0-1 (default 0.75). Lower values keep more of the original. | |
| remove_bg | No | 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 flat contrasting backdrops. Animations inherit the start frame's transparency automatically. | |
| num_images | No | 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/grid image unless a sheet IS the deliverable). Style-specific maximums apply. | |
| rd_api_key | No | RetroDiffusion API key (rdpk-...) for this call only; overrides session or header auth. | |
| input_image | No | 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 display copy (e.g. a 96px sprite exported at 4x = 384px) exceeds style ranges and gets rejected — downscale to the true pixel grid first. For advanced animations the frame's dimensions must equal width/height, and sprites whose opaque pixels touch the canvas edge animate badly (pad onto a larger transparent canvas first, e.g. 48x48 content onto 64x64). | |
| extra_prompt | No | Secondary prompt for styles that use one (e.g. the transition texture in advanced tilesets). | |
| prompt_style | Yes | Style id from list_available_styles (e.g. 'rd_fast__default', 'rd_pro__isometric', or a custom 'user__...' style). | |
| input_palette | No | Base64 image of a color palette; output colors are constrained to it. | |
| upload_outputs | No | Host outputs and return URLs in output_urls (recommended for MCP clients) instead of only base64 payloads. | |
| frames_duration | No | 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. Ignored by rd_advanced_animation__rotate (always 8 views). | |
| timeout_seconds | No | Read-timeout override in seconds for this call; increase for animations or large batches. | |
| reference_images | No | Extra per-inference guidance images (base64), only for styles where supports_reference_images is true. Not for defining custom styles. | |
| extra_input_image | No | Second base64 input image for styles that use one (e.g. the second texture in rd_tile__tileset_advanced). | |
| return_pre_palette | No | Also return the render from before palette constraints were applied. | |
| return_spritesheet | No | 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). | |
| return_non_bg_removed | No | Also return the render from before background removal was applied. | |
| upscale_output_factor | No | Integer upscale factor for the output image; 1 returns the native pixel size. | |
| bypass_prompt_expansion | No | Skip the automatic LLM prompt enrichment and use the prompt verbatim. | |
| include_downloadable_data | No | Include extra structured assets when available (e.g. tileset atlas JSON, animation frame data). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=false, openWorldHint=true, destructiveHint=false, so the safety profile is covered; the description adds genuine behavioral context on async execution, the returned task_id, and the polling cadence. It stops short of warning that repeated calls create duplicate jobs (relevant given idempotentHint=false) or addressing auth/cost, so it earns a 4 rather than a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with no waste; the endpoint and return value are front-loaded ahead of the recommendation. It is slightly under-explained for a 25-parameter tool, but nothing is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need no explanation, and the description still supplies the key workflow fact (task_id plus polling interval). For a 25-param async tool with 4 required params, this covers what an agent needs to invoke it correctly, though it could note that the job continues server-side after the call returns.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% across all 25 parameters, so the schema already carries the full parameter burden, including style limits, seed reuse, and animation frame counts. The description adds no per-parameter guidance of its own, making the baseline 3 correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb, resource, and mechanism: 'Start a generation as an async job (POST /v2/inferences with async=true) and return a task_id.' This clearly separates it from the sibling create_inference (synchronous generation) without needing to open either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names the cases that select this tool (advanced animations rd_advanced_animation__*, other animation styles, batches), explains why (they run for tens of seconds and can outlive a synchronous MCP call), and gives the follow-up procedure ('poll the returned task_id with get_inference_job roughly every 2-5 seconds'). Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_lowpoly_animateStart Low-Poly AnimationAInspect
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 | Required | Description | Default |
|---|---|---|---|
| mode | No | Omit (auto) to let the service pick: quality, or fast for simple requests. "quality" or "fast" to choose. Same price. | |
| prompt | Yes | The motion, e.g. 'a bouncy walk cycle' or 'swing the sword overhead'. With animation: what should change about it. | |
| version | No | Version number to work on (default: the newest). Revisions create versions; animations do not. | |
| asset_id | Yes | asset_id returned by start_lowpoly_generate or get_lowpoly_job. | |
| animation | No | 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. | |
| rd_api_key | No | RetroDiffusion API key (rdpk-...) for this call only; overrides session or header auth. | |
| idempotency_key | No | Optional retry key: repeating a start call with the same key returns the same job instead of charging again. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds meaningful behavioral context beyond annotations: it is paid and priced by size, the first animation is free, animations do not create a new version, and the caller should poll the job. This goes well beyond the readOnly/idempotent/destructive flags and helps the agent set expectations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact sentences, each carrying distinct value: the core operation, pricing/free-first behavior, and polling instruction. Content is front-loaded and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a paid, asynchronous animation mutation, the description covers the key operational facts: pricing model, version behavior, and how to track the job. Required parameters are documented in the schema and an output schema exists, so return shape does not need to be in the description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all seven parameters. The description adds no substantial parameter-level detail beyond the schema; the mention of passing an animation name to change it mirrors what the animation parameter description already says.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Add an animation to a Low-Poly model version, or change an existing one.' It further distinguishes the operation by noting animations attach to the version and do not create a new version, which separates it from sibling operations like generation or revision.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly frames when to use this tool: to add or change an animation, and says to poll get_lowpoly_job afterward. It does not explicitly enumerate alternatives or exclusion criteria, but the context of what counts as an animation operation is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_lowpoly_generateStart Low-Poly 3D ModelAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Omit (auto) to let the service pick: quality, or fast for simple requests. "quality" or "fast" to choose. Same price. | |
| size | No | 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 | No | Low-Poly style id: rd_lowpoly__detailed (default, free-form shapes), rd_lowpoly__blocky (boxes only, tilted where needed, Minecraft-like), their Lite versions rd_lowpoly__detailed_lite / rd_lowpoly__blocky_lite (a lighter model: simpler results for much less, and Lite prices for everything done to the model later), or another style listed by get_lowpoly_pricing (each style lists its prices). | |
| prompt | No | What to build or change, up to 250 characters. | |
| rd_api_key | No | RetroDiffusion API key (rdpk-...) for this call only; overrides session or header auth. | |
| input_palette | No | Base64 image of a color palette; output colors are constrained to it. | |
| idempotency_key | No | Optional retry key: repeating a start call with the same key returns the same job instead of charging again. | |
| reference_images | No | Up to 4 base64 reference images (PNG/JPEG/WEBP) of the object, e.g. front and side views. | |
| reference_models | No | asset_ids of your own finished Low-Poly models to build in: each is placed exactly (same shapes and textures) where the prompt puts it, or adapted. Images and models together: at most 4. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint=false, idempotentHint=false, destructiveHint=false), the description reveals the async behavior ('Returns task_id and asset_id immediately'), the refund policy ('Failed jobs are refunded automatically'), and the constraint on restarting jobs. It also explains that input_palette colors persist into revisions and animations. These are critical behavioral traits that the annotations do not capture.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single dense paragraph that is front-loaded with the main purpose. It packs a lot of information but is reasonably organized: it starts with the core action, then explains key parameters, then the return and follow-up workflow, then the refund/restart caveat. It could benefit from line breaks or bullet points for clarity, but every sentence adds value and there is no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex tool with 9 optional parameters and no required inputs, the description covers the full workflow: what to provide, what is returned, how to poll, what to do next, and failure handling. It also mentions the cost implication ('paid') and the pricing nuance for size in the schema. The agent has enough information to invoke the tool correctly and know the expected outcome, including the asynchronous nature.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already covers all parameters with 100% description coverage, so the baseline is 3. The description adds meaningful semantics for reference_models ('puts your existing models (by asset_id) into it exactly') and input_palette ('the model uses only its colors, and revisions and animations keep them'), which go beyond the schema's terse descriptions. It does not add semantics for mode, size, style, or idempotency_key, but the schema descriptions are already detailed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Start building a low-poly 3D model with pixel-art textures from a prompt and/or reference images.' It names the resource (low-poly 3D model), the verb (start building), and the input types. It also distinguishes itself from sibling tools by naming export_lowpoly_model, start_lowpoly_revise, and start_lowpoly_animate as subsequent steps, preventing confusion with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit workflow guidance: it says to poll get_lowpoly_job(task_id) until success, then use export_lowpoly_model, start_lowpoly_revise, or start_lowpoly_animate for follow-ups. It also warns 'never restart a running job' and clarifies that reference_models places existing models exactly, which implies this tool is for building new models or incorporating existing ones. This gives clear when-to-use and when-not-to-use context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_lowpoly_rerigRe-rig Low-Poly ModelAInspect
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).
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | No | What to change about the rig, e.g. 'give the tail three bones' (up to 250 characters). Omit for a fresh rig. | |
| version | No | Version number to work on (default: the newest). Revisions create versions; animations do not. | |
| asset_id | Yes | asset_id returned by start_lowpoly_generate or get_lowpoly_job. | |
| rd_api_key | No | RetroDiffusion API key (rdpk-...) for this call only; overrides session or header auth. | |
| idempotency_key | No | Optional retry key: repeating a start call with the same key returns the same job instead of charging again. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds meaningful behavioral context beyond the annotations: the version is updated in place, animations whose bones the new rig still has are kept, the operation is paid and priced by size, and users should poll get_lowpoly_job. This is exactly the kind of consequence disclosure an agent needs and is consistent with the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences deliver the core purpose, cost, mutation behavior, animation preservation, and next-step polling instruction. There is no filler, and the most important decision-relevant information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an async, paid, mutating job, the description covers selection criteria, pricing model, in-place behavior, animation consequences, and the follow-up polling call. With a full input schema and an output schema present, no essential guidance is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with each parameter already clearly explained in the input schema. The description does not add parameter-specific detail beyond what the schema provides, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Rebuild the skeleton of a rigged Low-Poly model version', using a specific verb and resource. Examples like 'move a pivot or add bones' clarify intent, and the mention of unrigged versions distinguishes it from related start_lowpoly_* tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly states when to use the tool (re-rigging a rigged version) and gives an exclusion: versions without a rig are rigged for free by their first animation instead. It does not explicitly name alternative sibling tools, so it stops just short of full alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_lowpoly_reviseStart Low-Poly RevisionAInspect
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 | Required | Description | Default |
|---|---|---|---|
| mode | No | Omit (auto) to let the service pick: quality, or fast for simple requests. "quality" or "fast" to choose. Same price. | |
| prompt | Yes | What should change, up to 250 characters. | |
| version | No | Version number to work on (default: the newest). Revisions create versions; animations do not. | |
| asset_id | Yes | asset_id returned by start_lowpoly_generate or get_lowpoly_job. | |
| rd_api_key | No | RetroDiffusion API key (rdpk-...) for this call only; overrides session or header auth. | |
| idempotency_key | No | Optional retry key: repeating a start call with the same key returns the same job instead of charging again. | |
| reference_images | No | Up to 4 base64 reference images (PNG/JPEG/WEBP) of the object, e.g. front and side views. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only mark readOnlyHint false and destructiveHint false; the description adds genuinely useful behavioral context: the operation is paid and priced by model size, it creates a new version rather than overwriting, it is asynchronous (poll get_lowpoly_job), and only one job per model is allowed at a time. It does not cover error/failure conditions, but the added disclosures are substantial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is four short sentences with no filler. Cost, core action, output behavior, and concurrency constraint are all front-loaded, and every sentence adds information the agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an async, paid, side-effectful operation, the description covers the critical non-obvious facts: polling, per-model concurrency, and version creation. The output schema and complete parameter schema are present, so return values and parameters are handled. The main gap is explicit routing among the many start_lowpoly_* siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema carries the parameter documentation burden and the baseline is 3. The description adds little param-specific meaning beyond context like 'one job per model,' which touches asset_id indirectly. It does not need to compensate for schema gaps because there are none.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Change an existing Low-Poly model,' which clearly sets this apart from creation tools like start_lowpoly_generate. The outcome 'saved as a new version' further pins down its purpose as a revision operation, not an animation, split, or rerig.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'existing Low-Poly model' and 'saved as a new version' imply the revision use case, and 'Poll get_lowpoly_job(task_id)' gives the correct follow-up. However, it does not explicitly say when to use this over sibling tools like recolor_lowpoly_model, start_lowpoly_rerig, or start_lowpoly_generate, nor does it state exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_lowpoly_splitSplit Low-Poly ModelAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | No | How to split, e.g. 'only the books' or 'each drawer too' (up to 250 characters). Omit to split off every separate object that makes sense. | |
| version | No | Version number to work on (default: the newest). Revisions create versions; animations do not. | |
| asset_id | Yes | asset_id returned by start_lowpoly_generate or get_lowpoly_job. | |
| rd_api_key | No | RetroDiffusion API key (rdpk-...) for this call only; overrides session or header auth. | |
| idempotency_key | No | Optional retry key: repeating a start call with the same key returns the same job instead of charging again. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses that each piece becomes a new model and history item, faces the front, retains its own textures/rig/animations, and leaves the original unchanged. It also reveals that the operation is paid and priced by size, and directs the agent to get_lowpoly_job for completion. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the core action and pricing, then piece behavior and polling instructions. Every sentence adds information and there is no padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an asynchronous start_job tool, the description covers the essential post-call behavior (poll get_lowpoly_job and inspect its pieces), cost, preservation of model attributes, and non-destructive behavior. The presence of an output schema means return values do not need to be explained in the description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description does not add parameter-level detail beyond what the schema already provides; the cost and output context apply to the operation as a whole rather than individual parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states a specific verb ('Break') and resource ('Low-Poly model into separate models'), with a concrete desk-scene example. It clearly differentiates from sibling tools like start_lowpoly_generate, start_lowpoly_animate, and start_lowpoly_revise by describing a split operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description establishes when to use the tool: to break an existing low-poly model into separate pieces. It also tells the agent to poll get_lowpoly_job afterward. However, it does not explicitly name alternatives or state when not to use this tool, though context makes the intended use fairly clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_user_styleUpdate Custom StyleAIdempotentInspect
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 | Required | Description | Default |
|---|---|---|---|
| name | No | New display name for the custom style. | |
| style_id | Yes | Style id — the internal id or the prompt_style/public id (e.g. user__mystyle_ab12). | |
| min_width | No | Force a fixed width (96-256); must be provided together with min_height. | |
| min_height | No | Force a fixed height (96-256); must be provided together with min_width. | |
| rd_api_key | No | RetroDiffusion API key (rdpk-...) for this call only; overrides session or header auth. | |
| style_icon | No | Icon name for the style (e.g. 'sparkles'). | |
| description | No | Short description of the custom style. | |
| force_palette | No | Always apply palette constraining for this style. | |
| force_bg_removal | No | Always remove backgrounds for this style. | |
| llm_instructions | No | Instructions for the prompt-expansion LLM when this style is used. | |
| reference_images | No | Alias for style_reference_images on this tool; prefer style_reference_images and never provide both. | |
| reference_caption | No | Alias for style_reference_caption on this tool; prefer style_reference_caption and never provide both. | |
| apply_prompt_fixer | No | Let the API tidy prompts automatically for this style (default true). | |
| user_prompt_template | No | Prompt template for the style; must contain the {prompt} token. | |
| style_reference_images | No | Style-level reference image(s), base64, baked into the custom style (max 1 via the public API). | |
| reset_forced_dimensions | No | Clear previously forced dimensions; do not combine with min_width/min_height. | |
| style_reference_caption | No | Caption describing the style reference image(s). | |
| expanded_llm_instructions | No | Extended instructions for the prompt-expansion LLM. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds one meaningful behavioral detail: style-level references are 'baked into the custom style' and are distinct from per-inference reference_images. It does not disclose whether unspecified fields are preserved or reset, what side effects updating a style has, or any auth-related behavior. The annotations are also internally inconsistent because destructiveHint appears twice with conflicting values.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three short sentences with no filler. The core operation is front-loaded, and the important caveat about style-level references is stated clearly and compactly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 18 parameters, an output schema, and several mutual-exclusion constraints, the description is somewhat thin. It covers the endpoint and the reference distinction, and the schema compensates for parameter-level details, but it omits update semantics such as whether omitted fields are preserved and does not guide the agent on when to update versus create or delete a style.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already documents parameter meanings, defaults, and constraints such as min_width being required together with min_height. The description adds only the style-level versus per-inference reference distinction, which is useful but only partially extends beyond the schema text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Update a public RD Pro user style using /v2/styles/{style_id}', which names a specific verb, resource, and endpoint. This clearly identifies the operation as an update rather than a read or list operation, though it does not explicitly contrast with create_user_style or delete_user_style.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives useful guidance for choosing style_reference_images/style_reference_caption over per-inference reference_images, which helps with parameter selection. However, it does not explain when to prefer update_user_style over create_user_style or delete_user_style, nor does it mention preconditions or when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
- Changed
estimate_lowpoly_cost1 field changed- added
Input schema / properties / styleAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Low-Poly style id: rd_lowpoly__detailed (default, free-form shapes), rd_lowpoly__blocky (boxes only, tilted where needed, Minecraft-like), their Lite versions rd_lowpoly__detailed_lite / rd_lowpoly__blocky_lite (a lighter model: simpler results for much less, and Lite prices for everything done to the model later), or another style listed by get_lowpoly_pricing (each style lists its prices)." +}
- Changed
start_lowpoly_generate1 field changed- changed
Input schema / properties / style / descriptionPrevious value: -"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."New value: +"Low-Poly style id: rd_lowpoly__detailed (default, free-form shapes), rd_lowpoly__blocky (boxes only, tilted where needed, Minecraft-like), their Lite versions rd_lowpoly__detailed_lite / rd_lowpoly__blocky_lite (a lighter model: simpler results for much less, and Lite prices for everything done to the model later), or another style listed by get_lowpoly_pricing (each style lists its prices)."
1 tool update
- Changed
start_lowpoly_generate1 field changed- added
Input schema / properties / reference_modelsAdded value: +{ + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "asset_ids of your own finished Low-Poly models to build in: each is placed exactly (same shapes and textures) where the prompt puts it, or adapted. Images and models together: at most 4." +}
5 tool updates
- Changed
estimate_lowpoly_cost2 fields changed- changed
Input schema / properties / asset_id / descriptionPrevious value: -"Required for revise, animate and split."New value: +"Required for revise, animate, split and rerig." - changed
Input schema / properties / operation / descriptionPrevious value: -"generate, revise, animate or split."New value: +"generate, revise, animate, split or rerig."
- Changed
start_lowpoly_animate1 field changed- changed
Input schema / properties / mode / descriptionPrevious value: -"\"quality\" (default) or \"fast\" (quicker, simpler shapes). Same price."New value: +"Omit (auto) to let the service pick: quality, or fast for simple requests. \"quality\" or \"fast\" to choose. Same price."
- Changed
start_lowpoly_generate1 field changed- changed
Input schema / properties / mode / descriptionPrevious value: -"\"quality\" (default) or \"fast\" (quicker, simpler shapes). Same price."New value: +"Omit (auto) to let the service pick: quality, or fast for simple requests. \"quality\" or \"fast\" to choose. Same price."
- Added
start_lowpoly_rerig - Changed
start_lowpoly_revise1 field changed- changed
Input schema / properties / mode / descriptionPrevious value: -"\"quality\" (default) or \"fast\" (quicker, simpler shapes). Same price."New value: +"Omit (auto) to let the service pick: quality, or fast for simple requests. \"quality\" or \"fast\" to choose. Same price."
2 tool updates
- Changed
estimate_lowpoly_cost2 fields changed- changed
Input schema / properties / asset_id / descriptionPrevious value: -"Required for revise and animate."New value: +"Required for revise, animate and split." - changed
Input schema / properties / operation / descriptionPrevious value: -"generate, revise or animate."New value: +"generate, revise, animate or split."
- Added
start_lowpoly_split
2 tool updates
- Added
delete_lowpoly_animation - Changed
export_lowpoly_model1 field changed- changed
Input schema / properties / target / descriptionPrevious value: -"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 .glb and .bbmodel files include every animation."New value: +"godot, unity, unreal, web, blender (all .glb), blockbench (.bbmodel), obj (zip), minecraft (resource pack zip), atlas (png), turntable (png), axis_views (zip of 6 pixel-exact PNGs, one per axis direction), gif, sheet or mp4 (1024px video) (need an animation). The .glb and .bbmodel files include every animation."
1 tool update
- Added
recolor_lowpoly_model
2 tool updates
- Changed
export_lowpoly_model1 field changed- changed
Input schema / properties / animation / descriptionPrevious value: -"Animation name, required for the gif, sheet and mp4 targets."New value: +"Animation name for the gif, sheet and mp4 targets. Omit it for gif or sheet to get every animation in one zip."
- Changed
start_lowpoly_generate1 field changed- added
Input schema / properties / input_paletteAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Base64 image of a color palette; output colors are constrained to it." +}
1 tool update
- Changed
start_lowpoly_generate1 field changed- changed
Input schema / properties / style / descriptionPrevious value: -"Low-Poly style id: rd_lowpoly__detailed (default, free-form shapes), rd_lowpoly__blocky (boxes only, Minecraft-like), or another style listed by get_lowpoly_pricing."New value: +"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."
1 tool update
- Changed
export_lowpoly_model2 fields changed- changed
Input schema / properties / animation / descriptionPrevious value: -"Animation name, required for the gif and sheet targets."New value: +"Animation name, required for the gif, sheet and mp4 targets." - changed
Input schema / properties / target / descriptionPrevious value: -"godot, unity, unreal, web, blender (all .glb), blockbench (.bbmodel), obj (zip), minecraft (resource pack zip), atlas (png), turntable (png), gif or sheet (need an animation)."New value: +"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 .glb and .bbmodel files include every animation."
9 tool updates
- Added
estimate_lowpoly_cost - Added
export_lowpoly_model - Added
get_lowpoly_job - Added
get_lowpoly_model - Added
get_lowpoly_pricing - Added
list_lowpoly_models - Added
start_lowpoly_animate - Added
start_lowpoly_generate - Added
start_lowpoly_revise
3 tool updates
- Changed
create_inference3 fields changed- changed
Input schema / properties / frames_duration / descriptionPrevious value: -"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."New value: +"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. Ignored by rd_advanced_animation__rotate (always 8 views)." - changed
Input schema / properties / prompt / descriptionPrevious value: -"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' — the selected style handles all rendering. For standalone assets, state a flat background color that contrasts the subject (default 'on a plain white background') and pair with remove_bg=true; never write 'transparent background' (that is remove_bg's job), and never leave the background unstated (it drifts to drab dark gray). Scenes instead describe their real environment."New value: +"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' — the selected style handles all rendering. For standalone assets, state a flat background color that contrasts the subject (default 'on a plain white background') and pair with remove_bg=true; never write 'transparent background' (that is remove_bg's job), and never leave the background unstated (it drifts to drab dark gray). Scenes instead describe their real environment. For rd_advanced_animation__rotate the prompt is only an optional hint describing the uploaded subject — a few words or an empty string." - changed
Input schema / properties / return_spritesheet / descriptionPrevious value: -"For animation styles: return a PNG sprite sheet instead of a GIF."New value: +"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)."
- Changed
estimate_inference_cost3 fields changed- changed
Input schema / properties / frames_duration / descriptionPrevious value: -"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."New value: +"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. Ignored by rd_advanced_animation__rotate (always 8 views)." - changed
Input schema / properties / prompt / descriptionPrevious value: -"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' — the selected style handles all rendering. For standalone assets, state a flat background color that contrasts the subject (default 'on a plain white background') and pair with remove_bg=true; never write 'transparent background' (that is remove_bg's job), and never leave the background unstated (it drifts to drab dark gray). Scenes instead describe their real environment."New value: +"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' — the selected style handles all rendering. For standalone assets, state a flat background color that contrasts the subject (default 'on a plain white background') and pair with remove_bg=true; never write 'transparent background' (that is remove_bg's job), and never leave the background unstated (it drifts to drab dark gray). Scenes instead describe their real environment. For rd_advanced_animation__rotate the prompt is only an optional hint describing the uploaded subject — a few words or an empty string." - changed
Input schema / properties / return_spritesheet / descriptionPrevious value: -"For animation styles: return a PNG sprite sheet instead of a GIF."New value: +"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)."
- Changed
start_inference_job3 fields changed- changed
Input schema / properties / frames_duration / descriptionPrevious value: -"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."New value: +"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. Ignored by rd_advanced_animation__rotate (always 8 views)." - changed
Input schema / properties / prompt / descriptionPrevious value: -"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' — the selected style handles all rendering. For standalone assets, state a flat background color that contrasts the subject (default 'on a plain white background') and pair with remove_bg=true; never write 'transparent background' (that is remove_bg's job), and never leave the background unstated (it drifts to drab dark gray). Scenes instead describe their real environment."New value: +"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' — the selected style handles all rendering. For standalone assets, state a flat background color that contrasts the subject (default 'on a plain white background') and pair with remove_bg=true; never write 'transparent background' (that is remove_bg's job), and never leave the background unstated (it drifts to drab dark gray). Scenes instead describe their real environment. For rd_advanced_animation__rotate the prompt is only an optional hint describing the uploaded subject — a few words or an empty string." - changed
Input schema / properties / return_spritesheet / descriptionPrevious value: -"For animation styles: return a PNG sprite sheet instead of a GIF."New value: +"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)."
3 tool updates
- Changed
create_inference6 fields changed- changed
Input schema / properties / frames_duration / descriptionPrevious value: -"Animation frame count for animation styles: 4, 6, 8, 10, 12, or 16."New value: +"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." - changed
Input schema / properties / input_image / descriptionPrevious value: -"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."New value: +"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 display copy (e.g. a 96px sprite exported at 4x = 384px) exceeds style ranges and gets rejected — downscale to the true pixel grid first. For advanced animations the frame's dimensions must equal width/height, and sprites whose opaque pixels touch the canvas edge animate badly (pad onto a larger transparent canvas first, e.g. 48x48 content onto 64x64)." - changed
Input schema / properties / num_images / descriptionPrevious value: -"How many images to generate in one batch. Style-specific maximums apply."New value: +"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/grid image unless a sheet IS the deliverable). Style-specific maximums apply." - changed
Input schema / properties / prompt / descriptionPrevious value: -"Describe the SUBJECT only (e.g. 'a knight resting by a campfire'). Never write 'pixel art' — the selected style handles all rendering."New value: +"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' — the selected style handles all rendering. For standalone assets, state a flat background color that contrasts the subject (default 'on a plain white background') and pair with remove_bg=true; never write 'transparent background' (that is remove_bg's job), and never leave the background unstated (it drifts to drab dark gray). Scenes instead describe their real environment." - changed
Input schema / properties / remove_bg / descriptionPrevious value: -"Remove the background for transparent output."New value: +"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 flat contrasting backdrops. Animations inherit the start frame's transparency automatically." - changed
Input schema / properties / width / descriptionPrevious value: -"Output width in pixels. Each style enforces its own limits; check list_available_styles or get_style_usage."New value: +"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 retro or 96-128 showcase; tiles 16-32; portraits 96-128; full scenes 256 (RD Pro's max; 16:9 scenes = 256x144 — pixel art integer-upscales losslessly)."
- Changed
estimate_inference_cost5 fields changed- changed
Input schema / properties / frames_duration / descriptionPrevious value: -"Animation frame count for animation styles: 4, 6, 8, 10, 12, or 16."New value: +"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." - changed
Input schema / properties / input_image / descriptionPrevious value: -"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."New value: +"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 display copy (e.g. a 96px sprite exported at 4x = 384px) exceeds style ranges and gets rejected — downscale to the true pixel grid first. For advanced animations the frame's dimensions must equal width/height, and sprites whose opaque pixels touch the canvas edge animate badly (pad onto a larger transparent canvas first, e.g. 48x48 content onto 64x64)." - changed
Input schema / properties / num_images / descriptionPrevious value: -"How many images to generate in one batch. Style-specific maximums apply."New value: +"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/grid image unless a sheet IS the deliverable). Style-specific maximums apply." - changed
Input schema / properties / prompt / descriptionPrevious value: -"Describe the SUBJECT only (e.g. 'a knight resting by a campfire'). Never write 'pixel art' — the selected style handles all rendering."New value: +"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' — the selected style handles all rendering. For standalone assets, state a flat background color that contrasts the subject (default 'on a plain white background') and pair with remove_bg=true; never write 'transparent background' (that is remove_bg's job), and never leave the background unstated (it drifts to drab dark gray). Scenes instead describe their real environment." - changed
Input schema / properties / width / descriptionPrevious value: -"Output width in pixels. Each style enforces its own limits; check list_available_styles or get_style_usage."New value: +"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 retro or 96-128 showcase; tiles 16-32; portraits 96-128; full scenes 256 (RD Pro's max; 16:9 scenes = 256x144 — pixel art integer-upscales losslessly)."
- Changed
start_inference_job6 fields changed- changed
Input schema / properties / frames_duration / descriptionPrevious value: -"Animation frame count for animation styles: 4, 6, 8, 10, 12, or 16."New value: +"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." - changed
Input schema / properties / input_image / descriptionPrevious value: -"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."New value: +"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 display copy (e.g. a 96px sprite exported at 4x = 384px) exceeds style ranges and gets rejected — downscale to the true pixel grid first. For advanced animations the frame's dimensions must equal width/height, and sprites whose opaque pixels touch the canvas edge animate badly (pad onto a larger transparent canvas first, e.g. 48x48 content onto 64x64)." - changed
Input schema / properties / num_images / descriptionPrevious value: -"How many images to generate in one batch. Style-specific maximums apply."New value: +"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/grid image unless a sheet IS the deliverable). Style-specific maximums apply." - changed
Input schema / properties / prompt / descriptionPrevious value: -"Describe the SUBJECT only (e.g. 'a knight resting by a campfire'). Never write 'pixel art' — the selected style handles all rendering."New value: +"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' — the selected style handles all rendering. For standalone assets, state a flat background color that contrasts the subject (default 'on a plain white background') and pair with remove_bg=true; never write 'transparent background' (that is remove_bg's job), and never leave the background unstated (it drifts to drab dark gray). Scenes instead describe their real environment." - changed
Input schema / properties / remove_bg / descriptionPrevious value: -"Remove the background for transparent output."New value: +"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 flat contrasting backdrops. Animations inherit the start frame's transparency automatically." - changed
Input schema / properties / width / descriptionPrevious value: -"Output width in pixels. Each style enforces its own limits; check list_available_styles or get_style_usage."New value: +"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 retro or 96-128 showcase; tiles 16-32; portraits 96-128; full scenes 256 (RD Pro's max; 16:9 scenes = 256x144 — pixel art integer-upscales losslessly)."
2 tool updates
- Changed
estimate_edit_tool_cost1 field changed- changed
Input schema / properties / dither_strength / descriptionPrevious value: -"color_reducer/palette_converter: dithering strength."New value: +"color_reducer/palette_converter: dithering strength, 0-10 (0 disables, default 5)."
- Changed
run_edit_tool1 field changed- changed
Input schema / properties / dither_strength / descriptionPrevious value: -"color_reducer/palette_converter: dithering strength."New value: +"color_reducer/palette_converter: dithering strength, 0-10 (0 disables, default 5)."
1 tool update
- Added
get_inference_result
1 tool update
- Added
list_inference_jobs
1 tool update
- Changed
fix_pixel_art6 fields changed- added
Input schema / properties / image_urlAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "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." +} - added
Input schema / properties / input_image / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - added
Input schema / properties / input_image / defaultAdded value: +null - changed
Input schema / properties / input_image / descriptionPrevious value: -"Base64 PNG or JPEG to reconstruct at its native pixel grid. Raw base64 or a data URL; minimum 16x16, maximum 4 megapixels, and the complete request JSON must stay within 900,000 bytes."New value: +"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 JSON must stay within 900,000 bytes." - removed
Input schema / properties / input_image / typeRemoved value: -"string" - removed
Input schema / requiredRemoved value: -[ - "input_image" -]
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables brand visibility monitoring across major AI platforms like ChatGPT, Claude, Gemini, and Perplexity. It allows users to track visibility scores, analyze competitor data, and receive actionable insights to improve AI-generated brand recommendations.1622 npm1MIT
- AlicenseCqualityAmaintenanceCompetitor Monitor AI - MCP server providing AI-powered tools and automation by MEOK AI Labs119 npm37 PyPIMIT
- AlicenseAqualityCmaintenanceRevnuvo Company Intelligence tells AI agents what changed at a company, with evidence. It observes company websites, technologies, and DNS over time and returns timestamped, confidence-aware changes, signals, and monitoring.9MIT

industrylens-mcpofficial
AlicenseNot gradedqualityBmaintenanceBrowse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.