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
edit_floors
Edit the site in one batch, in the order: create or rename buildings (structures); remove buildings and floors; update floors; build buildings (buildStructures); add floors; duplicate and move buildings; disconnect, updateConnections, connect and cores; activate. A site may hold several buildings (a warehouse, an office block, towers, a car park), each a group of floor areas; the ground around them and bridges between them belong to none. buildStructures puts up a building of empty storeys with its lift and stairs in one step, duplicateStructures copies one with its parts and inner connections, cores adds a lift or stairs through every storey. Scenario places can name a building: {"tag": "unit", "structure": "C", "pick": "random"}. Level 0 is the ground floor, 1 the next level up, negative levels are basements; floors on the same level sit side by side at x/z (building metres). Add an empty floor with width/depth, or copyFrom an existing floor to repeat its parts (typical floors). connect joins two floors with a passage (a corridor on one level, a ramp between levels), stairs, an elevator or an escalator given only kind, from and to: the ends are placed automatically across facing edges (between levels, a ramp, stairs or an escalator reaches back into the lower floor) or on elevator, stairs or escalator parts of stacked floors; pass fromAt/toAt (floor-local metres) only to override. get_space.building.connections reports each length, rise, slope and notes such as ramps steeper than 1:12. activate chooses the floor that get_space.scene, create_space, check_space and simulate_space act on, and edit_space when given no floor; new floors can be given an id to activate them in the same batch. simulate_space works on one floor at a time; run_process_scenario and check_space reach route agents across floors along connections. 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 | no | — |
storyHeight |
number | no | — |
add |
array | no | elevation (m, floor surface height in the building) defaults to level × storyHeight; height (m, floor-to-floor) defaults to storyHeight. structure puts the floor in one of the site's buildings: then it stands on that building's floor below (its elevation plus its height; under the lowest, a storey below it), as high as that floor, at its place and size and named for the building, unless given. |
update |
array | no | null for elevation/height puts it back to the building default; structure moves the floor into one of the site's buildings, null takes it out of any. |
remove |
array | no | — |
copyContents |
array | no | Make existing floors' parts a copy of another floor's (same IDs, so later edits can list them together in edit_space.floors). Each target keeps its own outline, holes and connections; every part must fit on it. Runs after floors are added, copied and moved. |
connect |
array | no | Connect two floors: passage (a corridor on one level, a ramp between levels), stairs, elevator or escalator. Leave fromAt/toAt out to place the ends automatically. direction (forward = from → to) defaults to both, escalators to forward; speed (m/s) defaults to the agent's own, escalators to 0.5; capacity (agents at once) defaults to unlimited, escalators to one per 0.4 m of length. Escalator defaults are reported as assumptions: the speed is EN 115-1's general value, the capacity an estimate with no source. An elevator with cars (1–8) runs lift cars on its shaft (the elevator connections stacked at that place): capacity is then people per car, speed the car's (1 m/s when left out), doorSeconds the doors opening plus closing at a stop (4 s) and dwellSeconds the doors held open (2 s); those defaults are estimates with no source, reported as assumptions. Without cars an elevator is ridden like a corridor, capacity agents at once. flowPerMinute lets that many agents start along it per minute, first come first (a ticket gate, a turnstile, a door or a stair, from a site count or a standard you name); those after wait at its entrance, counted as waiting for the connection. Not on a lift with cars. |
updateConnections |
array | no | null for fromAt/toAt puts that end back to automatic; null for direction/speed/capacity puts it back to the default of the kind; null for flowPerMinute/cars/doorSeconds/dwellSeconds takes them off. A lift's cars, capacity, speed and stop times are read from its lowest connection that gives each: set them on every connection of the shaft (cores does). |
disconnect |
array | no | — |
structures |
array | no | Buildings on the site (a warehouse, an office block, a tower, a car park): create one by a new id, or rename/recolour an existing one (color 0xRRGGBB as a number; null: the theme's). A building groups floors for editing, display and scenario places; routes still follow connections. |
buildStructures |
array | no | Put up a building of empty storeys over a footprint (x, z: its corner in site metres; width × depth), each storey a floor of that building (storeyHeight for all, or storeyHeights one by one). lift and stairs (site metres, on the footprint) run through every storey; stairs climb along z (or x) and turn back at each landing. Standing on a ground floor area (one of no building) at the same elevation, the footprint becomes a hole in it when it fits inside; it must not overlap another building. entrance connects it to that ground with a doorway; otherwise connect its entrance with a passage (connect places the ends of a building standing in the ground at the middle of its most open side). |
duplicateStructures |
array | no | Copy a building dx, dz metres away: its floors with their parts and its own stairs, lifts and inner passages. Connections to the rest of the site are not copied. |
moveStructures |
array | no | Move a building across the site (dx, dz) or raise it (dy), all its floors together. |
removeStructures |
array | no | Take a building off the site: keep its floors (they belong to no building afterwards) or remove them with their connections. |
cores |
array | no | A lift or stairs through every storey of a building at one place (site metres): one connection per pair of floors above one another. The lift's connections form one shaft. With cars (1–8), that many cars serve every storey: people call a car at their floor and wait for it (counted as waiting), share it up to capacity people and ride to their floor; doorSeconds (doors opening plus closing) and dwellSeconds (held open) are spent at every stop. Without cars, the lift is ridden floor by floor like a corridor, capacity agents on each connection at once. Stairs start at `at` and each flight runs rise × 11/7 m along z (or x): 4.7 m for a 3 m storey, 6.3 m for 4 m, so leave that much room on the footprint; the next flight turns back to `at`. Only the connections are made unless parts: true puts the lift car or the flights too; connection ends inside other parts in the way are reported by check_space (link_end_blocked). |
activate |
string | no | — |
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
},
"storyHeight": {
"type": "number",
"minimum": 2,
"maximum": 12
},
"add": {
"default": [],
"description": "elevation (m, floor surface height in the building) defaults to level × storyHeight; height (m, floor-to-floor) defaults to storyHeight. structure puts the floor in one of the site's buildings: then it stands on that building's floor below (its elevation plus its height; under the lowest, a storey below it), as high as that floor, at its place and size and named for the building, unless given.",
"maxItems": 20,
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 40
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 80
},
"level": {
"type": "integer",
"minimum": -5,
"maximum": 60
},
"x": {
"type": "number",
"minimum": 0,
"maximum": 1000
},
"z": {
"type": "number",
"minimum": 0,
"maximum": 1000
},
"width": {
"type": "number",
"minimum": 0.1,
"maximum": 500
},
"depth": {
"type": "number",
"minimum": 0.1,
"maximum": 500
},
"copyFrom": {
"type": "string",
"minLength": 1,
"maxLength": 40
},
"elevation": {
"type": "number",
"minimum": -30,
"maximum": 300
},
"height": {
"type": "number",
"minimum": 2,
"maximum": 12
},
"structure": {
"type": "string",
"pattern": "^[A-Za-z0-9][A-Za-z0-9_-]{0,39}$"
}
},
"required": [
"level"
],
"additionalProperties": false
}
},
"update": {
"default": [],
"description": "null for elevation/height puts it back to the building default; structure moves the floor into one of the site's buildings, null takes it out of any.",
"maxItems": 120,
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 40
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 80
},
"level": {
"type": "integer",
"minimum": -5,
"maximum": 60
},
"x": {
"type": "number",
"minimum": 0,
"maximum": 1000
},
"z": {
"type": "number",
"minimum": 0,
"maximum": 1000
},
"elevation": {
"anyOf": [
{
"type": "number",
"minimum": -30,
"maximum": 300
},
{
"type": "null"
}
]
},
"height": {
"anyOf": [
{
"type": "number",
"minimum": 2,
"maximum": 12
},
{
"type": "null"
}
]
},
"structure": {
"anyOf": [
{
"type": "string",
"pattern": "^[A-Za-z0-9][A-Za-z0-9_-]{0,39}$"
},
{
"type": "null"
}
]
}
},
"required": [
"id"
],
"additionalProperties": false
}
},
"remove": {
"default": [],
"maxItems": 120,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 40
}
},
"copyContents": {
"default": [],
"description": "Make existing floors' parts a copy of another floor's (same IDs, so later edits can list them together in edit_space.floors). Each target keeps its own outline, holes and connections; every part must fit on it. Runs after floors are added, copied and moved.",
"maxItems": 10,
"type": "array",
"items": {
"type": "object",
"properties": {
"from": {
"type": "string",
"minLength": 1,
"maxLength": 40
},
"to": {
"minItems": 1,
"maxItems": 120,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 40
}
}
},
"required": [
"from",
"to"
],
"additionalProperties": false
}
},
"connect": {
"default": [],
"description": "Connect two floors: passage (a corridor on one level, a ramp between levels), stairs, elevator or escalator. Leave fromAt/toAt out to place the ends automatically. direction (forward = from → to) defaults to both, escalators to forward; speed (m/s) defaults to the agent's own, escalators to 0.5; capacity (agents at once) defaults to unlimited, escalators to one per 0.4 m of length. Escalator defaults are reported as assumptions: the speed is EN 115-1's general value, the capacity an estimate with no source. An elevator with cars (1–8) runs lift cars on its shaft (the elevator connections stacked at that place): capacity is then people per car, speed the car's (1 m/s when left out), doorSeconds the doors opening plus closing at a stop (4 s) and dwellSeconds the doors held open (2 s); those defaults are estimates with no source, reported as assumptions. Without cars an elevator is ridden like a corridor, capacity agents at once. flowPerMinute lets that many agents start along it per minute, first come first (a ticket gate, a turnstile, a door or a stair, from a site count or a standard you name); those after wait at its entrance, counted as waiting for the connection. Not on a lift with cars.",
"maxItems": 20,
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 40
},
"kind": {
"type": "string",
"enum": [
"passage",
"stairs",
"elevator",
"escalator"
]
},
"from": {
"type": "string",
"minLength": 1,
"maxLength": 40
},
"to": {
"type": "string",
"minLength": 1,
"maxLength": 40
},
"width": {
"type": "number",
"minimum": 0.5,
"maximum": 20
},
"label": {
"type": "string",
"minLength": 1,
"maxLength": 60
},
"fromAt": {
"type": "object",
"properties": {
"x": {
"type": "number",
"minimum": 0,
"maximum": 500
},
"z": {
"type": "number",
"minimum": 0,
"maximum": 500
}
},
"required": [
"x",
"z"
],
"additionalProperties": false
},
"toAt": {
"type": "object",
"properties": {
"x": {
"type": "number",
"minimum": 0,
"maximum": 500
},
"z": {
"type": "number",
"minimum": 0,
"maximum": 500
}
},
"required": [
"x",
"z"
],
"additionalProperties": false
},
"direction": {
"type": "string",
"enum": [
"both",
"forward",
"backward"
]
},
"speed": {
"type": "number",
"minimum": 0.05,
"maximum": 5
},
"capacity": {
"type": "integer",
"minimum": 1,
"maximum": 1000
},
"flowPerMinute": {
"type": "number",
"minimum": 0.1,
"maximum": 6000
},
"cars": {
"type": "integer",
"minimum": 1,
"maximum": 8
},
"doorSeconds": {
"type": "number",
"minimum": 0,
"maximum": 60
},
"dwellSeconds": {
"type": "number",
"minimum": 0,
"maximum": 600
}
},
"required": [
"kind",
"from",
"to"
],
"additionalProperties": false
}
},
"updateConnections": {
"default": [],
"description": "null for fromAt/toAt puts that end back to automatic; null for direction/speed/capacity puts it back to the default of the kind; null for flowPerMinute/cars/doorSeconds/dwellSeconds takes them off. A lift's cars, capacity, speed and stop times are read from its lowest connection that gives each: set them on every connection of the shaft (cores does).",
"maxItems": 400,
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 40
},
"kind": {
"type": "string",
"enum": [
"passage",
"stairs",
"elevator",
"escalator"
]
},
"width": {
"type": "number",
"minimum": 0.5,
"maximum": 20
},
"label": {
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 60
},
{
"type": "null"
}
]
},
"fromAt": {
"anyOf": [
{
"type": "object",
"properties": {
"x": {
"type": "number",
"minimum": 0,
"maximum": 500
},
"z": {
"type": "number",
"minimum": 0,
"maximum": 500
}
},
"required": [
"x",
"z"
],
"additionalProperties": false
},
{
"type": "null"
}
]
},
"toAt": {
"anyOf": [
{
"type": "object",
"properties": {
"x": {
"type": "number",
"minimum": 0,
"maximum": 500
},
"z": {
"type": "number",
"minimum": 0,
"maximum": 500
}
},
"required": [
"x",
"z"
],
"additionalProperties": false
},
{
"type": "null"
}
]
},
"direction": {
"anyOf": [
{
"type": "string",
"enum": [
"both",
"forward",
"backward"
]
},
{
"type": "null"
}
]
},
"speed": {
"anyOf": [
{
"type": "number",
"minimum": 0.05,
"maximum": 5
},
{
"type": "null"
}
]
},
"capacity": {
"anyOf": [
{
"type": "integer",
"minimum": 1,
"maximum": 1000
},
{
"type": "null"
}
]
},
"flowPerMinute": {
"anyOf": [
{
"type": "number",
"minimum": 0.1,
"maximum": 6000
},
{
"type": "null"
}
]
},
"cars": {
"anyOf": [
{
"type": "integer",
"minimum": 1,
"maximum": 8
},
{
"type": "null"
}
]
},
"doorSeconds": {
"anyOf": [
{
"type": "number",
"minimum": 0,
"maximum": 60
},
{
"type": "null"
}
]
},
"dwellSeconds": {
"anyOf": [
{
"type": "number",
"minimum": 0,
"maximum": 600
},
{
"type": "null"
}
]
}
},
"required": [
"id"
],
"additionalProperties": false
}
},
"disconnect": {
"default": [],
"maxItems": 400,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 40
}
},
"structures": {
"default": [],
"description": "Buildings on the site (a warehouse, an office block, a tower, a car park): create one by a new id, or rename/recolour an existing one (color 0xRRGGBB as a number; null: the theme's). A building groups floors for editing, display and scenario places; routes still follow connections.",
"maxItems": 40,
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"pattern": "^[A-Za-z0-9][A-Za-z0-9_-]{0,39}$"
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 80
},
"color": {
"anyOf": [
{
"type": "integer",
"minimum": 0,
"maximum": 16777215
},
{
"type": "null"
}
]
}
},
"required": [
"id"
],
"additionalProperties": false
}
},
"buildStructures": {
"default": [],
"description": "Put up a building of empty storeys over a footprint (x, z: its corner in site metres; width × depth), each storey a floor of that building (storeyHeight for all, or storeyHeights one by one). lift and stairs (site metres, on the footprint) run through every storey; stairs climb along z (or x) and turn back at each landing. Standing on a ground floor area (one of no building) at the same elevation, the footprint becomes a hole in it when it fits inside; it must not overlap another building. entrance connects it to that ground with a doorway; otherwise connect its entrance with a passage (connect places the ends of a building standing in the ground at the middle of its most open side).",
"maxItems": 10,
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"pattern": "^[A-Za-z0-9][A-Za-z0-9_-]{0,39}$"
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 80
},
"color": {
"type": "integer",
"minimum": 0,
"maximum": 16777215
},
"x": {
"type": "number",
"minimum": 0,
"maximum": 1000
},
"z": {
"type": "number",
"minimum": 0,
"maximum": 1000
},
"width": {
"type": "number",
"minimum": 0.1,
"maximum": 500
},
"depth": {
"type": "number",
"minimum": 0.1,
"maximum": 500
},
"storeys": {
"type": "integer",
"minimum": 1,
"maximum": 120
},
"storeyHeight": {
"type": "number",
"minimum": 2,
"maximum": 12
},
"storeyHeights": {
"description": "Each storey's height from the lowest, one per storey (a cinema's 10 m hall under a 9 m one); overrides storeyHeight.",
"minItems": 1,
"maxItems": 120,
"type": "array",
"items": {
"type": "number",
"minimum": 2,
"maximum": 12
}
},
"level": {
"type": "integer",
"minimum": -5,
"maximum": 60
},
"levels": {
"description": "Each storey's level from the lowest, rising: put a storey on the level of the floor it bridges to (a cinema's upper floor at 10 m on the mall's L3). level, level+1, … when omitted.",
"minItems": 1,
"maxItems": 120,
"type": "array",
"items": {
"type": "integer",
"minimum": -5,
"maximum": 60
}
},
"elevation": {
"type": "number",
"minimum": -30,
"maximum": 300
},
"lift": {
"description": "Where its lift runs, site metres (on the footprint); cars, capacity (people per car), speed, doorSeconds and dwellSeconds as for cores; parts: true also puts a lift car part on every storey.",
"type": "object",
"properties": {
"x": {
"type": "number",
"minimum": 0,
"maximum": 1000
},
"z": {
"type": "number",
"minimum": 0,
"maximum": 1000
},
"cars": {
"type": "integer",
"minimum": 1,
"maximum": 8
},
"capacity": {
"type": "integer",
"minimum": 1,
"maximum": 1000
},
"speed": {
"type": "number",
"minimum": 0.05,
"maximum": 5
},
"doorSeconds": {
"type": "number",
"minimum": 0,
"maximum": 60
},
"dwellSeconds": {
"type": "number",
"minimum": 0,
"maximum": 600
},
"parts": {
"type": "boolean"
}
},
"required": [
"x",
"z"
],
"additionalProperties": false
},
"stairs": {
"description": "Where its stairs start, site metres: each flight runs rise × 11/7 m along z (or x) and the next turns back, so leave that much room on the footprint; parts: true also puts each flight as a stairs part.",
"type": "object",
"properties": {
"x": {
"type": "number",
"minimum": 0,
"maximum": 1000
},
"z": {
"type": "number",
"minimum": 0,
"maximum": 1000
},
"along": {
"type": "string",
"enum": [
"x",
"z"
]
},
"parts": {
"type": "boolean"
}
},
"required": [
"x",
"z"
],
"additionalProperties": false
},
"entrance": {
"description": "Connect its lowest storey to the ground floor area it stands in (a floor of no building at the same elevation, which its footprint cuts a hole in) with a doorway: a passage of no length in the middle of side (south, north, east or west), else of the side with the most ground in front of it; width 2 m when left out.",
"anyOf": [
{
"type": "boolean",
"const": true
},
{
"type": "object",
"properties": {
"side": {
"type": "string",
"enum": [
"south",
"north",
"east",
"west"
]
},
"width": {
"type": "number",
"minimum": 0.5,
"maximum": 20
}
},
"additionalProperties": false
}
]
}
},
"required": [
"x",
"z",
"width",
"depth",
"storeys"
],
"additionalProperties": false
}
},
"duplicateStructures": {
"default": [],
"description": "Copy a building dx, dz metres away: its floors with their parts and its own stairs, lifts and inner passages. Connections to the rest of the site are not copied.",
"maxItems": 10,
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"pattern": "^[A-Za-z0-9][A-Za-z0-9_-]{0,39}$"
},
"newId": {
"type": "string",
"pattern": "^[A-Za-z0-9][A-Za-z0-9_-]{0,39}$"
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 80
},
"color": {
"type": "integer",
"minimum": 0,
"maximum": 16777215
},
"dx": {
"type": "number",
"minimum": -1000,
"maximum": 1000
},
"dz": {
"type": "number",
"minimum": -1000,
"maximum": 1000
}
},
"required": [
"id",
"dx",
"dz"
],
"additionalProperties": false
}
},
"moveStructures": {
"default": [],
"description": "Move a building across the site (dx, dz) or raise it (dy), all its floors together.",
"maxItems": 40,
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"pattern": "^[A-Za-z0-9][A-Za-z0-9_-]{0,39}$"
},
"dx": {
"type": "number",
"minimum": -1000,
"maximum": 1000
},
"dz": {
"type": "number",
"minimum": -1000,
"maximum": 1000
},
"dy": {
"type": "number",
"minimum": -100,
"maximum": 100
}
},
"required": [
"id"
],
"additionalProperties": false
}
},
"removeStructures": {
"default": [],
"description": "Take a building off the site: keep its floors (they belong to no building afterwards) or remove them with their connections.",
"maxItems": 40,
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"pattern": "^[A-Za-z0-9][A-Za-z0-9_-]{0,39}$"
},
"floors": {
"type": "string",
"enum": [
"keep",
"remove"
]
}
},
"required": [
"id",
"floors"
],
"additionalProperties": false
}
},
"cores": {
"default": [],
"description": "A lift or stairs through every storey of a building at one place (site metres): one connection per pair of floors above one another. The lift's connections form one shaft. With cars (1–8), that many cars serve every storey: people call a car at their floor and wait for it (counted as waiting), share it up to capacity people and ride to their floor; doorSeconds (doors opening plus closing) and dwellSeconds (held open) are spent at every stop. Without cars, the lift is ridden floor by floor like a corridor, capacity agents on each connection at once. Stairs start at `at` and each flight runs rise × 11/7 m along z (or x): 4.7 m for a 3 m storey, 6.3 m for 4 m, so leave that much room on the footprint; the next flight turns back to `at`. Only the connections are made unless parts: true puts the lift car or the flights too; connection ends inside other parts in the way are reported by check_space (link_end_blocked).",
"maxItems": 10,
"type": "array",
"items": {
"type": "object",
"properties": {
"structure": {
"type": "string",
"pattern": "^[A-Za-z0-9][A-Za-z0-9_-]{0,39}$"
},
"kind": {
"type": "string",
"enum": [
"elevator",
"stairs"
]
},
"at": {
"type": "object",
"properties": {
"x": {
"type": "number",
"minimum": 0,
"maximum": 1000
},
"z": {
"type": "number",
"minimum": 0,
"maximum": 1000
}
},
"required": [
"x",
"z"
],
"additionalProperties": false
},
"along": {
"type": "string",
"enum": [
"x",
"z"
]
},
"width": {
"type": "number",
"minimum": 0.5,
"maximum": 20
},
"speed": {
"type": "number",
"minimum": 0.05,
"maximum": 5
},
"capacity": {
"type": "integer",
"minimum": 1,
"maximum": 1000
},
"cars": {
"type": "integer",
"minimum": 1,
"maximum": 8
},
"doorSeconds": {
"type": "number",
"minimum": 0,
"maximum": 60
},
"dwellSeconds": {
"type": "number",
"minimum": 0,
"maximum": 600
},
"label": {
"type": "string",
"minLength": 1,
"maxLength": 60
},
"parts": {
"description": "Also put the parts people see: a lift car (elevator part) on every storey it serves, or on each storey the flight (stairs part) that climbs from it. A part id already on a floor is left as it is.",
"type": "boolean"
}
},
"required": [
"structure",
"kind",
"at"
],
"additionalProperties": false
}
},
"activate": {
"type": "string",
"minLength": 1,
"maxLength": 40
},
"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"
],
"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