← WebMCP Directory

opendots.thach.app

opendots.thach.app

live Unverified (seed import) Media & Personal 14 tools imperative implementation

A picture-book canvas. Draw the scene, place words and shapes, then present the story.

First seen 2026-11-05 · Last seen 2026-11-05 · Source: webmcp.com

Answer 4 · Act 10 · Transact 0 · Score: Not yet scored

Tool inspector

paint_asset

act imperative

Paint one declared asset pass: outline, fill, shadow, highlight, or cleanup. Mix rects, lines, fills, and pixels; mirror/repeat drafts or translate one painted region on a copied frame for animation. Color "" erases. Each call returns the new revision PNG; inspect it and submit review_asset before stamping.

Page: /

Input schema

PropertyTypeRequiredDescription
id string yes Asset id to paint into
pass string yes The visual construction pass being applied
frameIndex integer no Frame to paint (default 0). Use the current frameCount to append one copied frame.
frameDuration integer no Milliseconds per frame, shared by the asset (default 400)
rects array no Filled rectangles: each {x,y,width,height,color} paints a solid block. One rect can cover any region; color "" erases the block.
lines array no Straight lines: each {x0,y0,x1,y1,color} draws an edge or outline. Use for silhouettes, seams, and furniture edges. color "" erases.
fills array no Flood fills: each {x,y,color} bucket-fills the contiguous region touching x,y. Outline first (lines/rects), then flood the enclosed area. color "" erases.
pixels array no Fine-detail pixels (applied last). For blocks/bands prefer rects.
mirror string no Duplicate supplied operations across the asset axes while keeping the originals
repeat object no Repeat supplied operations as a grid, including the original at row 0, column 0
translateRegion object no Move painted pixels in one bounded region on this frame; useful after appending a copied frame for a 1–2px blink, breath, limb, or hair motion.
offsetX integer no Added to every x (default 0) — use to tile regions
offsetY integer no Added to every y (default 0)
Raw JSON schema
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Asset id to paint into"
    },
    "pass": {
      "type": "string",
      "enum": [
        "outline",
        "fill",
        "shadow",
        "highlight",
        "cleanup"
      ],
      "description": "The visual construction pass being applied"
    },
    "frameIndex": {
      "type": "integer",
      "minimum": 0,
      "description": "Frame to paint (default 0). Use the current frameCount to append one copied frame."
    },
    "frameDuration": {
      "type": "integer",
      "minimum": 100,
      "maximum": 2000,
      "description": "Milliseconds per frame, shared by the asset (default 400)"
    },
    "rects": {
      "type": "array",
      "maxItems": 512,
      "description": "Filled rectangles: each {x,y,width,height,color} paints a solid block. One rect can cover any region; color \"\" erases the block.",
      "items": {
        "type": "object",
        "properties": {
          "x": {
            "type": "integer"
          },
          "y": {
            "type": "integer"
          },
          "width": {
            "type": "integer"
          },
          "height": {
            "type": "integer"
          },
          "color": {
            "type": "string",
            "description": "#rrggbb or \"\" to erase"
          }
        },
        "required": [
          "x",
          "y",
          "width",
          "height",
          "color"
        ]
      }
    },
    "lines": {
      "type": "array",
      "maxItems": 512,
      "description": "Straight lines: each {x0,y0,x1,y1,color} draws an edge or outline. Use for silhouettes, seams, and furniture edges. color \"\" erases.",
      "items": {
        "type": "object",
        "properties": {
          "x0": {
            "type": "integer"
          },
          "y0": {
            "type": "integer"
          },
          "x1": {
            "type": "integer"
          },
          "y1": {
            "type": "integer"
          },
          "color": {
            "type": "string",
            "description": "#rrggbb or \"\" to erase"
          }
        },
        "required": [
          "x0",
          "y0",
          "x1",
          "y1",
          "color"
        ]
      }
    },
    "fills": {
      "type": "array",
      "maxItems": 512,
      "description": "Flood fills: each {x,y,color} bucket-fills the contiguous region touching x,y. Outline first (lines/rects), then flood the enclosed area. color \"\" erases.",
      "items": {
        "type": "object",
        "properties": {
          "x": {
            "type": "integer"
          },
          "y": {
            "type": "integer"
          },
          "color": {
            "type": "string",
            "description": "#rrggbb or \"\" to erase"
          }
        },
        "required": [
          "x",
          "y",
          "color"
        ]
      }
    },
    "pixels": {
      "type": "array",
      "maxItems": 4096,
      "description": "Fine-detail pixels (applied last). For blocks/bands prefer rects.",
      "items": {
        "type": "object",
        "properties": {
          "x": {
            "type": "integer",
            "description": "Column within asset (0 = left)"
          },
          "y": {
            "type": "integer",
            "description": "Row within asset (0 = top)"
          },
          "color": {
            "type": "string",
            "description": "#rrggbb or \"\" to erase"
          }
        },
        "required": [
          "x",
          "y",
          "color"
        ]
      }
    },
    "mirror": {
      "type": "string",
      "enum": [
        "left-right",
        "top-bottom",
        "both"
      ],
      "description": "Duplicate supplied operations across the asset axes while keeping the originals"
    },
    "repeat": {
      "type": "object",
      "description": "Repeat supplied operations as a grid, including the original at row 0, column 0",
      "properties": {
        "columns": {
          "type": "integer",
          "minimum": 1,
          "maximum": 16
        },
        "rows": {
          "type": "integer",
          "minimum": 1,
          "maximum": 16
        },
        "stepX": {
          "type": "integer",
          "description": "Horizontal pixels between copies"
        },
        "stepY": {
          "type": "integer",
          "description": "Vertical pixels between copies"
        }
      },
      "required": [
        "columns",
        "rows",
        "stepX",
        "stepY"
      ]
    },
    "translateRegion": {
      "type": "object",
      "description": "Move painted pixels in one bounded region on this frame; useful after appending a copied frame for a 1–2px blink, breath, limb, or hair motion.",
      "properties": {
        "x": {
          "type": "integer"
        },
        "y": {
          "type": "integer"
        },
        "width": {
          "type": "integer",
          "minimum": 1
        },
        "height": {
          "type": "integer",
          "minimum": 1
        },
        "dx": {
          "type": "integer",
          "minimum": -16,
          "maximum": 16
        },
        "dy": {
          "type": "integer",
          "minimum": -16,
          "maximum": 16
        }
      },
      "required": [
        "x",
        "y",
        "width",
        "height",
        "dx",
        "dy"
      ]
    },
    "offsetX": {
      "type": "integer",
      "description": "Added to every x (default 0) — use to tile regions"
    },
    "offsetY": {
      "type": "integer",
      "description": "Added to every y (default 0)"
    }
  },
  "required": [
    "id",
    "pass"
  ]
}

Similar websites

wfsim.app

wfsim.app

A Warframe calculator that simulates the fight instead of estimating it — builder, simulator, optimizer. Every formula cites its source, and the golden tests ar…

live Unverified Media & Personal
101 tools A12 / Act89 / T0 Not yet scored Seen 2026-11-05
enemies_targets_list enemies_target_new enemies_target_copy enemies_target_open enemies_target_set
Inspect tools
commonplace-webmcp.vercel.app

commonplace-webmcp.vercel.app

Commonplace is an editable social reading space built for people and their browser agents.

live Unverified Media & Personal Transact tools
89 tools A10 / Act77 / T2 Not yet scored Seen 2026-11-05
commonplace.get_page_state commonplace_get_page_state commonplace.get_reading_list commonplace_get_reading_list commonplace.get_profile
Inspect tools
pixelforge-studio.appcaster.chatgpt.site

pixelforge-studio.appcaster.chatgpt.site

A professional browser pixel-art editor for drawing, frame animation, palettes, sprite sheets, GIF export, and WebMCP automation.

live Unverified Media & Personal Transact tools
88 tools A12 / Act70 / T6 Not yet scored Seen 2026-11-05
plan_text_creation get_text_creation_status create_from_text claim_text_creation update_text_creation
Inspect tools
pixelite.taskcraft.site

pixelite.taskcraft.site

Pixelite

live Unverified Media & Personal Transact tools
83 tools A4 / Act78 / T1 Not yet scored Seen 2026-11-05
get_document_info list_layers get_active_layer get_selection_info new_document
Inspect tools

Related on Influzer