{"id":309319,"recorded_at":"2026-10-26T23:53:42.290758Z","observed_at":"2026-10-26T23:53:42.290706Z","subject_kind":"endpoint","subject":"11e60494-8b88-46c5-a6a9-64a38621af31","kind":"mcp.tools","method":"probe.mcp/1","body":{"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"}]},"body_sha256":"619e5450620be85183e1364e81e663685bbdf822bdedfa380b256de04717e230","prev_id":null,"leaf":"0xabb701f7792ec1a90c1c6319eb0fef7ab2cecbd6341dbe93ce6b886bea362550","leaf_text":"{\"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\"}","day":{"day":"2026-10-26","leaves":296695,"root":"0xf43e8dcc3d451a4788b26be904c55e8c4c0fa75c9666796c51db38d37e2c0df8","chained":"0x702d5ac508f08b0d1accf36af25822d8e5660367494edd17a642fb61e158a57a","anchor_chain":"eip155:5042002","anchor_tx":"0x495162f8936e19f0039918feebe6c307f327cd6bf8c37219620b1970041fa9ae","anchor_block":69251483},"proof":["0xabb6f7c13082b59e538326f79c540a616abcb83c4b8b23e88ba605b09d08fb13","0xeafd757764fbad53cd83cd1cdaa1a267b55b04541b96a00ab46d701e6db0084e","0xe09deddb099b4b2c37bf8487bec0ba5c0da2e4fcc8134bc0bcd0d1f287fc586e","0x97ed9fa622fb4a72c9a643ca2c95273a9b8855dfe3a32e9dfb05080a77b37a0f","0x2c64ae9017817bd08b42cc2f50d746c5c2ae7f8ac8e5f936ed22047ff149d314","0x2f349bcd2d8091a66eb871b8ee952ecdbe44c26558cbe90efd8e60177839a486","0x51ffdeed804d2bdb45c0beb8d0bb3793230628490199e0818aa08cb8b0798ff3","0xbcc21a86fe9654e2d8a572aaebc227e581240dfe71fa65a176927de79a1e9f29","0xa4f59800b0bebd4b878392131b9045ba6400f102985af38c318245edfedadec3","0xc7cacc2d01c3e1b7ffb7608f2b307b4082bdded2ad2fc7c4373e088c0cadb4c9","0xe285855b14529e4bf6d93d3ce05a3365dcfc651d48b9dfeb5c229a51822613eb","0xb7fae69bb7bd717d54a83df961404a3e4de2a5cfbcfa013fd83a38627fe13f7e","0x4700d6dfdb40e52e2ceb8ffe62c75f3f708d23452f828255fd003d795f5d9d66","0x3b4dba7d874fc323b0a364140a9c60f37bf547fe671897653118a9873fe03420","0x1a74ed3b3756b9cd946da49701bcec120ec88645013da99fa9eea60b39e1a570","0x123ec8bee20ddc55223eeef5a4f4d6c4b6416515adbb911c56759f5cde56e452","0xd0651cb9bc8155eb52b5247d506e74b8a935057dc190ba52091702ac25ed3a40","0x9a9024edb5069d88a324facb310a5ce8e495214bbaa968f077bede437390194f","0x9b9ce5b74b9bab5121612ef6b64920a8d453cbf311096a423eef9702747e868a"]}