Skip to main content
Glama

Generate Pixel Art

create_inference

Generate images using the public /v1/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; 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).

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.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
seedNoSeed for reproducible results; reuse the same seed to iterate on one composition.
widthYesOutput 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).
heightYesOutput height in pixels. Each style enforces its own limits; check list_available_styles or get_style_usage.
promptYesDescribe 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.
tile_xNoMake the result tile seamlessly on the horizontal axis.
tile_yNoMake the result tile seamlessly on the vertical axis.
strengthNoHow strongly to change input_image, 0-1 (default 0.75). Lower values keep more of the original.
remove_bgNoRemove 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_imagesNoHow 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_keyNoRetroDiffusion API key (rdpk-...) for this call only; overrides session or header auth.
input_imageNoBase64 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_promptNoSecondary prompt for styles that use one (e.g. the transition texture in advanced tilesets).
prompt_styleYesStyle id from list_available_styles (e.g. 'rd_fast__default', 'rd_pro__isometric', or a custom 'user__...' style).
input_paletteNoBase64 image of a color palette; output colors are constrained to it.
upload_outputsNoHost outputs and return URLs in output_urls (recommended for MCP clients) instead of only base64 payloads.
frames_durationNoAnimation 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.
timeout_secondsNoRead-timeout override in seconds for this call; increase for animations or large batches.
reference_imagesNoExtra per-inference guidance images (base64), only for styles where supports_reference_images is true. Not for defining custom styles.
extra_input_imageNoSecond base64 input image for styles that use one (e.g. the second texture in rd_tile__tileset_advanced).
return_pre_paletteNoAlso return the render from before palette constraints were applied.
return_spritesheetNoFor animation styles: return a PNG sprite sheet instead of a GIF.
return_non_bg_removedNoAlso return the render from before background removal was applied.
upscale_output_factorNoInteger upscale factor for the output image; 1 returns the native pixel size.
bypass_prompt_expansionNoSkip the automatic LLM prompt enrichment and use the prompt verbatim.
include_downloadable_dataNoInclude extra structured assets when available (e.g. tileset atlas JSON, animation frame data).

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses operational behavior beyond the annotations: it warns that the response excludes raw base64 payloads, explains that style ids are opaque and capabilities should never be inferred from prefixes, and notes that failed animations auto-refund and are worth one retry. This adds context the annotations (readOnlyHint: false, openWorldHint: true) do not provide, 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but well-structured: it opens with the core purpose, then a workflow-rules paragraph, and a final paragraph on parameter usage. Every sentence contributes operational knowledge for a complex 25-parameter tool. While it could be tightened (e.g., the background guidance repeats in the prompt schema), the complexity justifies the length, so a 4 is appropriate.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the output schema exists and the description covers alternatives (start_inference_job, image_edit, create_user_style), style selection, parameter idiosyncrasies, and edge cases like tileset padding, the definition is essentially complete. An agent has enough to call this tool correctly in almost all scenarios, including handling animations, variants, and input image constraints.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 per the rubric. However, the description adds significant semantic depth: it gives genre-native size recommendations (Minecraft 16, items 32-64, etc.), explains how to handle backgrounds in prompts ('on a plain white background' paired with remove_bg=true), and describes the input_image downscaling requirement. This goes well beyond the schema field descriptions, justifying a 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Generate images using the public /v1/inferences endpoint' and the title 'Generate Pixel Art' makes the resource and action explicit. It also differentiates itself from siblings like start_inference_job (which it defers to for animations) and lists alternatives like image_edit for variant generation, so an agent can clearly tell what this tool does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides extensive when-to-use and when-not-to-use guidance: it states to prefer start_inference_job + get_inference_job for animations, gives rules for N distinct items vs variants (use generate once then image_edit), and clarifies that converting an existing image uses rd_pro__pixelate with input_image rather than reference_images. These explicit alternatives and conditions leave no ambiguity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A4.1/5.0
Disambiguation5/5

Each tool targets a distinct operation: authentication, inference (sync/async/edit), style management, listing, and utility. Even similar tools like create_inference and start_inference_job are clearly differentiated by synchronous vs async execution.

Naming Consistency5/5

All tool names follow the same verb_noun snake_case pattern (e.g., create_inference, get_balance, list_available_styles). No mixed conventions or inconsistent verb forms.

Tool Count4/5

With 19 tools, the count is slightly above the typical 3-15 range, but each tool serves a specific and necessary function for pixel art generation, editing, and management, so it remains well-scoped.

Completeness5/5

The tool set covers the full workflow: authentication, cost estimation, synchronous and async generation, style CRUD, edit tools, pixel fixing, and system status. No obvious gaps for the intended domain.