PixelLab Forge MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PIXELLAB_API_KEY | Yes | Your PixelLab API key — get one at pixellab.ai/account |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {} |
| prompts | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_balanceA | Get your current PixelLab credit balance |
| get_job_statusA | Check the status of a background job and retrieve its results when complete. All creation tools return a job_id immediately — use this tool to poll for completion and get the generated images/data. |
| list_pending_jobsA | List background jobs that were started but haven't completed yet. Use this to recover jobs after a disconnection or timeout. |
| list_job_historyA | List recent job history (completed, failed, and pending). Jobs are pruned after 24 hours. |
| generate_imageA | Generate pixel art from a text description. PRIMARY generation tool — use this for standalone sprites, icons, and one-off images. 16-512px. Variants by size: ≤42px → 64, 43-85px → 16, 86-170px → 4, >170px → 1. For style-matched sets use generate_with_style. For game characters with directional views use create_character_4dir/8dir instead. For UI elements use generate_ui. |
| generate_with_styleA | Generate pixel art matching a specific visual style from 1-4 style reference images. Use this when you need consistent style across multiple assets. SQUARE images only, 16-512px. Auto-pads to nearest bucket (16/32/64/128/256/512). Variants: 16-32px → 64, 33-64px → 16, 65-128px → 4, 129-512px → 1. |
| generate_uiA | Generate pixel art UI elements for games — buttons, panels, health bars, inventory slots, icons, frames. Use this instead of generate_image when creating interface/HUD elements. Min 16x16, max 512x512. |
| create_image_pixfluxA | Generate pixel art using the legacy Pixflux engine. 32-400px. Prefer generate_image (v2) for most tasks — use Pixflux only when you need fine-grained control over outline/shading/detail style params, view/direction, or coverage_percentage. |
| create_image_bitforgeA | Generate pixel art using the legacy Bitforge engine. Max 200x200. Prefer generate_image (v2) for most tasks — use Bitforge only when you need inline skeleton keypoints, combined inpainting+generation, or style_image influence control in a single call. |
| create_image_pixenA | Generate pixel art using the Pixen engine. Width/height 16-768px each but max area 512x512, and both must be divisible by 4. Supports outline/detail style hints, view/direction, and optional prompt enhancement. A modern alternative to generate_image with finer outline/detail control. |
| create_image_pixflux_backgroundA | Generate a seamless/background image using the Pixflux engine. Same parameters as create_image_pixflux but tuned for backgrounds and environments rather than isolated sprites. |
| create_image_pro_flashA | Generate one native pixel-art image with the Pro Flash engine, optionally guided by a style image. Runs as a background job; the completed result carries the PNG, an image_url and a durable source_image_id — keep that ID to later build a Pro Flash character or object from the same image without paying for it again (create_character_pro_flash / create_object_pro_flash). About 5 generation units; call get_pro_flash_cost for current pricing and get_pro_flash_capabilities for the exact native sizes. |
| edit_image_pro_flashA | Edit one image at a supported native size with the Pro Flash engine, using either a text instruction (method 'text') or a reference image (method 'reference'). The source canvas never grows or resizes, and reference art must fit inside it. Runs as a background job. Call get_pro_flash_capabilities for the exact native shapes. |
| inpaint_image_pro_flashA | Pro Flash inpainting: replace only the WHITE pixels of mask_image, preserving unmasked RGBA exactly. Source and mask must share identical supported native dimensions; mask RGB must be pure black/white (alpha is ignored) and may not be empty. output_method controls whether you get the full composite or only the changed pixels (transparent elsewhere). An optional context_image requires its bounding_box in the source. Runs as a background job. |
| create_character_pro_flashA | Create a saved character with the Pro Flash engine in one call: generates a south-facing image from the description, then produces eight v3 rotation views. To skip the (paid) first image, pass source_image_id from an earlier create_image_pro_flash result, or upload first_frame directly — you then pay only for rotations. Pixels are preserved and padded with transparency to the square v3 canvas. Returns a job plus character_id; poll get_job_status for itemized billing_stages, then get_character. |
| create_object_pro_flashA | Create a saved object with the Pro Flash engine in one call: generates a south-facing image from the description and, with n_directions 8, adds v3 rotation views (n_directions 1 = single image). Pass source_image_id or first_frame to reuse an existing image: one-direction finalization is then free and eight views charge only rotations. Objects have no skeleton. Returns a job plus object_id; poll get_job_status for billing_stages, then get_object. |
| get_pro_flash_capabilitiesA | List the Pro Flash engine's native size presets, beta custom-dimension rules, and supported controls. Free. Check this before calling create/edit/inpaint_image_pro_flash with a non-standard size. |
| get_pro_flash_costA | Estimate the provisional cost of a Pro Flash operation in generation units, split into the first-image component and the v3 rotation component. Free. Actual billed usage is reported when the job completes. |
| image_to_pixelartA | Convert a photograph or regular image into pixel art. Input 16-1280px, output 16-320px. Recommended: output = 1/4 of input size. |
| image_to_pixelart_proA | Convert a photograph or regular image into pixel art using the Pro engine. The model derives output size from the input — you only supply the source image and optional style instructions. Higher quality than image_to_pixelart but less manual size control. |
| unzoomA | Recover native-resolution pixel art from an upscaled image (e.g. a 32x32 sprite saved at 512x512). Detects the underlying pixel grid and downsamples back onto it, handling slightly uneven grids from lossy resizes. Input min 256x256, max area 2048x2048. The result is OPAQUE (transparency is composited onto white) — run remove_background afterwards if you need it cut out again. Use before passing user-supplied art as a style/reference image, or before correct_pixelart. |
| correct_pixelartA | Clean up existing pixel art WITHOUT changing its size: sharpens edges, removes stray/anti-aliased pixels, and tightens the palette while keeping the sprite on its pixel grid. Good for art that went through a lossy pipeline, hand-drawn art, or nearly-on-grid output from other tools. Pass several same-size frames together (an animation, or a character's directions) so they stay consistent. Max area 1024x1024; transparency is preserved. If the image is upscaled, run unzoom first. |
| reduce_colorsA | Quantize one or more images onto a smaller SHARED palette, optionally with ordered dithering. Pass an animation's frames or a character's eight directions in one call so they come back sharing one palette instead of drifting apart. Choose the palette by omitting both options (auto-detect size), num_colors (exact count), or palette_image (reuse an existing image's colors, max 256). Total pixel budget across all frames is 512x512 (e.g. sixteen 64x64 frames). |
| resize_imageA | AI-powered resize of a pixel art image to a different resolution while preserving quality. Source and target 16-200px. Best in steps: max 50% shrink or 2x grow per operation. |
| remove_backgroundC | Remove the background from a pixel art image (max 400x400). |
| edit_animationA | Edit an existing animation sequence (2-16 frames) using a text description. 16-256px. Use this to modify animations you already have — to create new animations from scratch use animate_with_text_v2 or animate_character. |
| interpolate_framesA | Generate intermediate animation frames between a start and end keyframe. 16-128px. Use this to smooth out animations by adding in-between frames. For full animation creation from a single image use animate_with_text_v2. |
| transfer_outfitA | Transfer an outfit/costume from a reference image onto animation frames (2-16 frames, 32-256px). Use this to reskin an existing animation with a different character appearance. |
| animate_with_skeletonA | Create animation using skeleton keypoints for precise joint/pose control. Fixed sizes only: 16, 32, 64, 128, or 256px. Use this when you need exact body positioning per frame. For simpler text-described animation use animate_with_text_v2. |
| animate_with_textA | Legacy animation from text description + reference image. FIXED 64x64 only. Prefer animate_with_text_v2 (any size 32-256px) or animate_with_text_v3 (keyframe-based) for new work. Use animate_character if you already have a saved character ID. |
| animate_with_text_v2A | RECOMMENDED animation tool — animate a character image with a text-described action. Provide a reference image + action text. 32-256px. Frames by size: 32-64px → 16, 128-256px → 4. Use this when you have a character image but NOT a saved character ID. If you have a character ID, use animate_character instead. |
| animate_with_text_v3A | Keyframe-based animation — provide a first frame and optional last frame, get interpolated animation. Best for precise start/end control. 4-16 frames, max 256px. Pixel budget: W×H×frames ≤ 524,288. Use animate_with_text_v2 instead if you just want to describe an action. |
| animate_pixminimaxA | Beta (tier 1+ subscription): animate a single frame from a text description of the MOTION using the PixMiniMax engine (MiniMax H3). Best for fluid, longer clips — 4 to 40 frames (multiples of 4) at up to 256x256. Result holds frame_count + 1 images: index 0 is your unchanged input frame. Optional last_frame makes it a keyframe interpolation. Priced by clip length and size (about 1-12 generations); sizes just above 64 or 128px are cheaper than just below. Typically takes 1-5 minutes. Use animate_with_text_v3 for the standard engine. |
| estimate_skeletonB | Estimate skeleton keypoints from a character image. |
| generate_8_rotationsA | Generate 8 directional views from an existing image, style, or concept art. 32-168px. Does NOT create a persistent character — for that use create_character_8dir instead. Methods: rotate_character (from existing sprite), create_with_style (from description), create_from_concept (from concept art). |
| generate_8_rotations_v3A | Generate 8 directional rotations from a single source frame using the v3 model. Simpler than generate_8_rotations — just provide one image and the model produces all 8 views. Does NOT create a persistent character; use create_character_8dir for that. |
| rotateA | Rotate a single character sprite from one view/direction to another. Fixed sizes only: 16, 32, 64, or 128px. For generating all 8 directions at once use generate_8_rotations or create_character_8dir instead. |
| inpaint_v3A | Edit a specific region of a pixel art image using a mask. White mask = generate, black mask = preserve. Image 32-512px, optional context image up to 1024x1024. Preferred over legacy inpaint (which caps at 200px). |
| inpaintA | Legacy inpainting using the Bitforge engine. Max 200x200. Prefer inpaint_v3 (up to 512px, better quality). Only use this if you need Bitforge-specific params like style controls or oblique projection during inpainting. |
| edit_imagesA | Batch-edit 1-16 images consistently using text or a reference image. Use this for editing animation frames or sprite sets uniformly. Output 32-512px, input max 256px each. Max frames by output size: 32-64px → 16, 65-80px → 9, 81-128px → 4, 129-512px → 1. For single image edits use edit_image instead. |
| edit_imageA | Edit a single image globally using a text description (e.g. 'add a hat', 'change colors'). 16-400px. For editing a specific REGION use inpaint_v3 with a mask instead. For batch-editing multiple images at once use edit_images. |
| edit_image_pixenA | Edit an existing pixel art image with a text instruction on the Pixen model — pose, composition and pixel style are preserved and only what you ask for changes. Source max 256px per side (crop, don't rescale). Target canvas defaults to the source size; area 16x16 to 256x256 (a wide-but-short 128x512 is fine). The model re-renders at the target size rather than rescaling. Costs 1 generation. Prefer this over edit_image for Pixen-generated art. |
| create_tilesetA | Create a TOP-DOWN tileset with base terrain, elevated terrain, and transitions (16x16 or 32x32 tiles). Outputs 16-23 seamless tiles. Use this for RPG/strategy maps. For platformer/sidescroller games use create_tileset_sidescroller. For isometric games use create_isometric_tile or create_tiles_pro. |
| get_tilesetB | Get a previously created tileset by ID. |
| list_tilesetsB | List your previously created tilesets with pagination. |
| delete_tilesetA | Delete a top-down tileset by ID. For sidescroller tilesets use delete_tileset_sidescroller. |
| create_tileset_sidescrollerA | Create a SIDESCROLLER/PLATFORMER tileset with terrain and transitions (16x16 or 32x32 tiles). Side-view perspective only. Use this for platformer games. For top-down RPG maps use create_tileset instead. |
| get_tileset_sidescrollerA | Get a previously created sidescroller tileset by ID. For top-down tilesets use get_tileset. |
| list_tilesets_sidescrollerA | List your sidescroller tilesets with pagination. For top-down tilesets use list_tilesets. |
| delete_tileset_sidescrollerA | Delete a sidescroller tileset by ID. For top-down tilesets use delete_tileset. |
| create_isometric_tileA | Create an isometric tile. Size 16x16 to 64x64 (best quality >24px). For other tile types (hex, octagon, square_topdown) use create_tiles_pro instead. |
| get_isometric_tileA | Get a previously created isometric tile by ID. |
| list_isometric_tilesB | List your previously created isometric tiles with pagination. |
| delete_isometric_tileB | Delete an isometric tile by ID. |
| create_tiles_proA | Create professional tiles. Types: hex, hex_pointy, isometric, octagon, square_topdown. Size 16-128px (32px recommended). |
| get_tiles_proB | Get previously created pro tiles by ID. |
| list_tiles_proB | List your previously created pro tiles with pagination. |
| delete_tiles_proB | Delete a pro tile by ID. |
| create_map_objectA | Generate a single-view map object (tree, rock, chest, etc.) with transparent background. Use this for environment/prop assets that don't need multiple directions. For objects with 4 directional views use create_object_4dir. For characters use create_character_4dir/8dir. |
| get_map_objectA | Get a map object's status and metadata by ID (from create_map_object). |
| create_character_4dirA | Create a PERSISTENT game character with 4 directional views (N/S/E/W). 32-168px. Returns a character_id that can be reused with animate_character for animations. Use this for game characters that need multiple directions and animations. For 8 directions use create_character_8dir. For one-off sprites without persistence use generate_image. |
| create_character_8dirA | Create a PERSISTENT game character with 8 directional views (N/NE/E/SE/S/SW/W/NW). 32-168px. Returns a character_id for use with animate_character. Use this for top-down or isometric games needing diagonal directions. For 4-direction games use create_character_4dir. |
| animate_characterB | Animate a SAVED character by ID using a preset animation template (walk, run, attack, etc). Requires a character_id from create_character_4dir/8dir. Uses the character's existing size. If you only have an image (not a saved character), use animate_with_text_v2 instead. |
| create_character_v3A | Create a character using the v3 model. Two modes: provide a south-facing reference_image to rotate that exact character, or omit it to generate from scratch via description. Output 32-256px (advisory in reference mode). Returns a character_id. The newest character generator — prefer over create_character_4dir/8dir for best quality. |
| create_character_proB | Create a character or object using the Pro engine. Output 32-168px. Methods: create_with_style (text-driven, optional style reference_image), create_from_concept (from a concept_image up to 1024x1024), rotate_character. Returns a character_id. |
| create_character_stateA | Create a new state/variant of an existing character by editing it with a text description (e.g. 'wearing armor', 'damaged'). Requires a source character_id. Optionally snap the edit to the source character's color palette for visual consistency. |
| create_character_animationA | Animate a SAVED character by ID with flexible modes. mode='template' uses a skeleton-based template_animation_id; mode='v3' interpolates frames from a custom action_description (4-16 frames); mode='pro' is the pro animator. More flexible than animate_character, which is template-only. Requires a character_id. |
| list_charactersA | List your created characters with pagination. |
| get_characterA | Get a character by ID including all directional views and animations. |
| delete_characterC | Delete a character by ID. |
| download_character_zipA | Download a character as a ZIP file with all sprites and metadata. Saves it to the pixellab-forge-output directory and returns the file path. |
| download_character_spritesheetA | Export a character as a single spritesheet: a small ZIP holding one uniform-grid PNG (row 0 = rotations, then one row per animation-direction, columns = frames) plus a layout JSON describing cell size and which animation/direction each row holds. Frames are centred in equal cells and never rescaled. Saves to pixellab-forge-output and returns the file path. Use download_character_zip instead for individual frame PNGs. Returns an error while the character is still generating (HTTP 423). |
| update_character_tagsA | Update tags on a character (max 20 tags, 50 chars each). |
| set_character_portraitA | Attach a bust portrait to a saved character (free — no generation runs). The portrait is the starting frame for talking animations: vocal_animation generates mouth positions from it. Overwrites any existing portrait. To generate a portrait from a full-body sprite first, use portrait_character_pro with direction='character_to_portrait'. |
| delete_character_animationsA | Delete animations from a character. Omit all optional filters to delete every animation; pass animation_type and/or animation_group_id (both shown by get_character) to narrow it, and direction to remove a single direction only. |
| create_object_1dirA | Create a persistent single-direction object. Square size 32-256px (default 64). view 'top-down' or 'sidescroller'. Optionally pass style_images for visual reference. Larger sizes may yield multiple objects (use item_descriptions to label each). For an object rotatable to 8 directions use create_object_8dir. For single-view non-persistent props use create_map_object. |
| create_object_8dirA | Create a persistent object with 8 directional views. Square size 32-256px (default 64). view 'low top-down', 'high top-down', or 'side'. Provide reference_image to rotate that exact object, OR style_image to generate a new object in that style (mutually exclusive). For a single-direction object use create_object_1dir. |
| animate_objectA | Animate a SAVED object by ID. mode='v3' (default, higher quality, supports custom_start_frame/end_frame interpolation) or 'pro'. Do NOT pass directions for 1-direction objects; for 8-direction objects pass the directions to animate. Requires an object_id from create_object_1dir/8dir. |
| create_object_stateB | Create a new state/variant of an existing object by editing it with a text description (e.g. 'open chest', 'broken'). Requires a source object_id. |
| select_object_framesB | From an object that generated multiple candidate frames, keep specific frames (by 0-based index) as completed individual objects. Optionally tag all newly-created objects. |
| dismiss_object_reviewB | Dismiss the review state on an object, accepting it as-is without selecting specific frames. Takes no body beyond the object_id. |
| list_objectsC | List your created objects with pagination. |
| get_objectC | Get an object by ID. |
| delete_objectC | Delete an object by ID. |
| download_object_spritesheetA | Export an object as a single spritesheet: a small ZIP holding one uniform-grid PNG (row 0 = rotations, then one row per animation-direction, columns = frames) plus a layout JSON describing cell size and which animation/direction each row holds. Frames are centred in equal cells and never rescaled. Saves to pixellab-forge-output and returns the file path. Only works for objects you created; errors while rotations are still generating. |
| update_object_tagsC | Update tags on an object. |
| delete_object_animationsA | Delete animations from an object. Omit all optional filters to delete every animation; pass animation_type and/or animation_group_id (both shown by get_object) to narrow it, and direction to remove a single direction only. |
| create_ui_assetA | Generate a shape-based pixel-art UI panel (Pro) from a text description — a persistent, saved UI asset (distinct from generate_ui, which is a one-shot generator). Returns a job_id and a ui_asset_id immediately; poll get_job_status or get_ui_asset until ready. Optionally scaffold the panel from named UI elements or a custom shape template. |
| list_ui_assetsA | List your saved UI panels (newest first), with pagination. Includes ghost rows for panels still generating. |
| get_ui_assetB | Get a UI panel's details by ID. Reports progress while the panel is still generating. |
| delete_ui_assetA | Permanently delete a UI panel and its backing image files. |
| generate_font_proA | Generate a styled pixel-art font (Pro) from a text description. Produces a glyph atlas plus a ready-to-use TrueType (.ttf) font. Returns a job_id immediately — poll get_job_status for the result. |
| get_font_pro_jobA | Get the status and result of a generate_font_pro job by its job_id. Use this rather than get_job_status for font-pro jobs — they are served from a dedicated endpoint. |
| portrait_character_proA | Convert between a bust portrait and a full-body character sprite (Pro). direction='portrait_to_character' takes a portrait in and returns a full-body sprite; 'character_to_portrait' does the reverse. Returns a job_id immediately — poll get_job_status for the result. |
| get_portrait_character_pro_jobA | Get the status and result of a portrait_character_pro job by its job_id. Use this rather than get_job_status for portrait↔character jobs — they are served from a dedicated endpoint. |
| vocal_animationA | Generate the set of mouth positions ('visemes') that lets a portrait be lip-synced to any line of text. This is the only talking-animation step that costs generations — pay it once per expression, then talking_gif and lip_sync are free and unlimited. Provide either character_id (uses the character's stored portrait, set via set_character_portrait, and saves the result onto it) or an inline portrait image (max 256x256, result returned inline). Returns a job_id — poll get_vocal_animation_job. |
| get_vocal_animation_jobA | Get the status and result of a vocal_animation job by its job_id. Mouth positions stream in as they are produced (completed_visemes fills up while the job runs). On completion, a character_id job has saved the set onto the character; a portrait job returns the frames in visemes. |
| talking_gifA | Turn a line of text into an animated GIF of a character speaking it. Free — spends no generations; it only re-orders mouth positions already produced by vocal_animation. Provide either character_id (with mouth positions stored on the character) or supply visemes directly as returned by get_vocal_animation_job. |
| lip_syncA | Get the frame-by-frame lip-sync plan for a line of text — which mouth position to show, for how long, and how far through the text it lands. Free, and nothing is rendered: use this instead of talking_gif when animating in a game engine and driving the mouth yourself. Provide character_id (response also carries the spritesheet URL and row to read) or a bare viseme_count preset. |
| enhance_character_promptA | Expand a short character description into a richer, more detailed prompt for create_character_v3. Returns enhanced text — does not generate an image. Use this to preview/refine a prompt before generating. |
| enhance_animation_promptA | Expand a short action description into a richer motion prompt for animate_with_text_v3. Provide the first frame (and optional last frame for interpolation). Returns enhanced text — does not generate frames. |
| enhance_pixen_promptA | Expand a short image description into a richer prompt for create_image_pixen. Returns enhanced text — does not generate an image. |
| read_imageA | Read a previously saved image from disk and return it as a Base64Image object that can be passed directly to other tools (e.g. edit_image, remove_background, image_to_pixelart). Use the file paths shown in earlier tool responses. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| pf:help | Overview of PixelLab Forge tools and how to use them |
| pf:character | Create a pixel art character with directional views and optional animation |
| pf:tileset | Create a tileset for a top-down or platformer game |
| pf:tiles | Create hex, isometric, or octagon tiles for strategy or isometric games |
| pf:sprite | Generate a pixel art sprite from a description |
| pf:ui | Generate pixel art UI elements for a game |
| pf:animate | Animate an existing sprite or character image |
| pf:style | Generate new art matching the style of existing sprites |
| pf:edit | Edit or modify an existing pixel art image |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 103 tools
Many tools have near-overlapping purposes: generate_image, create_image_bitforge, create_image_pixflux, create_image_pixen, and create_image_pro_flash all generate pixel art, and character/animation creation is similarly fragmented across 4dir/8dir/v3/pro/pro_flash and v2/v3 text animation variants. The descriptions try to steer selection, but the boundaries are still unclear enough that an agent will frequently face ambiguous choices.
Most names follow a readable verb_noun snake_case pattern, but consistency breaks down with irregular version/engine suffixes like v2, v3, pro, pro_flash, bitforge, pixflux, and pixen pasted onto similar operations. The broader pattern is recognizable, but tool-to-tool naming is not predictable enough to guess the right variant.
103 tools is an extreme count for a single MCP server, driven largely by multiple overlapping engine generations and legacy alternatives for the same core capabilities. This is well beyond a manageable scope and will impose a heavy navigation burden on agents.
Domain coverage is very strong: characters, objects, tilesets, UI assets, animations, images, jobs, and talking portraits all have solid create/read/update/delete and conversion workflows. Minor gaps exist—fonts have generate/get but no list/delete, and map objects lack full lifecycle management—but no critical dead ends block the main pixel-art generation workflow.