laydyne.com
Describe your space and workflow to AI. Build layouts, adapt process scenarios, and compare simulations through MCP or the built-in assistant.
First seen 2026-10-05 · Last seen 2026-10-05 · Source: webmcp.com
Answer 27 · Act 33 · Transact 4 · Score: Not yet scored
Tool inspector
create_space
Replace the active floor with an editable 3D space; other floors of the building stay as they are, and so do the building’s name and the floor’s underlay. To start afresh in a tab that holds another project, give fresh: true (a new project of this one space; the chat stays). Neither fresh nor a plain replacement drops parts the user locked: the call is refused with code locked_parts, naming them and the ways on (export_project first, or create the space on a new floor area, or, only when the user asks, unlock them). Parts are boxes with a height (optionally turned by rotation, raised by y, or given a polygon footprint), not a mesh. Object IDs, labels and heights can be omitted. addArray places a prepared box or polygon part in a two-direction array without listing every cell. Robot settings/stations get illustrative defaults. Clears previous simulation results; Undo restores the previous space. Simulation requires an explicit simulation tool call within the account’s current access. No application AI API call.
Page: /studio
Input schema
| Property | Type | Required | Description |
|---|---|---|---|
expectedRevision |
string | yes | Use revision from the most recent get_space or successful edit. |
name |
string | yes | — |
kind |
string | no | — |
width |
number | no | Metres along x; taken from the outline when one is given. |
depth |
number | no | Metres along z; taken from the outline when one is given. |
outline |
array | no | The floor boundary as a simple polygon, corners in order (either winding), metres. Its bounding box becomes width × depth: it is moved to the origin, and parts and stations move with it. Parts are not clipped to it; check_space reports those outside it. |
holes |
array | no | Openings in the floor (an atrium, a courtyard), each a simple polygon inside the outline, apart from each other. [] removes them. |
task |
string | no | — |
scaleConfirmed |
boolean | no | Ignored: only the user confirms dimensions, with the Measured box in the editor. A new or resized space is unconfirmed. |
objects |
array | no | — |
addArray |
array | no | — |
fresh |
boolean | no | Start a new project with this space, named after it: the other floors, the underlays, scenarios, saved options and comparisons, the latest run and named views go (one Undo brings them back); the chat and the display settings stay. Without it only the active floor is replaced. |
operationId |
string | no | Your own unique name for this change, such as a UUID; optional. Sending the same call again with the same operationId returns the earlier result (replayed: true) instead of applying it twice, and get_operation tells whether it applied. Use a new one for each new change. |
requestGroupId |
string | no | Attach this live edit to an open request group. Requires a fixed operationId and the current owned expectedRevision. Only the advertised five editing tools support groups. |
Raw JSON schema
{
"type": "object",
"properties": {
"expectedRevision": {
"type": "string",
"minLength": 1,
"maxLength": 80,
"description": "Use revision from the most recent get_space or successful edit."
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 80
},
"kind": {
"default": "office",
"type": "string",
"enum": [
"office",
"facility",
"home",
"factory"
]
},
"width": {
"description": "Metres along x; taken from the outline when one is given.",
"type": "number",
"minimum": 0.1,
"maximum": 500
},
"depth": {
"description": "Metres along z; taken from the outline when one is given.",
"type": "number",
"minimum": 0.1,
"maximum": 500
},
"outline": {
"minItems": 3,
"maxItems": 64,
"type": "array",
"items": {
"type": "object",
"properties": {
"x": {
"type": "number",
"minimum": -500,
"maximum": 500
},
"z": {
"type": "number",
"minimum": -500,
"maximum": 500
}
},
"required": [
"x",
"z"
],
"additionalProperties": false
},
"description": "The floor boundary as a simple polygon, corners in order (either winding), metres. Its bounding box becomes width × depth: it is moved to the origin, and parts and stations move with it. Parts are not clipped to it; check_space reports those outside it."
},
"holes": {
"maxItems": 32,
"type": "array",
"items": {
"minItems": 3,
"maxItems": 64,
"type": "array",
"items": {
"type": "object",
"properties": {
"x": {
"type": "number",
"minimum": -500,
"maximum": 500
},
"z": {
"type": "number",
"minimum": -500,
"maximum": 500
}
},
"required": [
"x",
"z"
],
"additionalProperties": false
}
},
"description": "Openings in the floor (an atrium, a courtyard), each a simple polygon inside the outline, apart from each other. [] removes them."
},
"task": {
"default": "clean",
"type": "string",
"enum": [
"clean",
"transport"
]
},
"scaleConfirmed": {
"default": false,
"description": "Ignored: only the user confirms dimensions, with the Measured box in the editor. A new or resized space is unconfirmed.",
"type": "boolean"
},
"objects": {
"default": [],
"maxItems": 1000,
"type": "array",
"items": {
"type": "object",
"properties": {
"kind": {
"type": "string",
"enum": [
"wall",
"column",
"zone",
"desk",
"table",
"chair",
"sofa",
"cabinet",
"shelf",
"display",
"counter",
"rack",
"pallet",
"machine",
"booth",
"stage",
"bed",
"plant",
"block",
"partition",
"door",
"window",
"stairs",
"elevator",
"escalator",
"round_table",
"bookshelf",
"locker",
"whiteboard",
"wardrobe",
"kitchen",
"fridge",
"rug",
"checkout",
"fridge_case",
"clothes_rack",
"kiosk",
"conveyor",
"workbench",
"roll_cage",
"container",
"tank",
"forklift",
"charger",
"dock_door",
"seating_row",
"podium",
"screen",
"barrier",
"building",
"parking",
"road",
"sidewalk",
"lawn",
"tree",
"car",
"truck",
"fence",
"gate",
"bench",
"pole",
"person",
"toilet",
"washbasin",
"urinal",
"atm",
"pos_terminal",
"coffee_machine",
"oven",
"dishwasher",
"microwave",
"stool",
"parasol",
"showcase",
"menu_board",
"planter",
"sign",
"shopping_cart",
"cart_corral",
"bicycle",
"dock_shelter",
"dock_leveler",
"wheel_stop",
"fire_extinguisher",
"robot_arm",
"mobile_robot",
"pod",
"sorter",
"spiral_conveyor",
"chute",
"carton_erector",
"aircraft",
"jet_bridge",
"baggage_carousel",
"security_scanner",
"metal_detector",
"self_checkout",
"platform_trolley",
"crate_stack",
"toilet_cubicle",
"gable_roof",
"barrel_roof",
"solid"
]
},
"locked": {
"type": "boolean"
},
"solid": {
"type": "object",
"properties": {
"version": {
"type": "number",
"const": 1
},
"recipe": {
"oneOf": [
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "extrude"
},
"axis": {
"type": "string",
"enum": [
"x",
"y",
"z"
]
},
"profile": {
"minItems": 3,
"maxItems": 32,
"type": "array",
"items": {
"type": "object",
"properties": {
"u": {
"type": "number",
"minimum": 0,
"maximum": 1
},
"v": {
"type": "number",
"minimum": 0,
"maximum": 1
}
},
"required": [
"u",
"v"
],
"additionalProperties": false
}
}
},
"required": [
"type",
"axis",
"profile"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "revolve"
},
"profile": {
"minItems": 3,
"maxItems": 32,
"type": "array",
"items": {
"type": "object",
"properties": {
"u": {
"type": "number",
"minimum": 0,
"maximum": 1
},
"v": {
"type": "number",
"minimum": 0,
"maximum": 1
}
},
"required": [
"u",
"v"
],
"additionalProperties": false
}
},
"startDegrees": {
"type": "number",
"minimum": -180,
"maximum": 180
},
"sweepDegrees": {
"type": "number",
"minimum": 0.1,
"maximum": 360
}
},
"required": [
"type",
"profile",
"sweepDegrees"
],
"additionalProperties": false
}
]
},
"rotation": {
"type": "object",
"properties": {
"x": {
"type": "number",
"minimum": -180,
"maximum": 180
},
"y": {
"type": "number",
"minimum": -180,
"maximum": 180
},
"z": {
"type": "number",
"minimum": -180,
"maximum": 180
}
},
"required": [
"x",
"y",
"z"
],
"additionalProperties": false
},
"mirror": {
"type": "object",
"properties": {
"x": {
"type": "boolean"
},
"y": {
"type": "boolean"
},
"z": {
"type": "boolean"
}
},
"required": [
"x",
"y",
"z"
],
"additionalProperties": false
}
},
"required": [
"version",
"recipe"
],
"additionalProperties": false,
"description": "Closed editable solid v1. Profile u/v are 0..1: extrusion section (axis y: x/z, axis x: z/y, axis z: x/y); revolve radius/height. w/d/h are reference dimensions. Mirror around reference-box centre, then right-handed X→Y→Z degree rotations around that centre, then outer plan rotation and placement. Partial revolutions (0.1..359.9 degrees) have closed end caps; exactly 360 is a full turn. No holes. Curves use deterministic 64 segments/full turn. blocks:false explicitly marks decoration; unsupported blocking 3D geometry cannot be used as a routing proxy."
},
"rotation": {
"description": "Degrees counter-clockwise on the plan about the centre of the box; 0 when omitted. x/z/w/d stay the unrotated box. A multiple of 90° is stored as the turned box (w/d swapped for a quarter turn) without rotation, the turn of a part with a front kept in facing.",
"type": "number",
"exclusiveMinimum": -180,
"maximum": 180
},
"passageHeading": {
"description": "Physical positive normal of a rectangular door/dock_door/gate in its canonical box frame, degrees (-180,180]; effective heading adds rotation. 0 toward +x, 90 toward -z. Permission is selected per agent by oneWayPassages.",
"type": "number",
"exclusiveMinimum": -180,
"maximum": 180
},
"facing": {
"description": "Which way a part with a front (catalog front: true, e.g. chairs, vehicles, stairs, toilets) faces within its box: the quarter or half turn, degrees counter-clockwise on the plan, that a rotation of 90°, 180° or -90° left; 0 when omitted: front toward +z (south); 90 toward +x (east), 180 or -180 toward -z (north), -90 or 270 toward -x (west). Set it to turn the front without moving the box; rotation, turn and rotate turn the front with the box. Display only; other kinds ignore it.",
"type": "number",
"enum": [
-180,
-90,
0,
90,
180,
270
]
},
"y": {
"description": "Elevation of the underside above the floor, metres; 0 when omitted.",
"type": "number",
"minimum": 0,
"maximum": 50
},
"footprint": {
"description": "Polygon base as {x,z} vertices in the unrotated box (0..w, 0..d), 3-32, no self-crossing, spanning the whole box; the box when omitted.",
"minItems": 3,
"maxItems": 32,
"type": "array",
"items": {
"type": "object",
"properties": {
"x": {
"type": "number",
"minimum": 0,
"maximum": 500
},
"z": {
"type": "number",
"minimum": 0,
"maximum": 500
}
},
"required": [
"x",
"z"
],
"additionalProperties": false
}
},
"blocks": {
"description": "Whether the part blocks movement; overrides the kind default.",
"type": "boolean"
},
"color": {
"type": "integer",
"minimum": 0,
"maximum": 16777215
},
"material": {
"type": "object",
"properties": {
"materialId": {
"type": "string",
"minLength": 1,
"maxLength": 40,
"pattern": "^[a-zA-Z0-9_-]+$"
},
"override": {
"type": "object",
"properties": {
"baseColor": {
"type": "integer",
"minimum": 0,
"maximum": 16777215
},
"roughness": {
"type": "number",
"minimum": 0,
"maximum": 1
},
"metalness": {
"type": "number",
"minimum": 0,
"maximum": 1
},
"opacity": {
"type": "number",
"minimum": 0,
"maximum": 1
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
"referenceIds": {
"maxItems": 8,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 40,
"pattern": "^[a-zA-Z0-9_-]+$"
}
},
"accent": {
"description": "A second colour 0xRRGGBB for the members drawn apart: a rack's beams (its posts keep the structure colour), a sign's face, a door's leaf. Display only.",
"type": "integer",
"minimum": 0,
"maximum": 16777215
},
"doorType": {
"description": "How a door opens, for its plan symbol and 3D picture: hinged (one leaf, the default), double, sliding, automatic (two sliding leaves) or revolving. Doors and gates only; display only.",
"type": "string",
"enum": [
"hinged",
"double",
"sliding",
"automatic",
"revolving"
]
},
"text": {
"description": "Words shown on it: a sign or menu board carries them on its face, a floor marking (zone, parking, road, sidewalk, lawn, rug) painted on the floor. Display only.",
"type": "string",
"minLength": 1,
"maxLength": 60
},
"symbol": {
"description": "A symbol painted on a floor marking: arrow (along its length, turned with it), wheelchair (the accessible bay sign), crosswalk (zebra stripes across its length), bays (parking bay lines every 2.5 m along its length) or hatch (a no-go area). Floor markings only; display only.",
"type": "string",
"enum": [
"arrow",
"wheelchair",
"crosswalk",
"bays",
"hatch"
]
},
"group": {
"type": "string",
"minLength": 1,
"maxLength": 40
},
"tags": {
"description": "Up to 8 tags, each /^[a-z0-9_-]{1,24}$/, for scenarios to refer to.",
"maxItems": 8,
"type": "array",
"items": {
"type": "string",
"pattern": "^[a-z0-9_-]{1,24}$"
}
},
"source": {
"description": "Where its position and size come from: drawing (read off a plan), measured (on site) or assumed (a typical size, or hidden in the drawing). Display only: not part of any calculation.",
"type": "string",
"enum": [
"drawing",
"measured",
"assumed"
]
},
"note": {
"description": "A note for whoever checks the model (what was assumed, what to confirm on site), up to 300 characters; not drawn on the plan and not part of any calculation.",
"type": "string",
"minLength": 1,
"maxLength": 300
},
"id": {
"type": "string",
"minLength": 1,
"maxLength": 60
},
"label": {
"type": "string",
"minLength": 1,
"maxLength": 60
},
"x": {
"type": "number",
"minimum": 0
},
"z": {
"type": "number",
"minimum": 0
},
"w": {
"type": "number",
"minimum": 0.02,
"maximum": 500
},
"d": {
"type": "number",
"minimum": 0.02,
"maximum": 500
},
"h": {
"type": "number",
"minimum": 0.01,
"maximum": 50
},
"polygon": {
"description": "Instead of x/z/w/d: the corners of the part on the floor, in order, metres (3-32, no self-crossing); x, z, w, d and the footprint are derived from them, unturned.",
"minItems": 3,
"maxItems": 32,
"type": "array",
"items": {
"type": "object",
"properties": {
"x": {
"type": "number",
"minimum": 0,
"maximum": 500
},
"z": {
"type": "number",
"minimum": 0,
"maximum": 500
}
},
"required": [
"x",
"z"
],
"additionalProperties": false
}
}
},
"required": [
"kind"
],
"additionalProperties": false,
"description": "A prepared part. Give kind and the minimum x/z corner; omit w/d/h to use the part size listed in get_space.parts. Or give polygon (corners on the floor) instead of x/z/w/d for a part of any outline."
}
},
"addArray": {
"default": [],
"maxItems": 20,
"type": "array",
"items": {
"type": "object",
"properties": {
"part": {
"type": "object",
"properties": {
"kind": {
"type": "string",
"enum": [
"wall",
"column",
"zone",
"desk",
"table",
"chair",
"sofa",
"cabinet",
"shelf",
"display",
"counter",
"rack",
"pallet",
"machine",
"booth",
"stage",
"bed",
"plant",
"block",
"partition",
"door",
"window",
"stairs",
"elevator",
"escalator",
"round_table",
"bookshelf",
"locker",
"whiteboard",
"wardrobe",
"kitchen",
"fridge",
"rug",
"checkout",
"fridge_case",
"clothes_rack",
"kiosk",
"conveyor",
"workbench",
"roll_cage",
"container",
"tank",
"forklift",
"charger",
"dock_door",
"seating_row",
"podium",
"screen",
"barrier",
"building",
"parking",
"road",
"sidewalk",
"lawn",
"tree",
"car",
"truck",
"fence",
"gate",
"bench",
"pole",
"person",
"toilet",
"washbasin",
"urinal",
"atm",
"pos_terminal",
"coffee_machine",
"oven",
"dishwasher",
"microwave",
"stool",
"parasol",
"showcase",
"menu_board",
"planter",
"sign",
"shopping_cart",
"cart_corral",
"bicycle",
"dock_shelter",
"dock_leveler",
"wheel_stop",
"fire_extinguisher",
"robot_arm",
"mobile_robot",
"pod",
"sorter",
"spiral_conveyor",
"chute",
"carton_erector",
"aircraft",
"jet_bridge",
"baggage_carousel",
"security_scanner",
"metal_detector",
"self_checkout",
"platform_trolley",
"crate_stack",
"toilet_cubicle",
"gable_roof",
"barrel_roof",
"solid"
]
},
"locked": {
"type": "boolean"
},
"solid": {
"type": "object",
"properties": {
"version": {
"type": "number",
"const": 1
},
"recipe": {
"oneOf": [
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "extrude"
},
"axis": {
"type": "string",
"enum": [
"x",
"y",
"z"
]
},
"profile": {
"minItems": 3,
"maxItems": 32,
"type": "array",
"items": {
"type": "object",
"properties": {
"u": {
"type": "number",
"minimum": 0,
"maximum": 1
},
"v": {
"type": "number",
"minimum": 0,
"maximum": 1
}
},
"required": [
"u",
"v"
],
"additionalProperties": false
}
}
},
"required": [
"type",
"axis",
"profile"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "revolve"
},
"profile": {
"minItems": 3,
"maxItems": 32,
"type": "array",
"items": {
"type": "object",
"properties": {
"u": {
"type": "number",
"minimum": 0,
"maximum": 1
},
"v": {
"type": "number",
"minimum": 0,
"maximum": 1
}
},
"required": [
"u",
"v"
],
"additionalProperties": false
}
},
"startDegrees": {
"type": "number",
"minimum": -180,
"maximum": 180
},
"sweepDegrees": {
"type": "number",
"minimum": 0.1,
"maximum": 360
}
},
"required": [
"type",
"profile",
"sweepDegrees"
],
"additionalProperties": false
}
]
},
"rotation": {
"type": "object",
"properties": {
"x": {
"type": "number",
"minimum": -180,
"maximum": 180
},
"y": {
"type": "number",
"minimum": -180,
"maximum": 180
},
"z": {
"type": "number",
"minimum": -180,
"maximum": 180
}
},
"required": [
"x",
"y",
"z"
],
"additionalProperties": false
},
"mirror": {
"type": "object",
"properties": {
"x": {
"type": "boolean"
},
"y": {
"type": "boolean"
},
"z": {
"type": "boolean"
}
},
"required": [
"x",
"y",
"z"
],
"additionalProperties": false
}
},
"required": [
"version",
"recipe"
],
"additionalProperties": false,
"description": "Closed editable solid v1. Profile u/v are 0..1: extrusion section (axis y: x/z, axis x: z/y, axis z: x/y); revolve radius/height. w/d/h are reference dimensions. Mirror around reference-box centre, then right-handed X→Y→Z degree rotations around that centre, then outer plan rotation and placement. Partial revolutions (0.1..359.9 degrees) have closed end caps; exactly 360 is a full turn. No holes. Curves use deterministic 64 segments/full turn. blocks:false explicitly marks decoration; unsupported blocking 3D geometry cannot be used as a routing proxy."
},
"rotation": {
"description": "Degrees counter-clockwise on the plan about the centre of the box; 0 when omitted. x/z/w/d stay the unrotated box. A multiple of 90° is stored as the turned box (w/d swapped for a quarter turn) without rotation, the turn of a part with a front kept in facing.",
"type": "number",
"exclusiveMinimum": -180,
"maximum": 180
},
"passageHeading": {
"description": "Physical positive normal of a rectangular door/dock_door/gate in its canonical box frame, degrees (-180,180]; effective heading adds rotation. 0 toward +x, 90 toward -z. Permission is selected per agent by oneWayPassages.",
"type": "number",
"exclusiveMinimum": -180,
"maximum": 180
},
"facing": {
"description": "Which way a part with a front (catalog front: true, e.g. chairs, vehicles, stairs, toilets) faces within its box: the quarter or half turn, degrees counter-clockwise on the plan, that a rotation of 90°, 180° or -90° left; 0 when omitted: front toward +z (south); 90 toward +x (east), 180 or -180 toward -z (north), -90 or 270 toward -x (west). Set it to turn the front without moving the box; rotation, turn and rotate turn the front with the box. Display only; other kinds ignore it.",
"type": "number",
"enum": [
-180,
-90,
0,
90,
180,
270
]
},
"y": {
"description": "Elevation of the underside above the floor, metres; 0 when omitted.",
"type": "number",
"minimum": 0,
"maximum": 50
},
"footprint": {
"description": "Polygon base as {x,z} vertices in the unrotated box (0..w, 0..d), 3-32, no self-crossing, spanning the whole box; the box when omitted.",
"minItems": 3,
"maxItems": 32,
"type": "array",
"items": {
"type": "object",
"properties": {
"x": {
"type": "number",
"minimum": 0,
"maximum": 500
},
"z": {
"type": "number",
"minimum": 0,
"maximum": 500
}
},
"required": [
"x",
"z"
],
"additionalProperties": false
}
},
"blocks": {
"description": "Whether the part blocks movement; overrides the kind default.",
"type": "boolean"
},
"color": {
"type": "integer",
"minimum": 0,
"maximum": 16777215
},
"material": {
"type": "object",
"properties": {
"materialId": {
"type": "string",
"minLength": 1,
"maxLength": 40,
"pattern": "^[a-zA-Z0-9_-]+$"
},
"override": {
"type": "object",
"properties": {
"baseColor": {
"type": "integer",
"minimum": 0,
"maximum": 16777215
},
"roughness": {
"type": "number",
"minimum": 0,
"maximum": 1
},
"metalness": {
"type": "number",
"minimum": 0,
"maximum": 1
},
"opacity": {
"type": "number",
"minimum": 0,
"maximum": 1
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
"referenceIds": {
"maxItems": 8,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 40,
"pattern": "^[a-zA-Z0-9_-]+$"
}
},
"accent": {
"description": "A second colour 0xRRGGBB for the members drawn apart: a rack's beams (its posts keep the structure colour), a sign's face, a door's leaf. Display only.",
"type": "integer",
"minimum": 0,
"maximum": 16777215
},
"doorType": {
"description": "How a door opens, for its plan symbol and 3D picture: hinged (one leaf, the default), double, sliding, automatic (two sliding leaves) or revolving. Doors and gates only; display only.",
"type": "string",
"enum": [
"hinged",
"double",
"sliding",
"automatic",
"revolving"
]
},
"text": {
"description": "Words shown on it: a sign or menu board carries them on its face, a floor marking (zone, parking, road, sidewalk, lawn, rug) painted on the floor. Display only.",
"type": "string",
"minLength": 1,
"maxLength": 60
},
"symbol": {
"description": "A symbol painted on a floor marking: arrow (along its length, turned with it), wheelchair (the accessible bay sign), crosswalk (zebra stripes across its length), bays (parking bay lines every 2.5 m along its length) or hatch (a no-go area). Floor markings only; display only.",
"type": "string",
"enum": [
"arrow",
"wheelchair",
"crosswalk",
"bays",
"hatch"
]
},
"group": {
"type": "string",
"minLength": 1,
"maxLength": 40
},
"tags": {
"description": "Up to 8 tags, each /^[a-z0-9_-]{1,24}$/, for scenarios to refer to.",
"maxItems": 8,
"type": "array",
"items": {
"type": "string",
"pattern": "^[a-z0-9_-]{1,24}$"
}
},
"source": {
"description": "Where its position and size come from: drawing (read off a plan), measured (on site) or assumed (a typical size, or hidden in the drawing). Display only: not part of any calculation.",
"type": "string",
"enum": [
"drawing",
"measured",
"assumed"
]
},
"note": {
"description": "A note for whoever checks the model (what was assumed, what to confirm on site), up to 300 characters; not drawn on the plan and not part of any calculation.",
"type": "string",
"minLength": 1,
"maxLength": 300
},
"id": {
"type": "string",
"minLength": 1,
"maxLength": 60
},
"label": {
"type": "string",
"minLength": 1,
"maxLength": 60
},
"x": {
"type": "number",
"minimum": 0
},
"z": {
"type": "number",
"minimum": 0
},
"w": {
"type": "number",
"minimum": 0.02,
"maximum": 500
},
"d": {
"type": "number",
"minimum": 0.02,
"maximum": 500
},
"h": {
"type": "number",
"minimum": 0.01,
"maximum": 50
},
"polygon": {
"description": "Instead of x/z/w/d: the corners of the part on the floor, in order, metres (3-32, no self-crossing); x, z, w, d and the footprint are derived from them, unturned.",
"minItems": 3,
"maxItems": 32,
"type": "array",
"items": {
"type": "object",
"properties": {
"x": {
"type": "number",
"minimum": 0,
"maximum": 500
},
"z": {
"type": "number",
"minimum": 0,
"maximum": 500
}
},
"required": [
"x",
"z"
],
"additionalProperties": false
}
}
},
"required": [
"kind"
],
"additionalProperties": false,
"description": "The part to repeat. Omit part.id: each cell needs a distinct ID. Set idPrefix on the array to choose stable IDs. Give x/z or polygon as for an ordinary part."
},
"rows": {
"type": "integer",
"minimum": 1,
"maximum": 50
},
"columns": {
"type": "integer",
"minimum": 1,
"maximum": 50
},
"rowStep": {
"type": "object",
"properties": {
"dx": {
"type": "number",
"minimum": -500,
"maximum": 500
},
"dz": {
"type": "number",
"minimum": -500,
"maximum": 500
}
},
"required": [
"dx",
"dz"
],
"additionalProperties": false,
"description": "Metres from one row or column to the next; diagonal steps are allowed."
},
"columnStep": {
"type": "object",
"properties": {
"dx": {
"type": "number",
"minimum": -500,
"maximum": 500
},
"dz": {
"type": "number",
"minimum": -500,
"maximum": 500
}
},
"required": [
"dx",
"dz"
],
"additionalProperties": false,
"description": "Metres from one row or column to the next; diagonal steps are allowed."
},
"idPrefix": {
"description": "IDs of the cells, row by row: prefix-1, prefix-2, …; generated when omitted.",
"type": "string",
"minLength": 1,
"maxLength": 50,
"pattern": "^[A-Za-z0-9_-]+$"
}
},
"required": [
"part",
"rows",
"columns",
"rowStep",
"columnStep"
],
"additionalProperties": false,
"description": "Place a part at every row/column offset from part.x/z (or shift every corner of part.polygon). The first cell is at the supplied position; rows and columns include it. IDs are generated, or idPrefix-1, idPrefix-2, … row by row. In part.label, {n} becomes the cell number and {row}/{column} its row and column (from 1): \"Shelf {n}\", \"Seat {row}-{column}\"."
}
},
"fresh": {
"default": false,
"description": "Start a new project with this space, named after it: the other floors, the underlays, scenarios, saved options and comparisons, the latest run and named views go (one Undo brings them back); the chat and the display settings stay. Without it only the active floor is replaced.",
"type": "boolean"
},
"operationId": {
"type": "string",
"pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,99}$",
"description": "Your own unique name for this change, such as a UUID; optional. Sending the same call again with the same operationId returns the earlier result (replayed: true) instead of applying it twice, and get_operation tells whether it applied. Use a new one for each new change."
},
"requestGroupId": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "Attach this live edit to an open request group. Requires a fixed operationId and the current owned expectedRevision. Only the advertised five editing tools support groups."
}
},
"required": [
"expectedRevision",
"name"
],
"additionalProperties": false
}
Similar websites
eworker.ca
E-Worker is business infrastructure powered by AI, with focused apps and connected business work.
takemeup.cv
Free CV builder: make a polished, ATS-friendly CV in minutes. No watermarks, no sign-up. Import from LinkedIn, tailor to any job, export PDF.
urban-planning-copilot.heisenbug.in
Urban Planning Copilot
vide.zerdalu.com
Vide