Search / tech.spriteforge/editor
SpriteForge Editor
R0· no sign-inFree pixel and tileset editor, no account: hand-edit sprites, animations and Wang tilesets in chat
v0.1.0 · active · website · descriptor JSON · versions
Search / tech.spriteforge/editor
R0· no sign-inFree pixel and tileset editor, no account: hand-edit sprites, animations and Wang tilesets in chat
v0.1.0 · active · website · descriptor JSON · versions
{
"mcpServers": {
"editor": {
"type": "http",
"url": "https://www.spriteforge.tech/mcp/editor"
}
}
}claude mcp add --transport http editor https://www.spriteforge.tech/mcp/editor[mcp_servers.editor]
url = "https://www.spriteforge.tech/mcp/editor"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"editor": {
"type": "remote",
"url": "https://www.spriteforge.tech/mcp/editor",
"enabled": true
}
}
}{
"mcpServers": {
"editor": {
"type": "http",
"url": "https://www.spriteforge.tech/mcp/editor"
}
},
"deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=editor&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vd3d3LnNwcml0ZWZvcmdlLnRlY2gvbWNwL2VkaXRvciJ9"
}{
"servers": {
"editor": {
"type": "http",
"url": "https://www.spriteforge.tech/mcp/editor"
}
}
}{
"mcpServers": {
"editor": {
"httpUrl": "https://www.spriteforge.tech/mcp/editor"
}
}
}extensions:
"editor":
enabled: true
name: "editor"
type: streamable_http
uri: "https://www.spriteforge.tech/mcp/editor"
timeout: 300
protocol.modernnewest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28protocol.statelessonly applies to 2026-07-28 serversprotocol.transportstreamable HTTPprotocol.list_ttlonly applies to 2026-07-28 serversauth.prm, auth.as_metadata, auth.cimdno remote uses OAuthauth.secret_in_urlno templated URLtools.descriptionsevery tool has a descriptiontools.description_length1 tools have descriptions over 1,024 characters, which crowds the contexttools.schemasevery tool has an object input schematools.annotations6 of 6 tools declare readOnlyHint or destructiveHinttools.directory_hints4 of 6 tools declare all four hints; missing: get_sprite (destructiveHint, idempotentHint); load_art (destructiveHint, idempotentHint)tools.token_costabout 2,373 tokens to load every tooltools.api_dumptools are not a one-to-one API dumpstability.changes1 tool changes in 30 daysstability.rug_pullno tool changed its meaning under the same namedeps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI packageopen_tileset_editorchangeddescription, input schemaOpens 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.
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; sets SpriteForge derives add 4 variants of tile 15 as tiles 16-19, mixed into painted floors) 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 20 grids for Wang, 49 for platformer, in mask order), palette + base (a seamless square texture; the 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 or 20x1 image is a strip, a 4x5 one a sheet, 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.
Full history: list_changes · trend: quality JSON.
Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.
+dns-namespace +website +reachable +uptime-100% +updated-16d-ago -no-repository
Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.
| remote | auth | reachable | uptime 30d | p50 | protocol | last ok |
|---|---|---|---|---|---|---|
https://www.spriteforge.tech/mcp/editor streamable-http | none | yes | 100% | 304 ms | 2025-11-25 | 2026-11-07 |
get_spriteread-only | 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. |
load_artread-only | Loads an edit session's sprite into the SpriteForge editor card. Only the card calls it. |
open_editor | 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. |
open_full_editor | 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. |
open_tileset_editor | 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; sets SpriteForge derives add 4 variants of tile 15 as tiles 16-19, mixed into painted floors) 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 20 grids for Wang, 49 for platformer, in mask order), palette + base (a seamless square texture; the 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 or 20x1 image is a strip, a 4x5 one a sheet, 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. |
save_art | Saves the user's edits from the SpriteForge editor card to its edit session. Only the card calls it. |
Schemas: list_tools.
{
"name": "tech.spriteforge/editor",
"icons": [
{
"src": "https://www.spriteforge.tech/assets/icon-512.png",
"sizes": [
"512x512"
],
"mimeType": "image/png"
}
],
"title": "SpriteForge Editor",
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
"remotes": [
{
"url": "https://www.spriteforge.tech/mcp/editor",
"type": "streamable-http"
}
],
"version": "0.1.0",
"websiteUrl": "https://github.com/OndrejKnizat/spriteforge-editor",
"description": "Free pixel and tileset editor, no account: hand-edit sprites, animations and Wang tilesets in chat"
}