← WebMCP Directory

Tool tree

pixelforge-studio.himomohi.workers.dev

Media & PersonalTools verified
Website
A professional browser pixel-art editor for drawing, frame animation, palettes, sprite sheets, GIF export, and WebMCP automation.
Explore capabilities
    get_project_stateAnswer

    Read a concise project summary. Set includePixels only when exact cel data is required.

    View tool JSON
    {
      "name": "get_project_state",
      "kind": "answer",
      "impl": "imperative",
      "description": "Read a concise project summary. Set includePixels only when exact cel data is required.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "includePixels": {
            "type": "boolean",
            "description": "Include every cel pixel. This can be a large response."
          }
        }
      }
    }
    list_projectsAnswer

    List every browser-local PixelForge project with its stable id, name, dimensions, frame count, layer count, and last update time.

    View tool JSON
    {
      "name": "list_projects",
      "kind": "answer",
      "impl": "imperative",
      "description": "List every browser-local PixelForge project with its stable id, name, dimensions, frame count, layer count, and last update time.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {}
      }
    }
    select_projectAction

    Save the current project and switch to another browser-local project by stable id.

    View tool JSON
    {
      "name": "select_project",
      "kind": "act",
      "impl": "imperative",
      "description": "Save the current project and switch to another browser-local project by stable id.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "projectId"
        ],
        "properties": {
          "projectId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 160
          }
        }
      }
    }
    duplicate_projectAction

    Create and select a new browser-local copy without changing the original project.

    View tool JSON
    {
      "name": "duplicate_project",
      "kind": "act",
      "impl": "imperative",
      "description": "Create and select a new browser-local copy without changing the original project.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {}
      }
    }
    delete_projectSensitive Action

    Delete one browser-local project by id and select another remaining project.

    View tool JSON
    {
      "name": "delete_project",
      "kind": "transact",
      "impl": "imperative",
      "description": "Delete one browser-local project by id and select another remaining project.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "projectId"
        ],
        "properties": {
          "projectId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 160
          }
        }
      }
    }
    list_project_presetsAnswer

    List researched sprite, tile, web-game, and classic-system canvas presets.

    View tool JSON
    {
      "name": "list_project_presets",
      "kind": "answer",
      "impl": "imperative",
      "description": "List researched sprite, tile, web-game, and classic-system canvas presets.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {}
      }
    }
    create_from_presetAction

    Add and select a production-sized project with a matching palette while preserving existing projects.

    View tool JSON
    {
      "name": "create_from_preset",
      "kind": "act",
      "impl": "imperative",
      "description": "Add and select a production-sized project with a matching palette while preserving existing projects.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "presetId"
        ],
        "properties": {
          "presetId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 80
          },
          "name": {
            "type": "string",
            "maxLength": 120
          }
        }
      }
    }
    create_projectAction

    Add and select a new transparent pixel project while preserving existing projects.

    View tool JSON
    {
      "name": "create_project",
      "kind": "act",
      "impl": "imperative",
      "description": "Add and select a new transparent pixel project while preserving existing projects.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "width",
          "height"
        ],
        "properties": {
          "width": {
            "type": "integer",
            "minimum": 1,
            "maximum": 4096,
            "description": "Canvas width in pixels."
          },
          "height": {
            "type": "integer",
            "minimum": 1,
            "maximum": 4096,
            "description": "Canvas height in pixels."
          },
          "name": {
            "type": "string",
            "maxLength": 120,
            "description": "Project name."
          }
        }
      }
    }
    image_to_pixelAction

    Create a new editable project from a bounded image. strict-99 is the default: it dynamically preserves the source or transparent-subject ratio, forbids crop/stretch, uses a detail-preserving palette, and returns a measured fidelity report. Use manual only when the user explicitly requests a stylized or lower-fidelity result.

    View tool JSON
    {
      "name": "image_to_pixel",
      "kind": "act",
      "impl": "imperative",
      "description": "Create a new editable project from a bounded image. strict-99 is the default: it dynamically preserves the source or transparent-subject ratio, forbids crop/stretch, uses a detail-preserving palette, and returns a measured fidelity report. Use manual only when the user explicitly requests a stylized or lower-fidelity result.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "imageDataUrl"
        ],
        "properties": {
          "imageDataUrl": {
            "type": "string",
            "pattern": "^data:image/(png|jpeg|webp);base64,",
            "maxLength": 22400000,
            "description": "Base64 image data URL; arbitrary remote URLs are not accepted."
          },
          "name": {
            "type": "string",
            "maxLength": 120
          },
          "resolutionMode": {
            "type": "string",
            "enum": [
              "source-exact",
              "auto-faithful",
              "custom"
            ],
            "description": "Defaults to auto-faithful. Custom requires width and height."
          },
          "fidelityMode": {
            "type": "string",
            "enum": [
              "strict-99",
              "balanced",
              "manual"
            ],
            "description": "Defaults to strict-99. Manual is an explicit opt-out from the fidelity guardrails."
          },
          "width": {
            "type": "integer",
            "minimum": 1,
            "maximum": 4096,
            "description": "Editable output width for custom mode."
          },
          "height": {
            "type": "integer",
            "minimum": 1,
            "maximum": 4096,
            "description": "Editable output height for custom mode."
          },
          "maxColors": {
            "type": "integer",
            "minimum": 2,
            "maximum": 256,
            "description": "Adaptive palette size; strict-99 enforces at least 128."
          },
          "dither": {
            "type": "string",
            "enum": [
              "none",
              "ordered-4x4",
              "floyd-steinberg"
            ]
          },
          "fit": {
            "type": "string",
            "enum": [
              "contain",
              "cover",
              "stretch"
            ]
          },
          "sampling": {
            "type": "string",
            "enum": [
              "smooth",
              "nearest"
            ]
          },
          "alphaThreshold": {
            "type": "integer",
            "minimum": 0,
            "maximum": 255
          },
          "preserveAlpha": {
            "type": "boolean",
            "description": "Preserve alpha values above the cutoff."
          },
          "trimTransparent": {
            "type": "boolean",
            "description": "Crop transparent source margins before fitting."
          },
          "targetOccupancy": {
            "type": "number",
            "minimum": 0.1,
            "maximum": 1,
            "description": "Share of the canvas occupied by the visible subject."
          },
          "hardAlpha": {
            "type": "boolean",
            "description": "Convert retained edge pixels to fully opaque pixels."
          }
        }
      }
    }
    animation_from_imagesAction

    Align two or more source images into animation frames with strict-99 proportion and sampling guardrails by default, separate pixels shared by every frame from motion details when memory allows, and add the result as a new project.

    View tool JSON
    {
      "name": "animation_from_images",
      "kind": "act",
      "impl": "imperative",
      "description": "Align two or more source images into animation frames with strict-99 proportion and sampling guardrails by default, separate pixels shared by every frame from motion details when memory allows, and add the result as a new project.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "imageDataUrls"
        ],
        "properties": {
          "imageDataUrls": {
            "type": "array",
            "minItems": 2,
            "maxItems": 120,
            "items": {
              "type": "string",
              "pattern": "^data:image/(png|jpeg|webp);base64,",
              "maxLength": 22400000
            }
          },
          "sourceNames": {
            "type": "array",
            "maxItems": 120,
            "items": {
              "type": "string",
              "maxLength": 180
            }
          },
          "name": {
            "type": "string",
            "maxLength": 120
          },
          "resolutionMode": {
            "type": "string",
            "enum": [
              "source-exact",
              "auto-faithful",
              "custom"
            ]
          },
          "fidelityMode": {
            "type": "string",
            "enum": [
              "strict-99",
              "balanced",
              "manual"
            ]
          },
          "width": {
            "type": "integer",
            "minimum": 1,
            "maximum": 4096
          },
          "height": {
            "type": "integer",
            "minimum": 1,
            "maximum": 4096
          },
          "maxColors": {
            "type": "integer",
            "minimum": 2,
            "maximum": 256
          },
          "alphaThreshold": {
            "type": "integer",
            "minimum": 0,
            "maximum": 255
          },
          "targetOccupancy": {
            "type": "number",
            "minimum": 0.1,
            "maximum": 1
          },
          "fps": {
            "type": "integer",
            "minimum": 1,
            "maximum": 60
          },
          "loopMode": {
            "type": "string",
            "enum": [
              "loop",
              "once",
              "ping-pong"
            ]
          },
          "separateLayers": {
            "type": "boolean",
            "description": "Separate common pixels from per-frame motion details."
          }
        }
      }
    }
    reference_image.get_stateAnswer

    Read the browser-local reference image metadata and every synchronized view setting without returning the image bytes.

    View tool JSON
    {
      "name": "reference_image.get_state",
      "kind": "answer",
      "impl": "imperative",
      "description": "Read the browser-local reference image metadata and every synchronized view setting without returning the image bytes.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {}
      }
    }
    reference_image.open_pickerAction

    Request the browser file picker for a local PNG, JPEG, or WebP. Browser user-activation rules may require the user to click the visible upload control instead.

    View tool JSON
    {
      "name": "reference_image.open_picker",
      "kind": "act",
      "impl": "imperative",
      "description": "Request the browser file picker for a local PNG, JPEG, or WebP. Browser user-activation rules may require the user to click the visible upload control instead.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {}
      }
    }
    reference_image.set_from_data_urlAction

    Validate and store a bounded PNG, JPEG, or WebP data URL as the current browser-local reference image. Remote URLs are never accepted.

    View tool JSON
    {
      "name": "reference_image.set_from_data_url",
      "kind": "act",
      "impl": "imperative",
      "description": "Validate and store a bounded PNG, JPEG, or WebP data URL as the current browser-local reference image. Remote URLs are never accepted.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "imageDataUrl"
        ],
        "properties": {
          "imageDataUrl": {
            "type": "string",
            "pattern": "^data:image/(png|jpeg|webp);base64,",
            "maxLength": 22400000,
            "description": "Base64 image data URL; arbitrary remote URLs are not accepted."
          },
          "name": {
            "type": "string",
            "maxLength": 180
          }
        }
      }
    }
    reference_image.clearAction

    Remove the current browser-local reference image while preserving the pixel project.

    View tool JSON
    {
      "name": "reference_image.clear",
      "kind": "act",
      "impl": "imperative",
      "description": "Remove the current browser-local reference image while preserving the pixel project.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {}
      }
    }
    reference_image.set_modeAction

    Switch the desktop reference between split, floating overlay, and hidden modes. Mobile continues to use its dedicated sheet viewer.

    View tool JSON
    {
      "name": "reference_image.set_mode",
      "kind": "act",
      "impl": "imperative",
      "description": "Switch the desktop reference between split, floating overlay, and hidden modes. Mobile continues to use its dedicated sheet viewer.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "mode"
        ],
        "properties": {
          "mode": {
            "type": "string",
            "enum": [
              "split",
              "overlay",
              "hidden"
            ]
          }
        }
      }
    }
    reference_image.set_zoomAction

    Set the reference image scale from 0.1 to 8, where 1 is 100 percent.

    View tool JSON
    {
      "name": "reference_image.set_zoom",
      "kind": "act",
      "impl": "imperative",
      "description": "Set the reference image scale from 0.1 to 8, where 1 is 100 percent.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "zoom"
        ],
        "properties": {
          "zoom": {
            "type": "number",
            "minimum": 0.1,
            "maximum": 8,
            "description": "Scale multiplier; 1 is 100 percent."
          }
        }
      }
    }
    reference_image.set_opacityAction

    Set reference image opacity from 0 to 1.

    View tool JSON
    {
      "name": "reference_image.set_opacity",
      "kind": "act",
      "impl": "imperative",
      "description": "Set reference image opacity from 0 to 1.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "opacity"
        ],
        "properties": {
          "opacity": {
            "type": "number",
            "minimum": 0,
            "maximum": 1,
            "description": "Opacity from transparent 0 to opaque 1."
          }
        }
      }
    }
    reference_image.set_flipAction

    Set horizontal and/or vertical reference mirroring. At least one field is required.

    View tool JSON
    {
      "name": "reference_image.set_flip",
      "kind": "act",
      "impl": "imperative",
      "description": "Set horizontal and/or vertical reference mirroring. At least one field is required.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "minProperties": 1,
        "properties": {
          "flipX": {
            "type": "boolean",
            "description": "Mirror left to right."
          },
          "flipY": {
            "type": "boolean",
            "description": "Mirror top to bottom."
          }
        }
      }
    }
    reference_image.set_panel_sizeAction

    Set the desktop split reference panel width in pixels.

    View tool JSON
    {
      "name": "reference_image.set_panel_size",
      "kind": "act",
      "impl": "imperative",
      "description": "Set the desktop split reference panel width in pixels.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "panelSize"
        ],
        "properties": {
          "panelSize": {
            "type": "integer",
            "minimum": 220,
            "maximum": 720,
            "description": "Desktop panel width in pixels."
          }
        }
      }
    }
    reference_image.set_overlay_rectAction

    Move and resize the floating reference using workspace-relative pixel bounds.

    View tool JSON
    {
      "name": "reference_image.set_overlay_rect",
      "kind": "act",
      "impl": "imperative",
      "description": "Move and resize the floating reference using workspace-relative pixel bounds.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "x",
          "y",
          "width",
          "height"
        ],
        "properties": {
          "x": {
            "type": "integer",
            "minimum": 0,
            "maximum": 4096
          },
          "y": {
            "type": "integer",
            "minimum": 0,
            "maximum": 4096
          },
          "width": {
            "type": "integer",
            "minimum": 260,
            "maximum": 1600
          },
          "height": {
            "type": "integer",
            "minimum": 220,
            "maximum": 1200
          }
        }
      }
    }
    reference_image.fitAction

    Fit the entire reference image inside its current panel or floating window.

    View tool JSON
    {
      "name": "reference_image.fit",
      "kind": "act",
      "impl": "imperative",
      "description": "Fit the entire reference image inside its current panel or floating window.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {}
      }
    }
    reference_image.set_pinnedAction

    Pin or unpin the floating reference so its position and size cannot be changed by pointer input.

    View tool JSON
    {
      "name": "reference_image.set_pinned",
      "kind": "act",
      "impl": "imperative",
      "description": "Pin or unpin the floating reference so its position and size cannot be changed by pointer input.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "pinned"
        ],
        "properties": {
          "pinned": {
            "type": "boolean"
          }
        }
      }
    }
    reference_image.set_collapsedAction

    Collapse or expand the desktop split reference panel without clearing its image.

    View tool JSON
    {
      "name": "reference_image.set_collapsed",
      "kind": "act",
      "impl": "imperative",
      "description": "Collapse or expand the desktop split reference panel without clearing its image.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "collapsed"
        ],
        "properties": {
          "collapsed": {
            "type": "boolean"
          }
        }
      }
    }
    reference_image.pixelizeAction

    Reuse the current browser-local reference as image-to-pixel input. strict-99 is the default and dynamically derives a canvas from transparent content bounds, preserves aspect ratio without cropping or stretching, and returns an auditable measured score.

    View tool JSON
    {
      "name": "reference_image.pixelize",
      "kind": "act",
      "impl": "imperative",
      "description": "Reuse the current browser-local reference as image-to-pixel input. strict-99 is the default and dynamically derives a canvas from transparent content bounds, preserves aspect ratio without cropping or stretching, and returns an auditable measured score.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 120
          },
          "resolutionMode": {
            "type": "string",
            "enum": [
              "source-exact",
              "auto-faithful",
              "custom"
            ],
            "description": "Defaults to auto-faithful. Supplying width and height implies custom mode."
          },
          "fidelityMode": {
            "type": "string",
            "enum": [
              "strict-99",
              "balanced",
              "manual"
            ],
            "description": "Defaults to strict-99. Manual is an explicit opt-out from guardrails."
          },
          "width": {
            "type": "integer",
            "minimum": 1,
            "maximum": 4096,
            "description": "Editable output width for custom mode."
          },
          "height": {
            "type": "integer",
            "minimum": 1,
            "maximum": 4096,
            "description": "Editable output height for custom mode."
          },
          "maxColors": {
            "type": "integer",
            "minimum": 2,
            "maximum": 256,
            "description": "Adaptive palette size; strict-99 enforces at least 128."
          },
          "dither": {
            "type": "string",
            "enum": [
              "none",
              "ordered-4x4",
              "floyd-steinberg"
            ]
          },
          "fit": {
            "type": "string",
            "enum": [
              "contain",
              "cover",
              "stretch"
            ]
          },
          "sampling": {
            "type": "string",
            "enum": [
              "smooth",
              "nearest"
            ]
          },
          "alphaThreshold": {
            "type": "integer",
            "minimum": 0,
            "maximum": 255
          },
          "preserveAlpha": {
            "type": "boolean",
            "description": "Preserve alpha values above the cutoff."
          },
          "trimTransparent": {
            "type": "boolean",
            "description": "Crop transparent source margins before fitting."
          },
          "targetOccupancy": {
            "type": "number",
            "minimum": 0.1,
            "maximum": 1
          },
          "hardAlpha": {
            "type": "boolean",
            "description": "Convert retained edge pixels to fully opaque pixels."
          }
        }
      }
    }
    reference_image.audit_fidelityAction

    Measure the active frame against the browser-local reference after every reference-driven WebMCP workflow. A verified_99 result requires a score of at least 0.990, every metric floor, exact dimensions, and a meaningful reference alpha mask; never describe an unscorable or degraded result as 99% verified.

    View tool JSON
    {
      "name": "reference_image.audit_fidelity",
      "kind": "act",
      "impl": "imperative",
      "description": "Measure the active frame against the browser-local reference after every reference-driven WebMCP workflow. A verified_99 result requires a score of at least 0.990, every metric floor, exact dimensions, and a meaningful reference alpha mask; never describe an unscorable or degraded result as 99% verified.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "alphaThreshold": {
            "type": "integer",
            "minimum": 0,
            "maximum": 255,
            "description": "Alpha cutoff used for the silhouette comparison."
          },
          "trimTransparent": {
            "type": "boolean",
            "description": "Compare against transparent content bounds."
          }
        }
      }
    }
    import_projectAction

    Add and select a complete PixelForge project JSON object while preserving existing projects.

    View tool JSON
    {
      "name": "import_project",
      "kind": "act",
      "impl": "imperative",
      "description": "Add and select a complete PixelForge project JSON object while preserving existing projects.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "project"
        ],
        "properties": {
          "project": {
            "type": "object",
            "description": "PixelForge project object."
          }
        }
      }
    }
    rename_projectAction

    Change the current project name.

    View tool JSON
    {
      "name": "rename_project",
      "kind": "act",
      "impl": "imperative",
      "description": "Change the current project name.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "name"
        ],
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120
          }
        }
      }
    }
    resize_canvasAction

    Resize every cel and anchor existing pixels to a chosen edge or the center.

    View tool JSON
    {
      "name": "resize_canvas",
      "kind": "act",
      "impl": "imperative",
      "description": "Resize every cel and anchor existing pixels to a chosen edge or the center.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "width",
          "height"
        ],
        "properties": {
          "width": {
            "type": "integer",
            "minimum": 1,
            "maximum": 4096
          },
          "height": {
            "type": "integer",
            "minimum": 1,
            "maximum": 4096
          },
          "anchor": {
            "type": "string",
            "enum": [
              "top-left",
              "top",
              "top-right",
              "left",
              "center",
              "right",
              "bottom-left",
              "bottom",
              "bottom-right"
            ]
          }
        }
      }
    }
    set_active_toolAction

    Select pencil, eraser, fill, line, rectangle, ellipse, picker, marquee, or hand.

    View tool JSON
    {
      "name": "set_active_tool",
      "kind": "act",
      "impl": "imperative",
      "description": "Select pencil, eraser, fill, line, rectangle, ellipse, picker, marquee, or hand.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "tool"
        ],
        "properties": {
          "tool": {
            "type": "string",
            "enum": [
              "pencil",
              "eraser",
              "fill",
              "line",
              "rectangle",
              "ellipse",
              "picker",
              "select",
              "hand"
            ]
          }
        }
      }
    }
    set_primary_colorAction

    Set the foreground drawing color.

    View tool JSON
    {
      "name": "set_primary_color",
      "kind": "act",
      "impl": "imperative",
      "description": "Set the foreground drawing color.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "color"
        ],
        "properties": {
          "color": {
            "type": "string",
            "pattern": "^#[0-9a-fA-F]{6}([0-9a-fA-F]{2})?$",
            "description": "Hex color as #RRGGBB or #RRGGBBAA."
          }
        }
      }
    }
    set_secondary_colorAction

    Set the right-click background drawing color.

    View tool JSON
    {
      "name": "set_secondary_color",
      "kind": "act",
      "impl": "imperative",
      "description": "Set the right-click background drawing color.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "color"
        ],
        "properties": {
          "color": {
            "type": "string",
            "pattern": "^#[0-9a-fA-F]{6}([0-9a-fA-F]{2})?$",
            "description": "Hex color as #RRGGBB or #RRGGBBAA."
          }
        }
      }
    }
    set_brush_sizeAction

    Set the square pixel brush size from 1 to 8.

    View tool JSON
    {
      "name": "set_brush_size",
      "kind": "act",
      "impl": "imperative",
      "description": "Set the square pixel brush size from 1 to 8.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "size"
        ],
        "properties": {
          "size": {
            "type": "integer",
            "minimum": 1,
            "maximum": 8
          }
        }
      }
    }
    load_paletteAction

    Replace the active palette with named hex colors.

    View tool JSON
    {
      "name": "load_palette",
      "kind": "act",
      "impl": "imperative",
      "description": "Replace the active palette with named hex colors.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "colors"
        ],
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 80
          },
          "colors": {
            "type": "array",
            "minItems": 1,
            "maxItems": 64,
            "items": {
              "type": "string",
              "pattern": "^#[0-9a-fA-F]{6}([0-9a-fA-F]{2})?$",
              "description": "Hex color as #RRGGBB or #RRGGBBAA."
            }
          }
        }
      }
    }
    draw_pixelsAction

    Write a bounded batch of exact pixels into the active cel atomically.

    View tool JSON
    {
      "name": "draw_pixels",
      "kind": "act",
      "impl": "imperative",
      "description": "Write a bounded batch of exact pixels into the active cel atomically.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "pixels"
        ],
        "properties": {
          "color": {
            "type": "string",
            "pattern": "^#[0-9a-fA-F]{6}([0-9a-fA-F]{2})?$",
            "description": "Hex color as #RRGGBB or #RRGGBBAA."
          },
          "pixels": {
            "type": "array",
            "minItems": 1,
            "maxItems": 1048576,
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "x",
                "y"
              ],
              "properties": {
                "x": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 4095,
                  "description": "Zero-based pixel x coordinate."
                },
                "y": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 4095,
                  "description": "Zero-based pixel y coordinate."
                },
                "color": {
                  "type": "string",
                  "pattern": "^#[0-9a-fA-F]{6}([0-9a-fA-F]{2})?$",
                  "description": "Hex color as #RRGGBB or #RRGGBBAA."
                }
              }
            }
          }
        }
      }
    }
    apply_editAction

    Run the editor's line, rectangle, ellipse, or flood-fill algorithm on the active cel.

    View tool JSON
    {
      "name": "apply_edit",
      "kind": "act",
      "impl": "imperative",
      "description": "Run the editor's line, rectangle, ellipse, or flood-fill algorithm on the active cel.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "operation",
          "start"
        ],
        "properties": {
          "operation": {
            "type": "string",
            "enum": [
              "line",
              "rectangle",
              "ellipse",
              "fill"
            ]
          },
          "start": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "x",
              "y"
            ],
            "properties": {
              "x": {
                "type": "integer",
                "minimum": 0,
                "maximum": 4095,
                "description": "Zero-based pixel x coordinate."
              },
              "y": {
                "type": "integer",
                "minimum": 0,
                "maximum": 4095,
                "description": "Zero-based pixel y coordinate."
              }
            }
          },
          "end": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "x",
              "y"
            ],
            "properties": {
              "x": {
                "type": "integer",
                "minimum": 0,
                "maximum": 4095,
                "description": "Zero-based pixel x coordinate."
              },
              "y": {
                "type": "integer",
                "minimum": 0,
                "maximum": 4095,
                "description": "Zero-based pixel y coordinate."
              }
            }
          },
          "color": {
            "type": "string",
            "pattern": "^#[0-9a-fA-F]{6}([0-9a-fA-F]{2})?$",
            "description": "Hex color as #RRGGBB or #RRGGBBAA."
          },
          "filled": {
            "type": "boolean",
            "description": "Fill the interior of rectangles or ellipses."
          }
        }
      }
    }
    clear_active_celAction

    Erase all pixels in the active layer and frame unless the layer is locked.

    View tool JSON
    {
      "name": "clear_active_cel",
      "kind": "act",
      "impl": "imperative",
      "description": "Erase all pixels in the active layer and frame unless the layer is locked.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {}
      }
    }
    set_selectionAction

    Create or clear the rectangular marquee selection.

    View tool JSON
    {
      "name": "set_selection",
      "kind": "act",
      "impl": "imperative",
      "description": "Create or clear the rectangular marquee selection.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "selection": {
            "oneOf": [
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "x",
                  "y",
                  "width",
                  "height"
                ],
                "properties": {
                  "x": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 4095
                  },
                  "y": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 4095
                  },
                  "width": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 4096
                  },
                  "height": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 4096
                  }
                }
              },
              {
                "type": "null"
              }
            ]
          }
        }
      }
    }
    delete_selectionSensitive Action

    Clear pixels inside the current marquee on the active cel.

    View tool JSON
    {
      "name": "delete_selection",
      "kind": "transact",
      "impl": "imperative",
      "description": "Clear pixels inside the current marquee on the active cel.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {}
      }
    }
    add_frameAction

    Append a blank animation frame.

    View tool JSON
    {
      "name": "add_frame",
      "kind": "act",
      "impl": "imperative",
      "description": "Append a blank animation frame.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {}
      }
    }
    duplicate_frameAction

    Copy the active frame and every layer cel.

    View tool JSON
    {
      "name": "duplicate_frame",
      "kind": "act",
      "impl": "imperative",
      "description": "Copy the active frame and every layer cel.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {}
      }
    }
    delete_frameSensitive Action

    Delete the active animation frame.

    View tool JSON
    {
      "name": "delete_frame",
      "kind": "transact",
      "impl": "imperative",
      "description": "Delete the active animation frame.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {}
      }
    }
    add_layerAction

    Add a transparent layer.

    View tool JSON
    {
      "name": "add_layer",
      "kind": "act",
      "impl": "imperative",
      "description": "Add a transparent layer.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {}
      }
    }
    duplicate_layerAction

    Copy the active layer and all cels.

    View tool JSON
    {
      "name": "duplicate_layer",
      "kind": "act",
      "impl": "imperative",
      "description": "Copy the active layer and all cels.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {}
      }
    }
    delete_layerSensitive Action

    Delete the active layer.

    View tool JSON
    {
      "name": "delete_layer",
      "kind": "transact",
      "impl": "imperative",
      "description": "Delete the active layer.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {}
      }
    }
    toggle_layer_visibilityAction

    Show or hide the active layer.

    View tool JSON
    {
      "name": "toggle_layer_visibility",
      "kind": "act",
      "impl": "imperative",
      "description": "Show or hide the active layer.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {}
      }
    }
    undoAction

    Undo the latest recorded project edit.

    View tool JSON
    {
      "name": "undo",
      "kind": "act",
      "impl": "imperative",
      "description": "Undo the latest recorded project edit.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {}
      }
    }
    redoAction

    Redo the next project edit.

    View tool JSON
    {
      "name": "redo",
      "kind": "act",
      "impl": "imperative",
      "description": "Redo the next project edit.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {}
      }
    }
    set_active_frameAction

    Select an animation frame by zero-based index.

    View tool JSON
    {
      "name": "set_active_frame",
      "kind": "act",
      "impl": "imperative",
      "description": "Select an animation frame by zero-based index.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "index"
        ],
        "properties": {
          "index": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9999
          }
        }
      }
    }
    set_frame_durationAction

    Set the active frame duration in milliseconds.

    View tool JSON
    {
      "name": "set_frame_duration",
      "kind": "act",
      "impl": "imperative",
      "description": "Set the active frame duration in milliseconds.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "ms"
        ],
        "properties": {
          "ms": {
            "type": "integer",
            "minimum": 20,
            "maximum": 10000
          }
        }
      }
    }
    reorder_frameAction

    Move the active frame to a zero-based timeline index.

    View tool JSON
    {
      "name": "reorder_frame",
      "kind": "act",
      "impl": "imperative",
      "description": "Move the active frame to a zero-based timeline index.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "to"
        ],
        "properties": {
          "to": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9999
          }
        }
      }
    }
    rename_layerAction

    Rename the active layer.

    View tool JSON
    {
      "name": "rename_layer",
      "kind": "act",
      "impl": "imperative",
      "description": "Rename the active layer.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "name"
        ],
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120
          }
        }
      }
    }
    lock_layerAction

    Lock, unlock, or toggle the active layer edit lock.

    View tool JSON
    {
      "name": "lock_layer",
      "kind": "act",
      "impl": "imperative",
      "description": "Lock, unlock, or toggle the active layer edit lock.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "locked": {
            "type": "boolean",
            "description": "Omit to toggle."
          }
        }
      }
    }
    set_layer_opacityAction

    Set active layer opacity from 0 to 100 percent.

    View tool JSON
    {
      "name": "set_layer_opacity",
      "kind": "act",
      "impl": "imperative",
      "description": "Set active layer opacity from 0 to 100 percent.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "opacity"
        ],
        "properties": {
          "opacity": {
            "type": "number",
            "minimum": 0,
            "maximum": 100
          }
        }
      }
    }
    set_active_layerAction

    Select a layer by zero-based index.

    View tool JSON
    {
      "name": "set_active_layer",
      "kind": "act",
      "impl": "imperative",
      "description": "Select a layer by zero-based index.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "index"
        ],
        "properties": {
          "index": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9999
          }
        }
      }
    }
    reorder_layerAction

    Move the active layer to a zero-based stack index.

    View tool JSON
    {
      "name": "reorder_layer",
      "kind": "act",
      "impl": "imperative",
      "description": "Move the active layer to a zero-based stack index.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "to"
        ],
        "properties": {
          "to": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9999
          }
        }
      }
    }
    set_zoomAction

    Set the editor's integer pixel zoom multiplier from 1 to 64.

    View tool JSON
    {
      "name": "set_zoom",
      "kind": "act",
      "impl": "imperative",
      "description": "Set the editor's integer pixel zoom multiplier from 1 to 64.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "zoom"
        ],
        "properties": {
          "zoom": {
            "type": "integer",
            "minimum": 1,
            "maximum": 64
          }
        }
      }
    }
    toggle_gridAction

    Show, hide, or toggle the pixel grid.

    View tool JSON
    {
      "name": "toggle_grid",
      "kind": "act",
      "impl": "imperative",
      "description": "Show, hide, or toggle the pixel grid.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "enabled": {
            "type": "boolean",
            "description": "Omit to toggle the current value."
          }
        }
      }
    }
    toggle_onion_skinAction

    Show, hide, or toggle adjacent animation frames.

    View tool JSON
    {
      "name": "toggle_onion_skin",
      "kind": "act",
      "impl": "imperative",
      "description": "Show, hide, or toggle adjacent animation frames.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "enabled": {
            "type": "boolean",
            "description": "Omit to toggle the current value."
          }
        }
      }
    }
    toggle_symmetryAction

    Enable, disable, or toggle mirrored drawing on both axes.

    View tool JSON
    {
      "name": "toggle_symmetry",
      "kind": "act",
      "impl": "imperative",
      "description": "Enable, disable, or toggle mirrored drawing on both axes.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "enabled": {
            "type": "boolean",
            "description": "Omit to toggle the current value."
          }
        }
      }
    }
    playbackAction

    Play, pause, or stop the frame animation.

    View tool JSON
    {
      "name": "playback",
      "kind": "act",
      "impl": "imperative",
      "description": "Play, pause, or stop the frame animation.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "action"
        ],
        "properties": {
          "action": {
            "type": "string",
            "enum": [
              "play",
              "pause",
              "stop"
            ]
          }
        }
      }
    }
    export_pngAction

    Download the active frame as a crisp PNG.

    View tool JSON
    {
      "name": "export_png",
      "kind": "act",
      "impl": "imperative",
      "description": "Download the active frame as a crisp PNG.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "scale": {
            "type": "integer",
            "minimum": 1,
            "maximum": 16
          }
        }
      }
    }
    export_gifAction

    Download all frames as a looping animated GIF.

    View tool JSON
    {
      "name": "export_gif",
      "kind": "act",
      "impl": "imperative",
      "description": "Download all frames as a looping animated GIF.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "scale": {
            "type": "integer",
            "minimum": 1,
            "maximum": 8
          },
          "loop": {
            "type": "boolean"
          }
        }
      }
    }
    export_spritesheetAction

    Download a PNG sprite sheet and JSON frame metadata.

    View tool JSON
    {
      "name": "export_spritesheet",
      "kind": "act",
      "impl": "imperative",
      "description": "Download a PNG sprite sheet and JSON frame metadata.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "scale": {
            "type": "integer",
            "minimum": 1,
            "maximum": 16
          },
          "columns": {
            "type": "integer",
            "minimum": 1,
            "maximum": 9999
          },
          "gap": {
            "type": "integer",
            "minimum": 0,
            "maximum": 128
          },
          "layout": {
            "type": "string",
            "enum": [
              "horizontal",
              "vertical",
              "grid"
            ]
          }
        }
      }
    }
    export_projectAction

    Download the editable PixelForge project file.

    View tool JSON
    {
      "name": "export_project",
      "kind": "act",
      "impl": "imperative",
      "description": "Download the editable PixelForge project file.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {}
      }
    }
    export_game_bundleAction

    Download a game-ready ZIP with transparent sprite sheets, optional PNG frame sequence, atlas metadata, timing, pivots, engine helpers, and a README.

    View tool JSON
    {
      "name": "export_game_bundle",
      "kind": "act",
      "impl": "imperative",
      "description": "Download a game-ready ZIP with transparent sprite sheets, optional PNG frame sequence, atlas metadata, timing, pivots, engine helpers, and a README.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "engine": {
            "type": "string",
            "enum": [
              "universal",
              "unity",
              "godot",
              "phaser",
              "unreal",
              "libgdx",
              "gamemaker",
              "rpg-maker",
              "love2d"
            ]
          },
          "scale": {
            "type": "integer",
            "minimum": 1,
            "maximum": 16
          },
          "columns": {
            "type": "integer",
            "minimum": 1,
            "maximum": 9999
          },
          "gap": {
            "type": "integer",
            "minimum": 0,
            "maximum": 128
          },
          "includeFrameSequence": {
            "type": "boolean"
          }
        }
      }
    }