← The evidence ledger
Evidence row 309319
Observed , by probe.mcp/1.
- Kind
- mcp.tools
- About
- endpoint 11e60494-8b88-46c5-a6a9-64a38621af31
- Recorded
- Previous row
- None: the first of its kind about this subject
- Body SHA-256
- 619e5450620be85183e1364e81e663685bbdf822bdedfa380b256de04717e230
- Leaf
- 0xabb701f7792ec1a90c1c6319eb0fef7ab2cecbd6341dbe93ce6b886bea362550
What was observed
{
"count": 6,
"tools": [
{
"description": "Returns the current state of a SpriteForge edit session: a preview image, its size and palette, how many edits were saved, and a PNG URL with the exact pixels at 1x (add &frame=N for another frame). With include_pixels it also returns the palette-index grid. Read-only.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"include_pixels": {
"description": "Also return the palette and index grid (default false).",
"type": "boolean"
},
"session_id": {
"description": "An edit session's id (the s= value of an edit link), or the edit link itself.",
"type": "string"
}
},
"required": [
"session_id"
],
"type": "object"
},
"name": "get_sprite"
},
{
"description": "Loads an edit session's sprite into the SpriteForge editor card. Only the card calls it.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"session_id": {
"type": "string"
}
},
"required": [
"session_id"
],
"type": "object"
},
"name": "load_art"
},
{
"description": "Opens pixel art in SpriteForge's compact pixel editor - pencil, eraser, fill, colour picker, palette, undo and animation frames - as an interactive card where the app shows them, and returns an edit link (the same editor in a browser) and a session_id. No account needed. One source at most: png_base64 (an existing PNG), art (palette + index grid), or neither for a blank width x height canvas. Max 128x128 pixels and 256 colours. The user's edits save to the edit session automatically.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"art": {
"description": "Pixel art in SpriteForge's format: palette = hex colours, grid = rows of palette indexes (-1 = transparent). Optional frames for an animation, each { grid } on the same palette.",
"properties": {
"frames": {
"items": {
"properties": {
"grid": {
"items": {
"items": {
"type": "integer"
},
"type": "array"
},
"type": "array"
}
},
"required": [
"grid"
],
"type": "object"
},
"type": "array"
},
"grid": {
"items": {
"items": {
"type": "integer"
},
"type": "array"
},
"type": "array"
},
"palette": {
"items": {
"type": "string"
},
"maxItems": 256,
"type": "array"
}
},
"required": [
"palette",
"grid"
],
"type": "object"
},
"height": {
"description": "Blank canvas height in pixels (default 32).",
"maximum": 128,
"minimum": 1,
"type": "integer"
},
"name": {
"description": "Sprite name, used as the download filename (letters, digits, _ and -).",
"type": "string"
},
"palette": {
"description": "Starting palette for a blank canvas, as hex colours.",
"items": {
"type": "string"
},
"maxItems": 256,
"type": "array"
},
"png_base64": {
"description": "A PNG file, base64-encoded (a data: URL prefix is fine). Pixels under 50% alpha become transparent.",
"type": "string"
},
"width": {
"description": "Blank canvas width in pixels (default 32).",
"maximum": 128,
"minimum": 1,
"type": "integer"
}
},
"type": "object"
},
"name": "open_editor"
},
{
"description": "Opens a sprite in SpriteForge's full pixel editor - layers, selection and move, line/rectangle/ellipse, mirror painting, brush sizes, animation frames with onion skin and playback, palette tools - as an interactive card where the app shows them, and returns an edit link that opens the same editor in a browser. One source at most: session_id (an edit session that's already open, or an edit link), png_base64 (an existing PNG), art (palette + index grid), or none for a blank width x height canvas. Max 128x128 pixels and 256 colours. The user's edits save to the edit session.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"art": {
"description": "Pixel art in SpriteForge's format: palette = hex colours, grid = rows of palette indexes (-1 = transparent). Optional frames for an animation, each { grid } on the same palette.",
"properties": {
"frames": {
"items": {
"properties": {
"grid": {
"items": {
"items": {
"type": "integer"
},
"type": "array"
},
"type": "array"
}
},
"required": [
"grid"
],
"type": "object"
},
"type": "array"
},
"grid": {
"items": {
"items": {
"type": "integer"
},
"type": "array"
},
"type": "array"
},
"palette": {
"items": {
"type": "string"
},
"maxItems": 256,
"type": "array"
}
},
"required": [
"palette",
"grid"
],
"type": "object"
},
"height": {
"description": "Blank canvas height in pixels (default 32).",
"maximum": 128,
"minimum": 1,
"type": "integer"
},
"name": {
"description": "Sprite name, used as the download filename (letters, digits, _ and -).",
"type": "string"
},
"palette": {
"description": "Starting palette for a blank canvas, as hex colours.",
"items": {
"type": "string"
},
"maxItems": 256,
"type": "array"
},
"png_base64": {
"description": "A PNG file, base64-encoded (a data: URL prefix is fine). Pixels under 50% alpha become transparent.",
"type": "string"
},
"session_id": {
"description": "An edit session that's already open, or an edit link containing ?s=<id>.",
"type": "string"
},
"width": {
"description": "Blank canvas width in pixels (default 32).",
"maximum": 128,
"minimum": 1,
"type": "integer"
}
},
"type": "object"
},
"name": "open_full_editor"
},
{
"description": "Opens a tileset in SpriteForge's tileset editor as an interactive card where the app shows them, and returns an edit link that opens the same editor in a browser. For a Wang autotile set (16 tiles; tile i is drawn where the map cells at its corners are painted, NW=1 NE=2 SW=4 SE=8, so tile 15 is the solid base) the user paints a small map to see the tiles chain, draws on the map or on single tiles, and edits the base texture, which re-derives the edge tiles (tiles drawn by hand stay); a platformer set (49 tiles) is edited tile by tile. With session_id it opens a tileset that's already in an edit session, and kind (wang = flat floor terrain, wall, iso) switches that Wang set's preview, keeping its tiles and the user's edits. Otherwise it makes a new set from kind (wang, wall, iso or platformer; default wang) plus palette + tiles (16 or 49 grids in mask order), palette + base (a seamless square texture; the 16 Wang tiles are derived from it as SpriteForge does), png_base64 (a tileset sheet or a texture), or size alone for a blank set. With png_base64 and no layout, a 16x1 image is a strip, and a square one is a 4x4 sheet when its tiles look like a Wang set in mask order (tile 0 empty, or nearly every tile's corners matching tile 15 where its mask has that corner and tile 0 where it doesn't), else a texture. The result says which view it opened and how it read the PNG. The user's edits save to the edit session.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"base": {
"description": "A square seamless texture to derive a Wang set's 16 tiles from.",
"items": {
"items": {
"type": "integer"
},
"type": "array"
},
"type": "array"
},
"kind": {
"description": "wang (flat floor terrain), wall (Wang walls), iso (isometric Wang) or platformer. For a new set, default wang. With session_id, wang, wall or iso switches that Wang set's preview, keeping its tiles; a Wang set can't become a platformer set or the other way round.",
"enum": [
"wang",
"wall",
"iso",
"platformer"
],
"type": "string"
},
"layout": {
"description": "How to read png_base64: sheet (4x4 Wang sheet, or a platformer set's 7x7), strip (16x1) or texture (a square base texture the 16 Wang tiles are derived from). Default: guessed from the image (see the tool description).",
"enum": [
"sheet",
"strip",
"texture"
],
"type": "string"
},
"name": {
"description": "The set's name.",
"type": "string"
},
"palette": {
"description": "Hex colours for tiles or base.",
"items": {
"type": "string"
},
"maxItems": 256,
"type": "array"
},
"png_base64": {
"description": "A tileset PNG (a Wang set's 4x4 sheet or 16x1 strip, a platformer set's 7x7 sheet) or a square texture, base64.",
"type": "string"
},
"session_id": {
"description": "An existing tileset edit session, or an edit link containing ?s=<id>. Give kind with it to change a Wang set's preview; the other fields are for a new set.",
"type": "string"
},
"size": {
"description": "Tile size for a blank set (default 32).",
"maximum": 64,
"minimum": 4,
"type": "integer"
},
"tiles": {
"description": "The set's tiles in mask order (16 for Wang kinds, 49 for platformer), palette indexes, -1 transparent.",
"items": {
"items": {
"items": {
"type": "integer"
},
"type": "array"
},
"type": "array"
},
"type": "array"
}
},
"type": "object"
},
"name": "open_tileset_editor"
},
{
"description": "Saves the user's edits from the SpriteForge editor card to its edit session. Only the card calls it.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"art": {
"description": "Pixel art in SpriteForge's format: palette = hex colours, grid = rows of palette indexes (-1 = transparent). Optional frames for an animation, each { grid } on the same palette.",
"properties": {
"frames": {
"items": {
"properties": {
"grid": {
"items": {
"items": {
"type": "integer"
},
"type": "array"
},
"type": "array"
}
},
"required": [
"grid"
],
"type": "object"
},
"type": "array"
},
"grid": {
"items": {
"items": {
"type": "integer"
},
"type": "array"
},
"type": "array"
},
"palette": {
"items": {
"type": "string"
},
"maxItems": 256,
"type": "array"
}
},
"required": [
"palette",
"grid"
],
"type": "object"
},
"session_id": {
"type": "string"
}
},
"required": [
"session_id",
"art"
],
"type": "object"
},
"name": "save_art"
}
]
}What the leaf hashes
{"body":"619e5450620be85183e1364e81e663685bbdf822bdedfa380b256de04717e230","id":309319,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793058822290706,"prev":null,"subject":"11e60494-8b88-46c5-a6a9-64a38621af31","subject_kind":"endpoint"}Proof
Fold these into the leaf in order, hashing each sorted pair with keccak256, to reach the root of (296695 rows).
- 0xabb6f7c13082b59e538326f79c540a616abcb83c4b8b23e88ba605b09d08fb13
- 0xeafd757764fbad53cd83cd1cdaa1a267b55b04541b96a00ab46d701e6db0084e
- 0xe09deddb099b4b2c37bf8487bec0ba5c0da2e4fcc8134bc0bcd0d1f287fc586e
- 0x97ed9fa622fb4a72c9a643ca2c95273a9b8855dfe3a32e9dfb05080a77b37a0f
- 0x2c64ae9017817bd08b42cc2f50d746c5c2ae7f8ac8e5f936ed22047ff149d314
- 0x2f349bcd2d8091a66eb871b8ee952ecdbe44c26558cbe90efd8e60177839a486
- 0x51ffdeed804d2bdb45c0beb8d0bb3793230628490199e0818aa08cb8b0798ff3
- 0xbcc21a86fe9654e2d8a572aaebc227e581240dfe71fa65a176927de79a1e9f29
- 0xa4f59800b0bebd4b878392131b9045ba6400f102985af38c318245edfedadec3
- 0xc7cacc2d01c3e1b7ffb7608f2b307b4082bdded2ad2fc7c4373e088c0cadb4c9
- 0xe285855b14529e4bf6d93d3ce05a3365dcfc651d48b9dfeb5c229a51822613eb
- 0xb7fae69bb7bd717d54a83df961404a3e4de2a5cfbcfa013fd83a38627fe13f7e
- 0x4700d6dfdb40e52e2ceb8ffe62c75f3f708d23452f828255fd003d795f5d9d66
- 0x3b4dba7d874fc323b0a364140a9c60f37bf547fe671897653118a9873fe03420
- 0x1a74ed3b3756b9cd946da49701bcec120ec88645013da99fa9eea60b39e1a570
- 0x123ec8bee20ddc55223eeef5a4f4d6c4b6416515adbb911c56759f5cde56e452
- 0xd0651cb9bc8155eb52b5247d506e74b8a935057dc190ba52091702ac25ed3a40
- 0x9a9024edb5069d88a324facb310a5ce8e495214bbaa968f077bede437390194f
- 0x9b9ce5b74b9bab5121612ef6b64920a8d453cbf311096a423eef9702747e868a
- Day root
- 0xf43e8dcc3d451a4788b26be904c55e8c4c0fa75c9666796c51db38d37e2c0df8
- Chained
- 0x702d5ac508f08b0d1accf36af25822d8e5660367494edd17a642fb61e158a57a
- Published
- On Arc Testnet, block 69251483: 0x495162f8936e19f0039918feebe6c307f327cd6bf8c37219620b1970041fa9ae