glyph-motion.slate-app.online
Glyph Motion Studio for WebMCP — direct motion in natural language, keep every keyframe under your control.
First seen 2026-11-05 · Last seen 2026-11-05 · Source: webmcp.com
Answer 3 · Act 7 · Transact 0 · Score: Not yet scored
Tool inspector
preview_scene_patch
Create or revise the vector composition through typed operations: add a vector layer, add validated primitives/text, insert bundled assets, update or duplicate nodes, assign semantic groups and pivots, transform layers, remove items, or restyle the scene. Stages an ephemeral visible preview only; the committed scene remains unchanged. Requires baseRevision from get_scene.
Page: /?scene=glyph-hero-scene
Input schema
| Property | Type | Required | Description |
|---|---|---|---|
baseRevision |
integer | yes | sceneRevision from get_scene |
intent |
string | no | One short user-facing sentence describing the composition goal |
operations |
array | yes | — |
Raw JSON schema
{
"type": "object",
"properties": {
"baseRevision": {
"type": "integer",
"minimum": 0,
"description": "sceneRevision from get_scene"
},
"intent": {
"type": "string",
"maxLength": 200,
"description": "One short user-facing sentence describing the composition goal"
},
"operations": {
"type": "array",
"minItems": 1,
"maxItems": 32,
"items": {
"description": "One reversible composition operation.",
"oneOf": [
{
"type": "object",
"properties": {
"op": {
"const": "add_vector_layer"
},
"element": {
"type": "object",
"properties": {
"id": {
"type": "string",
"pattern": "^[A-Za-z0-9][A-Za-z0-9_-]{0,63}$"
},
"name": {
"type": "string",
"maxLength": 80
},
"position": {
"type": "object",
"properties": {
"x": {
"type": "number",
"minimum": -2000,
"maximum": 2000,
"description": "SVG x coordinate"
},
"y": {
"type": "number",
"minimum": -2000,
"maximum": 2000,
"description": "SVG y coordinate"
}
},
"required": [
"x",
"y"
],
"additionalProperties": false
},
"scale": {
"type": "number",
"minimum": 0.01,
"maximum": 10,
"description": ""
},
"rotation": {
"type": "number",
"minimum": -1080,
"maximum": 1080,
"description": "Degrees"
},
"opacity": {
"type": "number",
"minimum": 0,
"maximum": 1,
"description": ""
},
"order": {
"type": "integer",
"minimum": -100,
"maximum": 100
},
"visible": {
"type": "boolean"
},
"locked": {
"type": "boolean"
},
"width": {
"type": "number",
"minimum": 1,
"maximum": 2000,
"description": "Local SVG width"
},
"height": {
"type": "number",
"minimum": 1,
"maximum": 2000,
"description": "Local SVG height"
}
},
"required": [
"id"
],
"additionalProperties": false
}
},
"required": [
"op",
"element"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"op": {
"const": "add_asset"
},
"element": {
"type": "object",
"properties": {
"id": {
"type": "string",
"pattern": "^[A-Za-z0-9][A-Za-z0-9_-]{0,63}$"
},
"name": {
"type": "string",
"maxLength": 80
},
"position": {
"type": "object",
"properties": {
"x": {
"type": "number",
"minimum": -2000,
"maximum": 2000,
"description": "SVG x coordinate"
},
"y": {
"type": "number",
"minimum": -2000,
"maximum": 2000,
"description": "SVG y coordinate"
}
},
"required": [
"x",
"y"
],
"additionalProperties": false
},
"scale": {
"type": "number",
"minimum": 0.01,
"maximum": 10,
"description": ""
},
"rotation": {
"type": "number",
"minimum": -1080,
"maximum": 1080,
"description": "Degrees"
},
"opacity": {
"type": "number",
"minimum": 0,
"maximum": 1,
"description": ""
},
"order": {
"type": "integer",
"minimum": -100,
"maximum": 100
},
"visible": {
"type": "boolean"
},
"locked": {
"type": "boolean"
},
"artworkKey": {
"type": "string",
"pattern": "^[A-Za-z0-9][A-Za-z0-9_-]{0,63}$",
"description": "Bundled key returned by inspect_vector_scene"
}
},
"required": [
"id",
"artworkKey"
],
"additionalProperties": false
}
},
"required": [
"op",
"element"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"op": {
"const": "add_node"
},
"elementId": {
"type": "string",
"pattern": "^[A-Za-z0-9][A-Za-z0-9_-]{0,63}$"
},
"node": {
"type": "object",
"description": "A validated vector primitive. Coordinates are local to the owning vector layer; optional pivot is returned to animation-target inspection.",
"properties": {
"id": {
"type": "string",
"pattern": "^[A-Za-z0-9][A-Za-z0-9_-]{0,63}$",
"description": "Stable semantic node id"
},
"name": {
"type": "string",
"maxLength": 80
},
"label": {
"type": "string",
"maxLength": 80,
"description": "Agent-facing description; mention the hinge when the node rotates"
},
"primitive": {
"type": "string",
"enum": [
"circle",
"rect",
"ellipse",
"line",
"polygon",
"polyline",
"path",
"text"
]
},
"role": {
"type": "string",
"enum": [
"primary",
"secondary",
"accent",
"utility"
]
},
"group": {
"type": "string",
"pattern": "^[A-Za-z0-9][A-Za-z0-9_-]{0,63}$"
},
"position": {
"type": "object",
"properties": {
"x": {
"type": "number",
"minimum": -2000,
"maximum": 2000,
"description": "SVG x coordinate"
},
"y": {
"type": "number",
"minimum": -2000,
"maximum": 2000,
"description": "SVG y coordinate"
}
},
"required": [
"x",
"y"
],
"additionalProperties": false
},
"scale": {
"type": "number",
"minimum": 0.01,
"maximum": 10,
"description": "Static node scale"
},
"rotation": {
"type": "number",
"minimum": -1080,
"maximum": 1080,
"description": "Static rotation in degrees"
},
"opacity": {
"type": "number",
"minimum": 0,
"maximum": 1,
"description": ""
},
"fill": {
"type": "string",
"pattern": "^(none|(#[0-9a-fA-F]{3,8}|rgba?\\(\\s*\\d{1,3}\\s*,\\s*\\d{1,3}\\s*,\\s*\\d{1,3}\\s*(,\\s*(0|1|0?\\.\\d+)\\s*)?\\)))$",
"description": "none, hex, rgb(), or rgba()"
},
"stroke": {
"type": "string",
"pattern": "^(none|(#[0-9a-fA-F]{3,8}|rgba?\\(\\s*\\d{1,3}\\s*,\\s*\\d{1,3}\\s*,\\s*\\d{1,3}\\s*(,\\s*(0|1|0?\\.\\d+)\\s*)?\\)))$",
"description": "none, hex, rgb(), or rgba()"
},
"strokeWidth": {
"type": "number",
"minimum": 0,
"maximum": 60,
"description": ""
},
"pivot": {
"type": "object",
"properties": {
"x": {
"type": "number",
"minimum": -2000,
"maximum": 2000,
"description": "SVG x coordinate"
},
"y": {
"type": "number",
"minimum": -2000,
"maximum": 2000,
"description": "SVG y coordinate"
}
},
"required": [
"x",
"y"
],
"additionalProperties": false,
"description": "Exact local SVG-coordinate hinge or rotation centre"
},
"cx": {
"type": "number",
"minimum": -2000,
"maximum": 2000,
"description": ""
},
"cy": {
"type": "number",
"minimum": -2000,
"maximum": 2000,
"description": ""
},
"radius": {
"type": "number",
"minimum": 0.1,
"maximum": 2000,
"description": ""
},
"x": {
"type": "number",
"minimum": -2000,
"maximum": 2000,
"description": ""
},
"y": {
"type": "number",
"minimum": -2000,
"maximum": 2000,
"description": ""
},
"width": {
"type": "number",
"minimum": 0.1,
"maximum": 2000,
"description": ""
},
"height": {
"type": "number",
"minimum": 0.1,
"maximum": 2000,
"description": ""
},
"rx": {
"type": "number",
"minimum": 0,
"maximum": 2000,
"description": ""
},
"ry": {
"type": "number",
"minimum": 0,
"maximum": 2000,
"description": ""
},
"x1": {
"type": "number",
"minimum": -2000,
"maximum": 2000,
"description": ""
},
"y1": {
"type": "number",
"minimum": -2000,
"maximum": 2000,
"description": ""
},
"x2": {
"type": "number",
"minimum": -2000,
"maximum": 2000,
"description": ""
},
"y2": {
"type": "number",
"minimum": -2000,
"maximum": 2000,
"description": ""
},
"points": {
"type": "array",
"minItems": 2,
"maxItems": 64,
"items": {
"type": "object",
"properties": {
"x": {
"type": "number",
"minimum": -2000,
"maximum": 2000,
"description": "SVG x coordinate"
},
"y": {
"type": "number",
"minimum": -2000,
"maximum": 2000,
"description": "SVG y coordinate"
}
},
"required": [
"x",
"y"
],
"additionalProperties": false
}
},
"d": {
"type": "string",
"maxLength": 4000,
"description": "Plain SVG path data only; no markup, CSS, URLs, or scripts"
},
"text": {
"type": "string",
"maxLength": 120
},
"fontSize": {
"type": "number",
"minimum": 6,
"maximum": 240,
"description": ""
},
"fontWeight": {
"type": "integer",
"minimum": 100,
"maximum": 900
},
"textAnchor": {
"type": "string",
"enum": [
"start",
"middle",
"end"
]
}
},
"required": [
"id",
"primitive"
],
"oneOf": [
{
"properties": {
"primitive": {
"const": "circle"
}
},
"required": [
"cx",
"cy",
"radius"
]
},
{
"properties": {
"primitive": {
"const": "rect"
}
},
"required": [
"x",
"y",
"width",
"height"
]
},
{
"properties": {
"primitive": {
"const": "ellipse"
}
},
"required": [
"cx",
"cy",
"rx",
"ry"
]
},
{
"properties": {
"primitive": {
"const": "line"
}
},
"required": [
"x1",
"y1",
"x2",
"y2"
]
},
{
"properties": {
"primitive": {
"const": "polygon"
}
},
"required": [
"points"
]
},
{
"properties": {
"primitive": {
"const": "polyline"
}
},
"required": [
"points"
]
},
{
"properties": {
"primitive": {
"const": "path"
}
},
"required": [
"d"
]
},
{
"properties": {
"primitive": {
"const": "text"
}
},
"required": [
"x",
"y",
"text"
]
}
],
"additionalProperties": false
}
},
"required": [
"op",
"elementId",
"node"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"op": {
"const": "update_node"
},
"elementId": {
"type": "string",
"pattern": "^[A-Za-z0-9][A-Za-z0-9_-]{0,63}$"
},
"nodeId": {
"type": "string",
"pattern": "^[A-Za-z0-9][A-Za-z0-9_-]{0,63}$"
},
"changes": {
"type": "object",
"properties": {
"name": {
"type": "string",
"maxLength": 80
},
"label": {
"type": "string",
"maxLength": 80,
"description": "Agent-facing description; mention the hinge when the node rotates"
},
"role": {
"type": "string",
"enum": [
"primary",
"secondary",
"accent",
"utility"
]
},
"group": {
"type": "string",
"pattern": "^[A-Za-z0-9][A-Za-z0-9_-]{0,63}$"
},
"position": {
"type": "object",
"properties": {
"x": {
"type": "number",
"minimum": -2000,
"maximum": 2000,
"description": "SVG x coordinate"
},
"y": {
"type": "number",
"minimum": -2000,
"maximum": 2000,
"description": "SVG y coordinate"
}
},
"required": [
"x",
"y"
],
"additionalProperties": false
},
"scale": {
"type": "number",
"minimum": 0.01,
"maximum": 10,
"description": "Static node scale"
},
"rotation": {
"type": "number",
"minimum": -1080,
"maximum": 1080,
"description": "Static rotation in degrees"
},
"opacity": {
"type": "number",
"minimum": 0,
"maximum": 1,
"description": ""
},
"fill": {
"type": "string",
"pattern": "^(none|(#[0-9a-fA-F]{3,8}|rgba?\\(\\s*\\d{1,3}\\s*,\\s*\\d{1,3}\\s*,\\s*\\d{1,3}\\s*(,\\s*(0|1|0?\\.\\d+)\\s*)?\\)))$",
"description": "none, hex, rgb(), or rgba()"
},
"stroke": {
"type": "string",
"pattern": "^(none|(#[0-9a-fA-F]{3,8}|rgba?\\(\\s*\\d{1,3}\\s*,\\s*\\d{1,3}\\s*,\\s*\\d{1,3}\\s*(,\\s*(0|1|0?\\.\\d+)\\s*)?\\)))$",
"description": "none, hex, rgb(), or rgba()"
},
"strokeWidth": {
"type": "number",
"minimum": 0,
"maximum": 60,
"description": ""
},
"pivot": {
"type": "object",
"properties": {
"x": {
"type": "number",
"minimum": -2000,
"maximum": 2000,
"description": "SVG x coordinate"
},
"y": {
"type": "number",
"minimum": -2000,
"maximum": 2000,
"description": "SVG y coordinate"
}
},
"required": [
"x",
"y"
],
"additionalProperties": false,
"description": "Exact local SVG-coordinate hinge or rotation centre"
},
"cx": {
"type": "number",
"minimum": -2000,
"maximum": 2000,
"description": ""
},
"cy": {
"type": "number",
"minimum": -2000,
"maximum": 2000,
"description": ""
},
"radius": {
"type": "number",
"minimum": 0.1,
"maximum": 2000,
"description": ""
},
"x": {
"type": "number",
"minimum": -2000,
"maximum": 2000,
"description": ""
},
"y": {
"type": "number",
"minimum": -2000,
"maximum": 2000,
"description": ""
},
"width": {
"type": "number",
"minimum": 0.1,
"maximum": 2000,
"description": ""
},
"height": {
"type": "number",
"minimum": 0.1,
"maximum": 2000,
"description": ""
},
"rx": {
"type": "number",
"minimum": 0,
"maximum": 2000,
"description": ""
},
"ry": {
"type": "number",
"minimum": 0,
"maximum": 2000,
"description": ""
},
"x1": {
"type": "number",
"minimum": -2000,
"maximum": 2000,
"description": ""
},
"y1": {
"type": "number",
"minimum": -2000,
"maximum": 2000,
"description": ""
},
"x2": {
"type": "number",
"minimum": -2000,
"maximum": 2000,
"description": ""
},
"y2": {
"type": "number",
"minimum": -2000,
"maximum": 2000,
"description": ""
},
"points": {
"type": "array",
"minItems": 2,
"maxItems": 64,
"items": {
"type": "object",
"properties": {
"x": {
"type": "number",
"minimum": -2000,
"maximum": 2000,
"description": "SVG x coordinate"
},
"y": {
"type": "number",
"minimum": -2000,
"maximum": 2000,
"description": "SVG y coordinate"
}
},
"required": [
"x",
"y"
],
"additionalProperties": false
}
},
"d": {
"type": "string",
"maxLength": 4000,
"description": "Plain SVG path data only; no markup, CSS, URLs, or scripts"
},
"text": {
"type": "string",
"maxLength": 120
},
"fontSize": {
"type": "number",
"minimum": 6,
"maximum": 240,
"description": ""
},
"fontWeight": {
"type": "integer",
"minimum": 100,
"maximum": 900
},
"textAnchor": {
"type": "string",
"enum": [
"start",
"middle",
"end"
]
}
},
"minProperties": 1,
"additionalProperties": false
}
},
"required": [
"op",
"elementId",
"nodeId",
"changes"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"op": {
"const": "duplicate_node"
},
"elementId": {
"type": "string",
"pattern": "^[A-Za-z0-9][A-Za-z0-9_-]{0,63}$"
},
"nodeId": {
"type": "string",
"pattern": "^[A-Za-z0-9][A-Za-z0-9_-]{0,63}$"
},
"newId": {
"type": "string",
"pattern": "^[A-Za-z0-9][A-Za-z0-9_-]{0,63}$"
},
"name": {
"type": "string",
"maxLength": 80
},
"label": {
"type": "string",
"maxLength": 80
},
"offset": {
"type": "object",
"properties": {
"x": {
"type": "number",
"minimum": -2000,
"maximum": 2000,
"description": "SVG x coordinate"
},
"y": {
"type": "number",
"minimum": -2000,
"maximum": 2000,
"description": "SVG y coordinate"
}
},
"required": [
"x",
"y"
],
"additionalProperties": false
}
},
"required": [
"op",
"elementId",
"nodeId",
"newId"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"op": {
"const": "remove_node"
},
"elementId": {
"type": "string",
"pattern": "^[A-Za-z0-9][A-Za-z0-9_-]{0,63}$"
},
"nodeId": {
"type": "string",
"pattern": "^[A-Za-z0-9][A-Za-z0-9_-]{0,63}$"
}
},
"required": [
"op",
"elementId",
"nodeId"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"op": {
"const": "set_semantics"
},
"elementId": {
"type": "string",
"pattern": "^[A-Za-z0-9][A-Za-z0-9_-]{0,63}$"
},
"nodeIds": {
"type": "array",
"minItems": 1,
"maxItems": 60,
"items": {
"type": "string",
"pattern": "^[A-Za-z0-9][A-Za-z0-9_-]{0,63}$"
}
},
"role": {
"type": "string",
"enum": [
"primary",
"secondary",
"accent",
"utility"
]
},
"group": {
"type": "string",
"pattern": "^[A-Za-z0-9][A-Za-z0-9_-]{0,63}$"
}
},
"required": [
"op",
"elementId",
"nodeIds"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"op": {
"const": "update_element"
},
"elementId": {
"type": "string",
"pattern": "^[A-Za-z0-9][A-Za-z0-9_-]{0,63}$"
},
"changes": {
"type": "object",
"properties": {
"name": {
"type": "string",
"maxLength": 80
},
"position": {
"type": "object",
"properties": {
"x": {
"type": "number",
"minimum": -2000,
"maximum": 2000,
"description": "SVG x coordinate"
},
"y": {
"type": "number",
"minimum": -2000,
"maximum": 2000,
"description": "SVG y coordinate"
}
},
"required": [
"x",
"y"
],
"additionalProperties": false
},
"scale": {
"type": "number",
"minimum": 0.01,
"maximum": 10,
"description": ""
},
"rotation": {
"type": "number",
"minimum": -1080,
"maximum": 1080,
"description": "Degrees"
},
"opacity": {
"type": "number",
"minimum": 0,
"maximum": 1,
"description": ""
},
"order": {
"type": "integer",
"minimum": -100,
"maximum": 100
},
"visible": {
"type": "boolean"
},
"locked": {
"type": "boolean"
}
},
"minProperties": 1,
"additionalProperties": false
}
},
"required": [
"op",
"elementId",
"changes"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"op": {
"const": "remove_element"
},
"elementId": {
"type": "string",
"pattern": "^[A-Za-z0-9][A-Za-z0-9_-]{0,63}$"
}
},
"required": [
"op",
"elementId"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"op": {
"const": "set_scene"
},
"name": {
"type": "string",
"maxLength": 80
},
"backgroundColor": {
"type": "string",
"pattern": "^(#[0-9a-fA-F]{3,8}|rgba?\\(\\s*\\d{1,3}\\s*,\\s*\\d{1,3}\\s*,\\s*\\d{1,3}\\s*(,\\s*(0|1|0?\\.\\d+)\\s*)?\\))$",
"description": "Hex, rgb(), or rgba()"
}
},
"required": [
"op"
],
"additionalProperties": false
}
]
}
}
},
"required": [
"baseRevision",
"operations"
],
"additionalProperties": false
}
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