bulc_modify_furniture
Adjust furniture properties like position, dimensions, rotation, and visibility in building designs. Update specific attributes without recreating items.
Instructions
Modify properties of an existing furniture item. Only specified properties will be changed. Get furniture IDs from bulc_list_furniture.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Furniture ID to modify (from bulc_list_furniture) | |
| x | No | New X coordinate (cm) | |
| y | No | New Y coordinate (cm) | |
| elevation | No | New elevation from floor (cm) | |
| angle | No | New rotation angle (degrees) | |
| width | No | New width (cm) | |
| depth | No | New depth (cm) | |
| height | No | New height (cm) | |
| name | No | New display name | |
| visible | No | Visibility state |
Implementation Reference
- src/tools/furniture.ts:280-287 (handler)Executes the bulc_modify_furniture tool: validates input parameters using Zod schema and sends a 'modify_furniture' command with validated params to the BULC client.case "bulc_modify_furniture": { const validated = ModifyFurnitureSchema.parse(args); result = await client.sendCommand({ action: "modify_furniture", params: validated, }); break; }
- src/tools/furniture.ts:225-236 (schema)Zod input validation schema for the bulc_modify_furniture tool parameters.const ModifyFurnitureSchema = z.object({ id: z.string(), x: z.number().optional(), y: z.number().optional(), 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(), visible: z.boolean().optional(), });
- src/tools/furniture.ts:122-178 (registration)MCP tool specification for bulc_modify_furniture: defines name, description, input schema, required fields, and annotations for tool listing.{ name: "bulc_modify_furniture", description: "Modify properties of an existing furniture item. " + "Only specified properties will be changed. " + "Get furniture IDs from bulc_list_furniture.", inputSchema: { type: "object" as const, properties: { id: { type: "string", description: "Furniture ID to modify (from bulc_list_furniture)", }, x: { type: "number", description: "New X coordinate (cm)", }, y: { type: "number", description: "New Y coordinate (cm)", }, elevation: { type: "number", description: "New elevation from floor (cm)", }, angle: { type: "number", description: "New rotation angle (degrees)", }, width: { type: "number", description: "New width (cm)", }, depth: { type: "number", description: "New depth (cm)", }, height: { type: "number", description: "New height (cm)", }, name: { type: "string", description: "New display name", }, visible: { type: "boolean", description: "Visibility state", }, }, required: ["id"], }, annotations: { readOnlyHint: false, destructiveHint: true, }, },
- src/index.ts:78-81 (handler)Dispatch routing in the MCP server's CallToolRequestHandler that routes bulc_modify_furniture calls to the furniture-specific handler.// Furniture tools if (name.startsWith("bulc_") && name.includes("furniture")) { return await handleFurnitureTool(name, safeArgs); }
- src/index.ts:54-58 (registration)MCP server handler for ListToolsRequest that returns allTools array, which includes the bulc_modify_furniture specification via furnitureTools spread.server.setRequestHandler(ListToolsRequestSchema, async () => { return { tools: allTools, }; });