uidesigneditor.com
A simple and free ui design tool. Select, cut, move and resize. Work together with your AI. No signup.
First seen 2026-11-05 · Last seen 2026-11-05 · Source: webmcp.com
Answer 1 · Act 13 · Transact 0 · Score: Not yet scored
Tool inspector
edit_design
Add, move, resize, restyle, hide or remove items, or set the page size and color, in one Undo step. Supply only the changes you need; other fields stay as they are. New items go on top in the order supplied. To copy an item, add its fields with a new or omitted id. Canvas size changes do not scale items unless you also update their boxes. Use arrange_items for item order and fit_items_to_content for a tight box. Read the latest projectId and revision first. Returns the design, latest revision and addedIds.
Page: /
Input schema
| Property | Type | Required | Description |
|---|---|---|---|
projectId |
string | yes | Open project id from the latest tool result. Use select_project first to edit another project. |
revision |
string | yes | Revision from the latest tool result. Call read_design again if the page changed; never reuse an old revision after an edit. |
addItems |
array | no | New items to add on top. Each needs kind, x, y, w and h; the editor fills omitted style fields. |
updates |
array | no | Changes to existing items; use each id once. |
removeIds |
array | no | Existing items to remove. Do not also update these ids in the same call. |
canvas |
object | no | Page size and color. Supply all three fields. Width times height must be at most 24 million pixels. |
Raw JSON schema
{
"type": "object",
"properties": {
"projectId": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Open project id from the latest tool result. Use select_project first to edit another project."
},
"revision": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Revision from the latest tool result. Call read_design again if the page changed; never reuse an old revision after an edit."
},
"addItems": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"maxLength": 200,
"description": "Name shown in the item list."
},
"x": {
"type": "number",
"minimum": -16000,
"maximum": 16000,
"description": "Left edge in canvas pixels; 0 is the left edge of the page."
},
"y": {
"type": "number",
"minimum": -16000,
"maximum": 16000,
"description": "Top edge in canvas pixels; 0 is the top of the page."
},
"w": {
"type": "number",
"minimum": 0.1,
"maximum": 16000,
"description": "Box width in canvas pixels."
},
"h": {
"type": "number",
"minimum": 0.1,
"maximum": 16000,
"description": "Box height in canvas pixels."
},
"text": {
"type": "string",
"maxLength": 100000,
"description": "Text shown by this item."
},
"fontSize": {
"type": "number",
"minimum": 1,
"maximum": 1024,
"description": "Text size in pixels."
},
"iconSize": {
"type": "number",
"minimum": 1,
"maximum": 2048,
"description": "Icon size in pixels."
},
"icon": {
"type": "string",
"maxLength": 100,
"description": "Icon name from read_design with iconSearch; use an empty string to clear it."
},
"color": {
"type": "string",
"maxLength": 128,
"description": "Text or icon color, such as #ffffff."
},
"background": {
"type": "string",
"maxLength": 128,
"description": "Fill color, such as #000000 or transparent."
},
"borderColor": {
"type": "string",
"maxLength": 128,
"description": "Border color."
},
"borderWidth": {
"type": "number",
"minimum": 0,
"maximum": 1000,
"description": "Border width in pixels; 0 hides it."
},
"radius": {
"type": "number",
"minimum": 0,
"maximum": 16000,
"description": "Corner radius in pixels."
},
"opacity": {
"type": "number",
"minimum": 0,
"maximum": 1,
"description": "Opacity from 0 (clear) to 1 (solid)."
},
"align": {
"enum": [
"left",
"center",
"right"
],
"description": "Text alignment within the box."
},
"fontWeight": {
"type": "number",
"minimum": 100,
"maximum": 900,
"description": "Text weight from 100 to 900; 400 is normal and 700 is bold."
},
"lineHeight": {
"type": "number",
"minimum": 0.1,
"maximum": 10,
"description": "Line height as a multiple of text size."
},
"fontFamily": {
"enum": [
"sans",
"serif"
],
"description": "Text face: sans or serif."
},
"wrap": {
"type": "boolean",
"description": "Whether text may wrap onto more than one line."
},
"hidden": {
"type": "boolean",
"description": "Hide this item without removing it."
},
"iconOffsetX": {
"type": "number",
"minimum": -16000,
"maximum": 16000,
"description": "Horizontal icon offset in pixels."
},
"highlightWord": {
"type": "string",
"maxLength": 10000,
"description": "Word or text to highlight in a reading item."
},
"highlightColor": {
"type": "string",
"maxLength": 128,
"description": "Fill color behind the highlighted text."
},
"contentScale": {
"type": "number",
"minimum": 0.001,
"maximum": 1000,
"description": "Scale the contents inside the box; 1 keeps their size."
},
"shape": {
"enum": [
"rectangle",
"arrow"
],
"description": "Shape type for a shape item; omit for a plain box."
},
"strokeWidth": {
"type": "number",
"minimum": 0.5,
"maximum": 1000,
"description": "Arrow line width in pixels."
},
"arrowStart": {
"type": "object",
"properties": {
"x": {
"type": "number",
"minimum": 0,
"maximum": 1,
"description": "Horizontal position within the item, from 0 at the left to 1 at the right."
},
"y": {
"type": "number",
"minimum": 0,
"maximum": 1,
"description": "Vertical position within the item, from 0 at the top to 1 at the bottom."
}
},
"required": [
"x",
"y"
],
"additionalProperties": false,
"description": "Arrow start within the item box, with each value from 0 to 1."
},
"arrowEnd": {
"type": "object",
"properties": {
"x": {
"type": "number",
"minimum": 0,
"maximum": 1,
"description": "Horizontal position within the item, from 0 at the left to 1 at the right."
},
"y": {
"type": "number",
"minimum": 0,
"maximum": 1,
"description": "Vertical position within the item, from 0 at the top to 1 at the bottom."
}
},
"required": [
"x",
"y"
],
"additionalProperties": false,
"description": "Arrow end within the item box, with each value from 0 to 1."
},
"src": {
"type": "string",
"maxLength": 40000000,
"pattern": "^data:(image/(png|gif)|video/mp4);base64,[A-Za-z0-9+/=]+$",
"description": "Full PNG, GIF, or MP4 data URL. Required for image and video items. MP4 videos loop with sound off. Use import_image for other picture types. Replacing src clears saved inner image edits."
},
"imageBase": {
"type": "boolean",
"description": "Marks a picture as the page background; keep the value returned by read_design."
},
"pictureFragment": {
"type": "boolean",
"description": "Marks a piece moved from a picture; keep the value returned by read_design."
},
"id": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Unique item id. Omit when adding an item to let the editor assign one."
},
"kind": {
"enum": [
"label",
"icon",
"shape",
"reading",
"tab",
"button",
"textbox",
"image",
"video"
],
"description": "Item type. Use shape with shape rectangle or arrow for shapes, and label for plain text."
}
},
"required": [
"kind",
"x",
"y",
"w",
"h"
],
"additionalProperties": false
},
"minItems": 0,
"maxItems": 5000,
"description": "New items to add on top. Each needs kind, x, y, w and h; the editor fills omitted style fields."
},
"updates": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Existing item id from read_design."
},
"changes": {
"type": "object",
"properties": {
"name": {
"type": "string",
"maxLength": 200,
"description": "Name shown in the item list."
},
"x": {
"type": "number",
"minimum": -16000,
"maximum": 16000,
"description": "Left edge in canvas pixels; 0 is the left edge of the page."
},
"y": {
"type": "number",
"minimum": -16000,
"maximum": 16000,
"description": "Top edge in canvas pixels; 0 is the top of the page."
},
"w": {
"type": "number",
"minimum": 0.1,
"maximum": 16000,
"description": "Box width in canvas pixels."
},
"h": {
"type": "number",
"minimum": 0.1,
"maximum": 16000,
"description": "Box height in canvas pixels."
},
"text": {
"type": "string",
"maxLength": 100000,
"description": "Text shown by this item."
},
"fontSize": {
"type": "number",
"minimum": 1,
"maximum": 1024,
"description": "Text size in pixels."
},
"iconSize": {
"type": "number",
"minimum": 1,
"maximum": 2048,
"description": "Icon size in pixels."
},
"icon": {
"type": "string",
"maxLength": 100,
"description": "Icon name from read_design with iconSearch; use an empty string to clear it."
},
"color": {
"type": "string",
"maxLength": 128,
"description": "Text or icon color, such as #ffffff."
},
"background": {
"type": "string",
"maxLength": 128,
"description": "Fill color, such as #000000 or transparent."
},
"borderColor": {
"type": "string",
"maxLength": 128,
"description": "Border color."
},
"borderWidth": {
"type": "number",
"minimum": 0,
"maximum": 1000,
"description": "Border width in pixels; 0 hides it."
},
"radius": {
"type": "number",
"minimum": 0,
"maximum": 16000,
"description": "Corner radius in pixels."
},
"opacity": {
"type": "number",
"minimum": 0,
"maximum": 1,
"description": "Opacity from 0 (clear) to 1 (solid)."
},
"align": {
"enum": [
"left",
"center",
"right"
],
"description": "Text alignment within the box."
},
"fontWeight": {
"type": "number",
"minimum": 100,
"maximum": 900,
"description": "Text weight from 100 to 900; 400 is normal and 700 is bold."
},
"lineHeight": {
"type": "number",
"minimum": 0.1,
"maximum": 10,
"description": "Line height as a multiple of text size."
},
"fontFamily": {
"enum": [
"sans",
"serif"
],
"description": "Text face: sans or serif."
},
"wrap": {
"type": "boolean",
"description": "Whether text may wrap onto more than one line."
},
"hidden": {
"type": "boolean",
"description": "Hide this item without removing it."
},
"iconOffsetX": {
"type": "number",
"minimum": -16000,
"maximum": 16000,
"description": "Horizontal icon offset in pixels."
},
"highlightWord": {
"type": "string",
"maxLength": 10000,
"description": "Word or text to highlight in a reading item."
},
"highlightColor": {
"type": "string",
"maxLength": 128,
"description": "Fill color behind the highlighted text."
},
"contentScale": {
"type": "number",
"minimum": 0.001,
"maximum": 1000,
"description": "Scale the contents inside the box; 1 keeps their size."
},
"shape": {
"enum": [
"rectangle",
"arrow"
],
"description": "Shape type for a shape item; omit for a plain box."
},
"strokeWidth": {
"type": "number",
"minimum": 0.5,
"maximum": 1000,
"description": "Arrow line width in pixels."
},
"arrowStart": {
"type": "object",
"properties": {
"x": {
"type": "number",
"minimum": 0,
"maximum": 1,
"description": "Horizontal position within the item, from 0 at the left to 1 at the right."
},
"y": {
"type": "number",
"minimum": 0,
"maximum": 1,
"description": "Vertical position within the item, from 0 at the top to 1 at the bottom."
}
},
"required": [
"x",
"y"
],
"additionalProperties": false,
"description": "Arrow start within the item box, with each value from 0 to 1."
},
"arrowEnd": {
"type": "object",
"properties": {
"x": {
"type": "number",
"minimum": 0,
"maximum": 1,
"description": "Horizontal position within the item, from 0 at the left to 1 at the right."
},
"y": {
"type": "number",
"minimum": 0,
"maximum": 1,
"description": "Vertical position within the item, from 0 at the top to 1 at the bottom."
}
},
"required": [
"x",
"y"
],
"additionalProperties": false,
"description": "Arrow end within the item box, with each value from 0 to 1."
},
"src": {
"type": "string",
"maxLength": 40000000,
"pattern": "^data:(image/(png|gif)|video/mp4);base64,[A-Za-z0-9+/=]+$",
"description": "Full PNG, GIF, or MP4 data URL. Required for image and video items. MP4 videos loop with sound off. Use import_image for other picture types. Replacing src clears saved inner image edits."
},
"imageBase": {
"type": "boolean",
"description": "Marks a picture as the page background; keep the value returned by read_design."
},
"pictureFragment": {
"type": "boolean",
"description": "Marks a piece moved from a picture; keep the value returned by read_design."
}
},
"required": [],
"additionalProperties": false,
"description": "Only the fields to change on this item. Item id and kind stay fixed."
}
},
"required": [
"id",
"changes"
],
"additionalProperties": false
},
"minItems": 0,
"maxItems": 5000,
"description": "Changes to existing items; use each id once."
},
"removeIds": {
"type": "array",
"items": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Existing item id from read_design."
},
"minItems": 0,
"maxItems": 5000,
"description": "Existing items to remove. Do not also update these ids in the same call."
},
"canvas": {
"type": "object",
"properties": {
"width": {
"type": "number",
"minimum": 1,
"maximum": 16000,
"description": "Page width in pixels, up to 16,000."
},
"height": {
"type": "number",
"minimum": 1,
"maximum": 16000,
"description": "Page height in pixels, up to 16,000."
},
"background": {
"type": "string",
"maxLength": 128,
"description": "Page fill color, such as #ffffff or transparent."
}
},
"required": [
"width",
"height",
"background"
],
"additionalProperties": false,
"description": "Page size and color. Supply all three fields. Width times height must be at most 24 million pixels."
}
},
"required": [
"projectId",
"revision"
],
"additionalProperties": false
}
Similar websites
morphus.myles4miles.chatgpt.site
Morphus is an AI-native workspace for designing worlds and generating playable game experiences.
damnpdfs.com
Install the DamnPDFs Codex plugin, pair a browser workspace and use PDF, image and file tools from your coding agent. Includes setup and privacy limits.
insignifi4nt.github.io
broCAD/M: local-first CAD and CAM for parametric design, wire EDM planning, simulation and controller export.
cabinet.varera.studio
The Cartographer's Cabinet