Tool tree
gradeNot graded
get_roomAnswer
Get the room dimensions in centimetres. Coordinates start at the top-left corner of the room.
View tool JSON
{
"name": "get_room",
"kind": "answer",
"impl": "imperative",
"description": "Get the room dimensions in centimetres. Coordinates start at the top-left corner of the room.",
"inputSchema": {
"type": "object",
"properties": {}
},
"page": "/Room-planner-with-WebMCP/"
}get_openingsAnswer
List the doors and windows, with the wall each sits on, its offset along that wall, and its width in centimetres.
View tool JSON
{
"name": "get_openings",
"kind": "answer",
"impl": "imperative",
"description": "List the doors and windows, with the wall each sits on, its offset along that wall, and its width in centimetres.",
"inputSchema": {
"type": "object",
"properties": {}
},
"page": "/Room-planner-with-WebMCP/"
}get_objectsAnswer
List every furniture object with its position, footprint, rotation and locked flag.
View tool JSON
{
"name": "get_objects",
"kind": "answer",
"impl": "imperative",
"description": "List every furniture object with its position, footprint, rotation and locked flag.",
"inputSchema": {
"type": "object",
"properties": {}
},
"page": "/Room-planner-with-WebMCP/"
}get_objectAnswer
Get one furniture object by id.
View tool JSON
{
"name": "get_object",
"kind": "answer",
"impl": "imperative",
"description": "Get one furniture object by id.",
"inputSchema": {
"type": "object",
"properties": {
"objectId": {
"type": "string",
"description": "Id of a furniture object, e.g. \"desk-1\"."
}
},
"required": [
"objectId"
]
},
"page": "/Room-planner-with-WebMCP/"
}get_constraintsAnswer
List the layout constraints, each with a human-readable description and whether it is currently satisfied.
View tool JSON
{
"name": "get_constraints",
"kind": "answer",
"impl": "imperative",
"description": "List the layout constraints, each with a human-readable description and whether it is currently satisfied.",
"inputSchema": {
"type": "object",
"properties": {}
},
"page": "/Room-planner-with-WebMCP/"
}get_collisionsAnswer
List overlapping furniture, objects outside the room bounds, and objects blocking a door clearance zone.
View tool JSON
{
"name": "get_collisions",
"kind": "answer",
"impl": "imperative",
"description": "List overlapping furniture, objects outside the room bounds, and objects blocking a door clearance zone.",
"inputSchema": {
"type": "object",
"properties": {}
},
"page": "/Room-planner-with-WebMCP/"
}get_distancesAnswer
Distances for one object: to each wall, to every other object (nearest first), to each opening, and to the nearest window.
View tool JSON
{
"name": "get_distances",
"kind": "answer",
"impl": "imperative",
"description": "Distances for one object: to each wall, to every other object (nearest first), to each opening, and to the nearest window.",
"inputSchema": {
"type": "object",
"properties": {
"objectId": {
"type": "string",
"description": "Id of a furniture object, e.g. \"desk-1\"."
}
},
"required": [
"objectId"
]
},
"page": "/Room-planner-with-WebMCP/"
}validate_layoutAction
Check the whole layout: returns valid plus the current collisions and constraint violations.
View tool JSON
{
"name": "validate_layout",
"kind": "act",
"impl": "imperative",
"description": "Check the whole layout: returns valid plus the current collisions and constraint violations.",
"inputSchema": {
"type": "object",
"properties": {}
},
"page": "/Room-planner-with-WebMCP/"
}set_room_dimensionsAction
Resize the room. Furniture keeps its coordinates, so shrinking a room can push objects out of bounds.
View tool JSON
{
"name": "set_room_dimensions",
"kind": "act",
"impl": "imperative",
"description": "Resize the room. Furniture keeps its coordinates, so shrinking a room can push objects out of bounds.",
"inputSchema": {
"type": "object",
"properties": {
"widthCm": {
"type": "number"
},
"heightCm": {
"type": "number"
}
},
"required": [
"widthCm",
"heightCm"
]
},
"page": "/Room-planner-with-WebMCP/"
}add_objectAction
Add a piece of furniture. Known types (bed, desk, chair, sofa, table, wardrobe, bookshelf, nightstand) fill in default dimensions when width and depth are omitted. Position defaults to a free-ish spot near the top-left.
View tool JSON
{
"name": "add_object",
"kind": "act",
"impl": "imperative",
"description": "Add a piece of furniture. Known types (bed, desk, chair, sofa, table, wardrobe, bookshelf, nightstand) fill in default dimensions when width and depth are omitted. Position defaults to a free-ish spot near the top-left.",
"inputSchema": {
"type": "object",
"properties": {
"type": {
"type": "string",
"description": "bed | desk | chair | sofa | table | wardrobe | bookshelf | nightstand | custom"
},
"label": {
"type": "string"
},
"xCm": {
"type": "number"
},
"yCm": {
"type": "number"
},
"widthCm": {
"type": "number"
},
"heightCm": {
"type": "number",
"description": "Depth in centimetres."
},
"rotation": {
"type": "number",
"enum": [
0,
90,
180,
270
],
"description": "Rotation in degrees."
}
},
"required": [
"type"
]
},
"page": "/Room-planner-with-WebMCP/"
}move_objectAction
Move an object to an absolute position (top-left corner, in centimetres) and re-validate the layout.
View tool JSON
{
"name": "move_object",
"kind": "act",
"impl": "imperative",
"description": "Move an object to an absolute position (top-left corner, in centimetres) and re-validate the layout.",
"inputSchema": {
"type": "object",
"properties": {
"objectId": {
"type": "string",
"description": "Id of a furniture object, e.g. \"desk-1\"."
},
"xCm": {
"type": "number"
},
"yCm": {
"type": "number"
}
},
"required": [
"objectId",
"xCm",
"yCm"
]
},
"page": "/Room-planner-with-WebMCP/"
}rotate_objectAction
Rotate an object to 0, 90, 180 or 270 degrees. At 90 and 270 its width and depth swap.
View tool JSON
{
"name": "rotate_object",
"kind": "act",
"impl": "imperative",
"description": "Rotate an object to 0, 90, 180 or 270 degrees. At 90 and 270 its width and depth swap.",
"inputSchema": {
"type": "object",
"properties": {
"objectId": {
"type": "string",
"description": "Id of a furniture object, e.g. \"desk-1\"."
},
"rotation": {
"type": "number",
"enum": [
0,
90,
180,
270
],
"description": "Rotation in degrees."
}
},
"required": [
"objectId",
"rotation"
]
},
"page": "/Room-planner-with-WebMCP/"
}resize_objectAction
Change an object width and/or depth in centimetres.
View tool JSON
{
"name": "resize_object",
"kind": "act",
"impl": "imperative",
"description": "Change an object width and/or depth in centimetres.",
"inputSchema": {
"type": "object",
"properties": {
"objectId": {
"type": "string",
"description": "Id of a furniture object, e.g. \"desk-1\"."
},
"widthCm": {
"type": "number"
},
"heightCm": {
"type": "number"
}
},
"required": [
"objectId"
]
},
"page": "/Room-planner-with-WebMCP/"
}rename_objectAction
Rename an object. The label is what the person sees on the canvas.
View tool JSON
{
"name": "rename_object",
"kind": "act",
"impl": "imperative",
"description": "Rename an object. The label is what the person sees on the canvas.",
"inputSchema": {
"type": "object",
"properties": {
"objectId": {
"type": "string",
"description": "Id of a furniture object, e.g. \"desk-1\"."
},
"label": {
"type": "string"
}
},
"required": [
"objectId",
"label"
]
},
"page": "/Room-planner-with-WebMCP/"
}remove_objectAction
Remove an object from the room. Constraints that referenced it are removed too.
View tool JSON
{
"name": "remove_object",
"kind": "act",
"impl": "imperative",
"description": "Remove an object from the room. Constraints that referenced it are removed too.",
"inputSchema": {
"type": "object",
"properties": {
"objectId": {
"type": "string",
"description": "Id of a furniture object, e.g. \"desk-1\"."
}
},
"required": [
"objectId"
]
},
"page": "/Room-planner-with-WebMCP/"
}duplicate_objectAction
Duplicate an object, offset 20 cm down and right, and return the copy.
View tool JSON
{
"name": "duplicate_object",
"kind": "act",
"impl": "imperative",
"description": "Duplicate an object, offset 20 cm down and right, and return the copy.",
"inputSchema": {
"type": "object",
"properties": {
"objectId": {
"type": "string",
"description": "Id of a furniture object, e.g. \"desk-1\"."
}
},
"required": [
"objectId"
]
},
"page": "/Room-planner-with-WebMCP/"
}lock_objectAction
Lock or unlock an object. A locked object cannot be moved, rotated or resized — by the agent or by dragging.
View tool JSON
{
"name": "lock_object",
"kind": "act",
"impl": "imperative",
"description": "Lock or unlock an object. A locked object cannot be moved, rotated or resized — by the agent or by dragging.",
"inputSchema": {
"type": "object",
"properties": {
"objectId": {
"type": "string",
"description": "Id of a furniture object, e.g. \"desk-1\"."
},
"locked": {
"type": "boolean"
}
},
"required": [
"objectId",
"locked"
]
},
"page": "/Room-planner-with-WebMCP/"
}add_openingAction
Add a door or a window to one of the four walls. offsetCm is measured from the top or left end of that wall.
View tool JSON
{
"name": "add_opening",
"kind": "act",
"impl": "imperative",
"description": "Add a door or a window to one of the four walls. offsetCm is measured from the top or left end of that wall.",
"inputSchema": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"door",
"window"
]
},
"wall": {
"type": "string",
"enum": [
"top",
"right",
"bottom",
"left"
]
},
"offsetCm": {
"type": "number"
},
"widthCm": {
"type": "number"
}
},
"required": [
"type",
"wall"
]
},
"page": "/Room-planner-with-WebMCP/"
}update_openingAction
Move or resize a door or window.
View tool JSON
{
"name": "update_opening",
"kind": "act",
"impl": "imperative",
"description": "Move or resize a door or window.",
"inputSchema": {
"type": "object",
"properties": {
"openingId": {
"type": "string"
},
"wall": {
"type": "string",
"enum": [
"top",
"right",
"bottom",
"left"
]
},
"offsetCm": {
"type": "number"
},
"widthCm": {
"type": "number"
}
},
"required": [
"openingId"
]
},
"page": "/Room-planner-with-WebMCP/"
}remove_openingAction
Remove a door or window, along with any keep-clear constraint attached to it.
View tool JSON
{
"name": "remove_opening",
"kind": "act",
"impl": "imperative",
"description": "Remove a door or window, along with any keep-clear constraint attached to it.",
"inputSchema": {
"type": "object",
"properties": {
"openingId": {
"type": "string"
}
},
"required": [
"openingId"
]
},
"page": "/Room-planner-with-WebMCP/"
}add_constraintAction
Add a layout rule. min_distance needs objectAId, objectBId and distanceCm; near_window needs objectId and maxDistanceCm; against_wall needs objectId; keep_clear needs openingId and clearanceCm; clearance_zone needs objectId, side and clearanceCm — a functional clearance on one side of a piece of furniture (wardrobe door swing, desk chair pull-out, drawer access) rather than a door; max_distance needs objectAId, objectBId and maxDistanceCm — keeps two objects near each other, e.g. a nightstand near a bed; facing needs objectAId and objectBId — objectA's front (derived from its rotation: 0°=bottom, 90°=left, 180°=top, 270°=right) must point toward objectB, e.g. a chair facing a desk; centered_on_wall needs objectId, wall and toleranceCm — the object must touch that wall and sit centred along it.
View tool JSON
{
"name": "add_constraint",
"kind": "act",
"impl": "imperative",
"description": "Add a layout rule. min_distance needs objectAId, objectBId and distanceCm; near_window needs objectId and maxDistanceCm; against_wall needs objectId; keep_clear needs openingId and clearanceCm; clearance_zone needs objectId, side and clearanceCm — a functional clearance on one side of a piece of furniture (wardrobe door swing, desk chair pull-out, drawer access) rather than a door; max_distance needs objectAId, objectBId and maxDistanceCm — keeps two objects near each other, e.g. a nightstand near a bed; facing needs objectAId and objectBId — objectA's front (derived from its rotation: 0°=bottom, 90°=left, 180°=top, 270°=right) must point toward objectB, e.g. a chair facing a desk; centered_on_wall needs objectId, wall and toleranceCm — the object must touch that wall and sit centred along it.",
"inputSchema": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"min_distance",
"near_window",
"against_wall",
"keep_clear",
"clearance_zone",
"max_distance",
"facing",
"centered_on_wall"
]
},
"objectAId": {
"type": "string"
},
"objectBId": {
"type": "string"
},
"objectId": {
"type": "string"
},
"openingId": {
"type": "string"
},
"side": {
"type": "string",
"enum": [
"top",
"right",
"bottom",
"left"
],
"description": "Which side of the object the clearance_zone extends from."
},
"wall": {
"type": "string",
"enum": [
"top",
"right",
"bottom",
"left"
],
"description": "Which wall the object should be centered on."
},
"distanceCm": {
"type": "number"
},
"maxDistanceCm": {
"type": "number"
},
"clearanceCm": {
"type": "number"
},
"toleranceCm": {
"type": "number",
"description": "Allowed off-centre slack for centered_on_wall, in centimetres."
}
},
"required": [
"type"
]
},
"page": "/Room-planner-with-WebMCP/"
}update_constraintAction
Change the values on an existing constraint.
View tool JSON
{
"name": "update_constraint",
"kind": "act",
"impl": "imperative",
"description": "Change the values on an existing constraint.",
"inputSchema": {
"type": "object",
"properties": {
"constraintId": {
"type": "string"
},
"distanceCm": {
"type": "number"
},
"maxDistanceCm": {
"type": "number"
},
"clearanceCm": {
"type": "number"
},
"toleranceCm": {
"type": "number"
},
"objectAId": {
"type": "string"
},
"objectBId": {
"type": "string"
},
"objectId": {
"type": "string"
},
"openingId": {
"type": "string"
},
"side": {
"type": "string",
"enum": [
"top",
"right",
"bottom",
"left"
]
},
"wall": {
"type": "string",
"enum": [
"top",
"right",
"bottom",
"left"
]
}
},
"required": [
"constraintId"
]
},
"page": "/Room-planner-with-WebMCP/"
}remove_constraintAction
Remove a layout constraint.
View tool JSON
{
"name": "remove_constraint",
"kind": "act",
"impl": "imperative",
"description": "Remove a layout constraint.",
"inputSchema": {
"type": "object",
"properties": {
"constraintId": {
"type": "string"
}
},
"required": [
"constraintId"
]
},
"page": "/Room-planner-with-WebMCP/"
}highlight_objectsAction
Draw attention to objects or openings on the canvas and show the person a short message explaining why.
View tool JSON
{
"name": "highlight_objects",
"kind": "act",
"impl": "imperative",
"description": "Draw attention to objects or openings on the canvas and show the person a short message explaining why.",
"inputSchema": {
"type": "object",
"properties": {
"objectIds": {
"type": "array",
"items": {
"type": "string"
},
"description": "Object or opening ids."
},
"message": {
"type": "string",
"description": "Shown above the room, e.g. \"These three items drive the layout.\""
}
},
"required": [
"objectIds"
]
},
"page": "/Room-planner-with-WebMCP/"
}clear_highlightsAction
Clear the highlight banner and outlines.
View tool JSON
{
"name": "clear_highlights",
"kind": "act",
"impl": "imperative",
"description": "Clear the highlight banner and outlines.",
"inputSchema": {
"type": "object",
"properties": {}
},
"page": "/Room-planner-with-WebMCP/"
}capture_floorplanAction
Render the floor plan on its own — no app chrome — as a PNG or a standalone SVG, and return it as a data URL the caller can save to a file. Pass download:true to have the browser save it instead, which keeps the (large) data URL out of the reply.
View tool JSON
{
"name": "capture_floorplan",
"kind": "act",
"impl": "imperative",
"description": "Render the floor plan on its own — no app chrome — as a PNG or a standalone SVG, and return it as a data URL the caller can save to a file. Pass download:true to have the browser save it instead, which keeps the (large) data URL out of the reply.",
"inputSchema": {
"type": "object",
"properties": {
"format": {
"type": "string",
"enum": [
"png",
"svg"
],
"description": "Default png."
},
"scale": {
"type": "number",
"description": "PNG pixel density, 0.25–4. Default 2."
},
"background": {
"type": "string",
"enum": [
"paper",
"transparent"
],
"description": "Default paper."
},
"download": {
"type": "boolean",
"description": "Save via the browser instead of returning the image data."
},
"filename": {
"type": "string"
}
}
},
"page": "/Room-planner-with-WebMCP/"
}