bulc_list_furniture_catalog
Browse and filter furniture items from the BULC catalog to find specific pieces for building design projects, returning IDs needed for placement.
Instructions
Get a list of available furniture items from the catalog. Use category filter to narrow down results. Returns catalog IDs needed for bulc_place_furniture.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | Filter by category (e.g., 'Seats', 'Tables', 'Beds', 'Doors', 'Windows', 'Lights') | |
| search | No | Search by name (partial match) | |
| limit | No | Maximum number of results to return. Default: 20 |
Implementation Reference
- src/tools/furniture.ts:253-260 (handler)Core handler logic: validates input using ListCatalogSchema and sends 'list_furniture_catalog' action to BULC client.case "bulc_list_furniture_catalog": { const validated = ListCatalogSchema.parse(args); result = await client.sendCommand({ action: "list_furniture_catalog", params: validated, }); break; }
- src/tools/furniture.ts:200-204 (schema)Zod validation schema for tool parameters: category (optional string), search (optional string), limit (optional positive integer).const ListCatalogSchema = z.object({ category: z.string().optional(), search: z.string().optional(), limit: z.number().int().positive().optional(), });
- src/tools/furniture.ts:9-37 (registration)Tool metadata registration including name, description, input schema, and annotations (read-only, non-destructive).{ name: "bulc_list_furniture_catalog", description: "Get a list of available furniture items from the catalog. " + "Use category filter to narrow down results. " + "Returns catalog IDs needed for bulc_place_furniture.", inputSchema: { type: "object" as const, properties: { category: { type: "string", description: "Filter by category (e.g., 'Seats', 'Tables', 'Beds', 'Doors', 'Windows', 'Lights')", }, search: { type: "string", description: "Search by name (partial match)", }, limit: { type: "integer", description: "Maximum number of results to return. Default: 20", }, }, }, annotations: { readOnlyHint: true, destructiveHint: false, }, },
- src/index.ts:40-51 (registration)Global tool registry: includes furnitureTools in the complete list of MCP tools served via listTools.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:78-80 (handler)Main MCP callTool dispatcher routes furniture tools (including bulc_list_furniture_catalog) to handleFurnitureTool.// Furniture tools if (name.startsWith("bulc_") && name.includes("furniture")) { return await handleFurnitureTool(name, safeArgs);