bulc_modify_evac_stair
Modify evacuation stair properties like capacity, speed, and position to optimize building safety and compliance in fire simulations.
Instructions
Modify an existing evacuation stair configuration. Update capacity, speed, or position properties.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| furnitureId | Yes | Furniture ID of the stair to modify | |
| entryX | No | New entry point X coordinate in cm | |
| entryY | No | New entry point Y coordinate in cm | |
| exitX | No | New exit point X coordinate in cm | |
| exitY | No | New exit point Y coordinate in cm | |
| width | No | New stair width in meters | |
| capacity | No | New maximum capacity | |
| travelSpeed | No | New travel speed in m/s |
Implementation Reference
- src/tools/evac.ts:470-517 (registration)Tool registration in evacTools array, defining name, description, input schema, and annotations for MCP tool listing.{ name: "bulc_modify_evac_stair", description: "Modify an existing evacuation stair configuration. " + "Update capacity, speed, or position properties.", inputSchema: { type: "object" as const, properties: { furnitureId: { type: "string", description: "Furniture ID of the stair to modify", }, entryX: { type: "number", description: "New entry point X coordinate in cm", }, entryY: { type: "number", description: "New entry point Y coordinate in cm", }, exitX: { type: "number", description: "New exit point X coordinate in cm", }, exitY: { type: "number", description: "New exit point Y coordinate in cm", }, width: { type: "number", description: "New stair width in meters", }, capacity: { type: "integer", description: "New maximum capacity", }, travelSpeed: { type: "number", description: "New travel speed in m/s", }, }, required: ["furnitureId"], }, annotations: { readOnlyHint: false, destructiveHint: true, }, },
- src/tools/evac.ts:821-830 (schema)Zod schema used for runtime input validation in the tool handler.const ModifyEvacStairSchema = z.object({ furnitureId: z.string(), entryX: z.number().optional(), entryY: z.number().optional(), exitX: z.number().optional(), exitY: z.number().optional(), width: z.number().positive().optional(), capacity: z.number().int().positive().optional(), travelSpeed: z.number().positive().optional(), });
- src/tools/evac.ts:1058-1065 (handler)Handler logic within handleEvacTool switch statement: validates input and sends 'modify_evac_stair' action to BULC client.case "bulc_modify_evac_stair": { const validated = ModifyEvacStairSchema.parse(args); result = await client.sendCommand({ action: "modify_evac_stair", params: validated, }); break; }
- src/index.ts:40-51 (registration)MCP tool list registration: evacTools spread into allTools, returned by ListToolsRequestHandler.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:135-137 (handler)Main MCP CallToolRequestHandler routing: dispatches 'bulc_*evac*' tools to handleEvacTool.if (name.startsWith("bulc_") && name.includes("evac")) { return await handleEvacTool(name, safeArgs); }