bulc_place_evac_agents
Place evacuation agents in building simulations to analyze emergency scenarios. Distribute agents randomly by count or position them at specific coordinates for fire safety planning.
Instructions
Place evacuation agents in rooms or at specific positions. Can place by count (random distribution) or at exact coordinates.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| room | No | Room name or ID to place agents in | |
| level | No | Floor level index. Default: current level | |
| count | No | Number of agents to place randomly. Required if no positions given. | |
| positions | No | Specific positions as [[x1,y1], [x2,y2], ...] in cm. Alternative to count. | |
| agentRadius | No | Agent radius in meters. Default: 0.25 | |
| desiredSpeed | No | Desired walking speed in m/s. Default: 1.2 | |
| maxSpeed | No | Maximum walking speed in m/s. Default: 1.5 | |
| minSpacing | No | Minimum spacing between agents in meters. Default: 0.5 |
Implementation Reference
- src/tools/evac.ts:944-951 (handler)Handler logic for the 'bulc_place_evac_agents' tool: validates input using Zod schema and sends 'place_evac_agents' command to the BULC client.case "bulc_place_evac_agents": { const validated = PlaceEvacAgentsSchema.parse(args); result = await client.sendCommand({ action: "place_evac_agents", params: validated, }); break;
- src/tools/evac.ts:770-779 (schema)Zod schema for validating inputs to the 'bulc_place_evac_agents' tool.const PlaceEvacAgentsSchema = z.object({ room: z.string().optional(), level: z.number().int().optional(), count: z.number().int().positive().optional(), positions: z.array(z.array(z.number()).length(2)).optional(), agentRadius: z.number().positive().optional(), desiredSpeed: z.number().positive().optional(), maxSpeed: z.number().positive().optional(), minSpacing: z.number().positive().optional(), });
- src/tools/evac.ts:205-254 (schema)Tool definition including name, description, and input schema for MCP registration.{ name: "bulc_place_evac_agents", description: "Place evacuation agents in rooms or at specific positions. " + "Can place by count (random distribution) or at exact coordinates.", inputSchema: { type: "object" as const, properties: { room: { type: "string", description: "Room name or ID to place agents in", }, level: { type: "integer", description: "Floor level index. Default: current level", }, count: { type: "integer", description: "Number of agents to place randomly. Required if no positions given.", }, positions: { type: "array", description: "Specific positions as [[x1,y1], [x2,y2], ...] in cm. Alternative to count.", items: { type: "array", items: { type: "number" }, }, }, agentRadius: { type: "number", description: "Agent radius in meters. Default: 0.25", }, desiredSpeed: { type: "number", description: "Desired walking speed in m/s. Default: 1.2", }, maxSpeed: { type: "number", description: "Maximum walking speed in m/s. Default: 1.5", }, minSpacing: { type: "number", description: "Minimum spacing between agents in meters. Default: 0.5", }, }, }, annotations: { readOnlyHint: false, destructiveHint: true, },
- src/tools/evac.ts:735-735 (registration)End of evacTools array where the tool is registered in the list of tools.];