Skip to main content
Glama
using76
by using76

bulc_place_furniture

Destructive

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);
    }

Tool Definition Quality

Score is being calculated. Check back soon.

Install Server

Other Tools

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