Skip to main content
Glama
using76
by using76

bulc_place_furniture

Place furniture items in building designs using catalog IDs and precise centimeter coordinates, with options for custom dimensions, rotation, and floor level placement.

Instructions

Place a furniture item at the specified position. Get catalog IDs from bulc_list_furniture_catalog first. All coordinates are in centimeters.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
catalogIdYesCatalog ID from bulc_list_furniture_catalog
xYesX coordinate in centimeters
yYesY coordinate in centimeters
elevationNoHeight from floor in centimeters. Default: 0
angleNoRotation angle in degrees (0-360). Default: 0
widthNoCustom width in centimeters (optional, overrides catalog)
depthNoCustom depth in centimeters (optional, overrides catalog)
heightNoCustom height in centimeters (optional, overrides catalog)
nameNoCustom name for display
levelNoFloor level index. Default: current level

Implementation Reference

  • Handler logic for 'bulc_place_furniture': parses arguments using PlaceFurnitureSchema and sends a 'place_furniture' command to the BULC client.
    case "bulc_place_furniture": {
      const validated = PlaceFurnitureSchema.parse(args);
      result = await client.sendCommand({
        action: "place_furniture",
        params: validated,
      });
      break;
    }
  • Tool schema definition for 'bulc_place_furniture' including name, description, inputSchema, and annotations, exported as part of furnitureTools array.
    {
      name: "bulc_place_furniture",
      description:
        "Place a furniture item at the specified position. " +
        "Get catalog IDs from bulc_list_furniture_catalog first. " +
        "All coordinates are in centimeters.",
      inputSchema: {
        type: "object" as const,
        properties: {
          catalogId: {
            type: "string",
            description: "Catalog ID from bulc_list_furniture_catalog",
          },
          x: {
            type: "number",
            description: "X coordinate in centimeters",
          },
          y: {
            type: "number",
            description: "Y coordinate in centimeters",
          },
          elevation: {
            type: "number",
            description: "Height from floor in centimeters. Default: 0",
          },
          angle: {
            type: "number",
            description: "Rotation angle in degrees (0-360). Default: 0",
          },
          width: {
            type: "number",
            description: "Custom width in centimeters (optional, overrides catalog)",
          },
          depth: {
            type: "number",
            description: "Custom depth in centimeters (optional, overrides catalog)",
          },
          height: {
            type: "number",
            description: "Custom height in centimeters (optional, overrides catalog)",
          },
          name: {
            type: "string",
            description: "Custom name for display",
          },
          level: {
            type: "integer",
            description: "Floor level index. Default: current level",
          },
        },
        required: ["catalogId", "x", "y"],
      },
      annotations: {
        readOnlyHint: false,
        destructiveHint: true,
      },
    },
  • Zod validation schema (PlaceFurnitureSchema) for inputs to the bulc_place_furniture tool.
    const PlaceFurnitureSchema = z.object({
      catalogId: z.string(),
      x: z.number(),
      y: z.number(),
      elevation: z.number().optional(),
      angle: z.number().optional(),
      width: z.number().positive().optional(),
      depth: z.number().positive().optional(),
      height: z.number().positive().optional(),
      name: z.string().optional(),
      level: z.number().int().optional(),
    });
  • src/index.ts:40-51 (registration)
    Registration of tool schemas: spreads furnitureTools (including bulc_place_furniture) into the allTools array provided to MCP ListToolsRequest.
    const allTools = [
      ...contextTools,      // 8 tools: spatial context, home info, levels, undo/redo, save
      ...roomTools,         // 5 tools: create, create_polygon, list, modify, delete
      ...wallTools,         // 5 tools: create, create_rectangle, list, modify, delete
      ...furnitureTools,    // 5 tools: catalog, place, list, modify, delete
      ...fdsDataTools,      // 7 tools: get, fire_source, detector, sprinkler, hvac, thermocouple, clear
      ...meshTools,         // 5 tools: list, create, auto, modify, delete
      ...simulationTools,   // 4 tools: get_settings, time, output, ambient
      ...fdsRunTools,       // 6 tools: preview, validate, export, run, status, stop
      ...resultTools,       // 5 tools: open_viewer, list_datasets, point_data, aset, report
      ...evacTools,         // 25 tools: setup, stairs, agents, run, results, advanced features
    ];
  • src/index.ts:79-81 (registration)
    Handler routing registration: dispatches calls to 'bulc_place_furniture' (and other furniture tools) to handleFurnitureTool.
    if (name.startsWith("bulc_") && name.includes("furniture")) {
      return await handleFurnitureTool(name, safeArgs);
    }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/using76/BULC_MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server