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. |
| 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. |
| 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. |
| 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. |
| 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. |
| 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. |
| 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 | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/rabbitcannon/pixellab-forge-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server