opendots.thach.app
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
add_asset
Save a reusable sprite to the library (each side 1–96px; library ≤100). Pass imageDataUrl for a generated PNG/JPEG/WebP; transparent bounds are cropped, resized, and quantized to the active palette. For an exact bitmap, pass bitmapPalette plus indexedRows. Otherwise start with template "empty" then paint, or pass pixels, fill, or a page rect. Imported or painted assets return an inline PNG — compare before the next pass.
Page: /
Input schema
| Property | Type | Required | Description |
|---|---|---|---|
name |
string | yes | Label shown in the Assets list |
imageDataUrl |
string | no | Base64 data URL for a PNG, JPEG, or WebP image (maximum 10 MB); crops transparency, fits within 96×96, and quantizes to the active palette |
width |
integer | no | Width in pixels, 1–96 |
height |
integer | no | Height in pixels, 1–96 |
pixels |
array | no | Row-major #rrggbb colors; empty string is transparent |
rows |
array | no | Comma-separated #rrggbb per row (+ width + height) |
bitmapPalette |
array | no | Colors referenced by zero-based indexes in indexedRows |
indexedRows |
array | no | Direct bitmap rows such as ".,0,1,0,."; indexes reference bitmapPalette and . is transparent. Width and height are inferred. |
template |
string | no | With width+height, create a transparent blank asset |
fill |
string | no | With width+height, fill the asset with one #rrggbb color |
x |
integer | no | Page rect left, if copying from a page |
y |
integer | no | Page rect top, if copying from a page |
pageIndex |
integer | no | Page to copy from; defaults to the active page |
Raw JSON schema
{
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Label shown in the Assets list"
},
"imageDataUrl": {
"type": "string",
"description": "Base64 data URL for a PNG, JPEG, or WebP image (maximum 10 MB); crops transparency, fits within 96×96, and quantizes to the active palette"
},
"width": {
"type": "integer",
"description": "Width in pixels, 1–96"
},
"height": {
"type": "integer",
"description": "Height in pixels, 1–96"
},
"pixels": {
"type": "array",
"items": {
"type": "string"
},
"description": "Row-major #rrggbb colors; empty string is transparent"
},
"rows": {
"type": "array",
"items": {
"type": "string"
},
"description": "Comma-separated #rrggbb per row (+ width + height)"
},
"bitmapPalette": {
"type": "array",
"items": {
"type": "string",
"description": "#rrggbb"
},
"description": "Colors referenced by zero-based indexes in indexedRows"
},
"indexedRows": {
"type": "array",
"maxItems": 96,
"items": {
"type": "string"
},
"description": "Direct bitmap rows such as \".,0,1,0,.\"; indexes reference bitmapPalette and . is transparent. Width and height are inferred."
},
"template": {
"type": "string",
"enum": [
"empty"
],
"description": "With width+height, create a transparent blank asset"
},
"fill": {
"type": "string",
"description": "With width+height, fill the asset with one #rrggbb color"
},
"x": {
"type": "integer",
"description": "Page rect left, if copying from a page"
},
"y": {
"type": "integer",
"description": "Page rect top, if copying from a page"
},
"pageIndex": {
"type": "integer",
"description": "Page to copy from; defaults to the active page"
}
},
"required": [
"name"
]
}
Similar websites
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…
commonplace-webmcp.vercel.app
Commonplace is an editable social reading space built for people and their browser agents.
pixelforge-studio.appcaster.chatgpt.site
A professional browser pixel-art editor for drawing, frame animation, palettes, sprite sheets, GIF export, and WebMCP automation.
pixelite.taskcraft.site
Pixelite