← WebMCP Directory

Tool tree

webmcphousedesign.netlify.app

Productivity & BusinessTools verified
Website
Design a house together with an AI agent: a 3D floorplan editor exposing its live design through WebMCP, with one constraint engine refereeing human and agent alike.
Explore capabilities
    get_layoutAnswer

    Read the current floorplan. Defaults to a compact summary of rooms, areas and adjacency.

    View tool JSON
    {
      "name": "get_layout",
      "kind": "answer",
      "impl": "imperative",
      "description": "Read the current floorplan. Defaults to a compact summary of rooms, areas and adjacency.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "detail": {
            "type": "string",
            "enum": [
              "summary",
              "full"
            ],
            "default": "summary",
            "description": "summary returns rooms, areas and adjacency only; full returns every wall, opening and furniture item."
          }
        },
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      }
    }
    get_selectionAnswer

    Read what the human currently has selected in the 3D scene.

    View tool JSON
    {
      "name": "get_selection",
      "kind": "answer",
      "impl": "imperative",
      "description": "Read what the human currently has selected in the 3D scene.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      }
    }
    compute_areasAction

    Area per room, the total conditioned area, and each room's margin above its minimum.

    View tool JSON
    {
      "name": "compute_areas",
      "kind": "act",
      "impl": "imperative",
      "description": "Area per room, the total conditioned area, and each room's margin above its minimum.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "roomIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Omit to measure every room."
          }
        },
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      }
    }
    validate_layoutAction

    Check the plan against the simplified residential constraints and explain what breaks.

    View tool JSON
    {
      "name": "validate_layout",
      "kind": "act",
      "impl": "imperative",
      "description": "Check the plan against the simplified residential constraints and explain what breaks.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      }
    }
    get_cameraAnswer

    Where the camera is and what it is looking at, in plain language.

    View tool JSON
    {
      "name": "get_camera",
      "kind": "answer",
      "impl": "imperative",
      "description": "Where the camera is and what it is looking at, in plain language.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      }
    }
    list_templatesAnswer

    The starting templates a design can begin from, with which one is loaded now.

    View tool JSON
    {
      "name": "list_templates",
      "kind": "answer",
      "impl": "imperative",
      "description": "The starting templates a design can begin from, with which one is loaded now.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      }
    }
    start_from_templateAction

    Start a design from a template. With floorCount, the first call sizes the house and each call fills the next floor.

    View tool JSON
    {
      "name": "start_from_template",
      "kind": "act",
      "impl": "imperative",
      "description": "Start a design from a template. With floorCount, the first call sizes the house and each call fills the next floor.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "templateId": {
            "type": "string",
            "description": "One of the ids from list_templates."
          },
          "floorCount": {
            "type": "integer",
            "minimum": 1,
            "maximum": 3,
            "description": "Total floors for a brand-new design. Give it on the first call, then call once per floor: each call sets the next floor's template."
          }
        },
        "required": [
          "templateId"
        ],
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      }
    }
    set_active_floorAction

    Switch which floor of a multi-floor design is being edited, for every tool and the human alike.

    View tool JSON
    {
      "name": "set_active_floor",
      "kind": "act",
      "impl": "imperative",
      "description": "Switch which floor of a multi-floor design is being edited, for every tool and the human alike.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "floor": {
            "type": "integer",
            "minimum": 1,
            "description": "1-based floor number to edit; every tool then reads and writes that floor."
          }
        },
        "required": [
          "floor"
        ],
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      }
    }
    add_roomAction

    Add a room, optionally attached to an existing one so they share a wall.

    View tool JSON
    {
      "name": "add_room",
      "kind": "act",
      "impl": "imperative",
      "description": "Add a room, optionally attached to an existing one so they share a wall.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Human-facing name, e.g. \"Guest Bedroom\"."
          },
          "type": {
            "type": "string",
            "enum": [
              "bedroom",
              "bathroom",
              "kitchen",
              "living",
              "dining",
              "hallway",
              "closet",
              "utility",
              "garage"
            ]
          },
          "widthIn": {
            "type": "number",
            "description": "East-west size in inches; snapped to 6in."
          },
          "depthIn": {
            "type": "number",
            "description": "North-south size in inches; snapped to 6in."
          },
          "attachTo": {
            "type": "object",
            "properties": {
              "roomId": {
                "type": "string"
              },
              "side": {
                "type": "string",
                "enum": [
                  "north",
                  "south",
                  "east",
                  "west"
                ]
              }
            },
            "required": [
              "roomId",
              "side"
            ],
            "additionalProperties": false,
            "description": "Place the room against an existing one, sharing the wall where they line up."
          }
        },
        "required": [
          "name",
          "type",
          "widthIn",
          "depthIn"
        ],
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      }
    }
    move_wallAction

    Move a wall perpendicular to itself, resizing every room that shares it.

    View tool JSON
    {
      "name": "move_wall",
      "kind": "act",
      "impl": "imperative",
      "description": "Move a wall perpendicular to itself, resizing every room that shares it.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "wallId": {
            "type": "string"
          },
          "distanceIn": {
            "type": "number",
            "description": "Inches to move, snapped to the 6in grid."
          },
          "direction": {
            "type": "string",
            "enum": [
              "north",
              "south",
              "east",
              "west"
            ],
            "description": "Must be perpendicular to the wall."
          }
        },
        "required": [
          "wallId",
          "distanceIn",
          "direction"
        ],
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      }
    }
    resize_roomAction

    Set a room's width and/or depth. Convenience wrapper over move_wall.

    View tool JSON
    {
      "name": "resize_room",
      "kind": "act",
      "impl": "imperative",
      "description": "Set a room's width and/or depth. Convenience wrapper over move_wall.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "roomId": {
            "type": "string"
          },
          "widthIn": {
            "type": "number"
          },
          "depthIn": {
            "type": "number"
          }
        },
        "required": [
          "roomId"
        ],
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      }
    }
    add_openingAction

    Cut a door, window or archway into a wall.

    View tool JSON
    {
      "name": "add_opening",
      "kind": "act",
      "impl": "imperative",
      "description": "Cut a door, window or archway into a wall.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "wallId": {
            "type": "string"
          },
          "kind": {
            "type": "string",
            "enum": [
              "door",
              "window",
              "archway"
            ]
          },
          "offsetIn": {
            "type": "number",
            "description": "Inches along the wall from its start point."
          },
          "widthIn": {
            "type": "number"
          },
          "swing": {
            "type": "string",
            "enum": [
              "in-left",
              "in-right",
              "out-left",
              "out-right",
              "sliding",
              "none"
            ]
          }
        },
        "required": [
          "wallId",
          "kind",
          "offsetIn",
          "widthIn"
        ],
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      }
    }
    place_furnitureAction

    Place a catalog item in a room; omit position to auto-place against a wall.

    View tool JSON
    {
      "name": "place_furniture",
      "kind": "act",
      "impl": "imperative",
      "description": "Place a catalog item in a room; omit position to auto-place against a wall.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "roomId": {
            "type": "string"
          },
          "catalogId": {
            "type": "string",
            "description": "Catalog key: queen-bed, sofa, tv-stand, table, bookshelf, chair, nightstand, dresser, wardrobe, desk, kitchen-island, counter, range, fridge, toilet, sink, tub, shower, washer, tv-wall (a wall-mounted screen: place just off a wall, rotated to face the room). Other ids render as a plain block."
          },
          "footprint": {
            "type": "object",
            "properties": {
              "w": {
                "type": "number"
              },
              "d": {
                "type": "number"
              }
            },
            "required": [
              "w",
              "d"
            ],
            "additionalProperties": false,
            "description": "Plan footprint in inches."
          },
          "position": {
            "type": "object",
            "properties": {
              "x": {
                "type": "number"
              },
              "y": {
                "type": "number"
              }
            },
            "required": [
              "x",
              "y"
            ],
            "additionalProperties": false,
            "description": "Omit to auto-place against the most sensible wall."
          },
          "rotation": {
            "type": "number",
            "description": "Degrees a piece's front faces: 0 = south (plan bottom), 90 = west, 180 = north, 270 = east. Face it away from the wall it backs onto. Omitted on placement, it auto-faces into the room from the nearest wall."
          },
          "clearanceFrontIn": {
            "type": "number",
            "description": "Approach space required in front of the piece."
          },
          "color": {
            "type": "string",
            "description": "Finish for the primary surfaces, any CSS colour; omit for the default look."
          }
        },
        "required": [
          "roomId",
          "catalogId",
          "footprint"
        ],
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      }
    }
    move_furnitureAction

    Move or turn a piece already in the plan; dropping it in another room re-homes it.

    View tool JSON
    {
      "name": "move_furniture",
      "kind": "act",
      "impl": "imperative",
      "description": "Move or turn a piece already in the plan; dropping it in another room re-homes it.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "furnitureId": {
            "type": "string"
          },
          "position": {
            "type": "object",
            "properties": {
              "x": {
                "type": "number"
              },
              "y": {
                "type": "number"
              }
            },
            "required": [
              "x",
              "y"
            ],
            "additionalProperties": false,
            "description": "New centre in plan inches; the room it lands in is inferred."
          },
          "rotation": {
            "type": "number",
            "description": "Degrees a piece's front faces: 0 = south (plan bottom), 90 = west, 180 = north, 270 = east. Face it away from the wall it backs onto. Omitted on placement, it auto-faces into the room from the nearest wall."
          }
        },
        "required": [
          "furnitureId"
        ],
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      }
    }
    resize_furnitureAction

    Change a placed piece's footprint where it stands; position and rotation stay put.

    View tool JSON
    {
      "name": "resize_furniture",
      "kind": "act",
      "impl": "imperative",
      "description": "Change a placed piece's footprint where it stands; position and rotation stay put.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "furnitureId": {
            "type": "string"
          },
          "widthIn": {
            "type": "number",
            "description": "New footprint width in inches; omit to keep the current width."
          },
          "depthIn": {
            "type": "number",
            "description": "New footprint depth in inches; omit to keep the current depth."
          }
        },
        "required": [
          "furnitureId"
        ],
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      }
    }
    update_openingAction

    Change a door, window or archway in place: widen it, convert it, or flip its swing.

    View tool JSON
    {
      "name": "update_opening",
      "kind": "act",
      "impl": "imperative",
      "description": "Change a door, window or archway in place: widen it, convert it, or flip its swing.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "openingId": {
            "type": "string"
          },
          "widthIn": {
            "type": "number",
            "description": "New clear width; rounds up to the 6in grid, grows about the centre."
          },
          "kind": {
            "type": "string",
            "enum": [
              "door",
              "window",
              "archway"
            ]
          },
          "swing": {
            "type": "string",
            "enum": [
              "in-left",
              "in-right",
              "out-left",
              "out-right",
              "sliding",
              "none"
            ]
          }
        },
        "required": [
          "openingId"
        ],
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      }
    }
    apply_editsAction

    Run several edits in one call -- furnish a whole room in a single round trip.

    View tool JSON
    {
      "name": "apply_edits",
      "kind": "act",
      "impl": "imperative",
      "description": "Run several edits in one call -- furnish a whole room in a single round trip.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "edits": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "action": {
                  "type": "string"
                }
              },
              "required": [
                "action"
              ],
              "additionalProperties": true
            },
            "minItems": 1,
            "maxItems": 20,
            "description": "Each edit is {action, ...params}: the action names another write tool (place_furniture, move_furniture, resize_furniture, update_opening, add_opening, remove_element, move_wall, resize_room, add_room) and the params are that tool's. Runs in order; a failed edit reports its error and the rest continue."
          }
        },
        "required": [
          "edits"
        ],
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      }
    }
    remove_elementAction

    Remove a wall, room, opening or furniture item, cascading to what depends on it.

    View tool JSON
    {
      "name": "remove_element",
      "kind": "act",
      "impl": "imperative",
      "description": "Remove a wall, room, opening or furniture item, cascading to what depends on it.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "elementId": {
            "type": "string",
            "description": "A wall, room, opening or furniture id."
          }
        },
        "required": [
          "elementId"
        ],
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      }
    }
    set_cameraAction

    Move the camera. firstPerson with a target room walks the human through that space.

    View tool JSON
    {
      "name": "set_camera",
      "kind": "act",
      "impl": "imperative",
      "description": "Move the camera. firstPerson with a target room walks the human through that space.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "mode": {
            "type": "string",
            "enum": [
              "top",
              "iso",
              "firstPerson"
            ]
          },
          "targetRoomId": {
            "type": "string"
          },
          "description": {
            "type": "string"
          }
        },
        "required": [
          "mode"
        ],
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      }
    }
    undoAction

    Step the plan back through the edit history.

    View tool JSON
    {
      "name": "undo",
      "kind": "act",
      "impl": "imperative",
      "description": "Step the plan back through the edit history.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "steps": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "default": 1
          }
        },
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      }
    }
    propose_variantsAction

    Offer 2-3 alternative layouts as ghosted overlays for the human to choose between.

    View tool JSON
    {
      "name": "propose_variants",
      "kind": "act",
      "impl": "imperative",
      "description": "Offer 2-3 alternative layouts as ghosted overlays for the human to choose between.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "goal": {
            "type": "string",
            "description": "What the alternatives should optimise for."
          },
          "variants": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "summary": {
                  "type": "string",
                  "description": "One line the human will read on the overlay."
                },
                "edits": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "wallId": {
                        "type": "string"
                      },
                      "distanceIn": {
                        "type": "number"
                      },
                      "direction": {
                        "type": "string",
                        "enum": [
                          "north",
                          "south",
                          "east",
                          "west"
                        ]
                      }
                    },
                    "required": [
                      "wallId",
                      "distanceIn",
                      "direction"
                    ],
                    "additionalProperties": false
                  },
                  "description": "Wall moves that define this alternative."
                }
              },
              "required": [
                "summary",
                "edits"
              ],
              "additionalProperties": false
            },
            "minItems": 1,
            "maxItems": 3
          }
        },
        "required": [
          "goal",
          "variants"
        ],
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      }
    }