Skip to main content
Glama
using76
by using76

bulc_set_premovement_time

Configure evacuation agent pre-movement timing by setting fire detection time and reaction time parameters with statistical distributions for building safety simulations.

Instructions

Set pre-movement time parameters for evacuation agents. Includes detection time and reaction time with statistical distributions.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
detectionTimeNoFire detection time in seconds. Default: 0 (instant detection)
reactionTimeMeanNoMean reaction time in seconds. Default: 30
reactionTimeStdDevNoReaction time standard deviation in seconds. Default: 10
distributionNoDistribution type: 'NORMAL', 'LOGNORMAL', 'UNIFORM'. Default: NORMAL
minReactionTimeNoMinimum reaction time in seconds. Default: 0
maxReactionTimeNoMaximum reaction time in seconds. For UNIFORM distribution.
applyPerRoomNoApply different reaction times per room. Default: false
roomSettingsNoPer-room settings: [{room: '...', reactionTimeMean: ...}, ...]

Implementation Reference

  • The handler case within handleEvacTool function that validates input using SetPremovementTimeSchema and sends the 'set_premovement_time' command to the BULC client.
    case "bulc_set_premovement_time": {
      const validated = SetPremovementTimeSchema.parse(args);
      result = await client.sendCommand({
        action: "set_premovement_time",
        params: validated,
      });
      break;
    }
  • Zod validation schema used in the handler to parse and validate the tool input parameters.
    const SetPremovementTimeSchema = z.object({
      detectionTime: z.number().min(0).optional(),
      reactionTimeMean: z.number().min(0).optional(),
      reactionTimeStdDev: z.number().min(0).optional(),
      distribution: z.enum(["NORMAL", "LOGNORMAL", "UNIFORM"]).optional(),
      minReactionTime: z.number().min(0).optional(),
      maxReactionTime: z.number().positive().optional(),
      applyPerRoom: z.boolean().optional(),
      roomSettings: z.array(z.object({
        room: z.string(),
        reactionTimeMean: z.number().optional(),
        reactionTimeStdDev: z.number().optional(),
      })).optional(),
    });
  • Tool specification object defining name, description, input schema, and annotations, included in the exported evacTools array for MCP server registration.
    {
      name: "bulc_set_premovement_time",
      description:
        "Set pre-movement time parameters for evacuation agents. " +
        "Includes detection time and reaction time with statistical distributions.",
      inputSchema: {
        type: "object" as const,
        properties: {
          detectionTime: {
            type: "number",
            description: "Fire detection time in seconds. Default: 0 (instant detection)",
          },
          reactionTimeMean: {
            type: "number",
            description: "Mean reaction time in seconds. Default: 30",
          },
          reactionTimeStdDev: {
            type: "number",
            description: "Reaction time standard deviation in seconds. Default: 10",
          },
          distribution: {
            type: "string",
            description: "Distribution type: 'NORMAL', 'LOGNORMAL', 'UNIFORM'. Default: NORMAL",
            enum: ["NORMAL", "LOGNORMAL", "UNIFORM"],
          },
          minReactionTime: {
            type: "number",
            description: "Minimum reaction time in seconds. Default: 0",
          },
          maxReactionTime: {
            type: "number",
            description: "Maximum reaction time in seconds. For UNIFORM distribution.",
          },
          applyPerRoom: {
            type: "boolean",
            description: "Apply different reaction times per room. Default: false",
          },
          roomSettings: {
            type: "array",
            description: "Per-room settings: [{room: '...', reactionTimeMean: ...}, ...]",
            items: {
              type: "object",
              properties: {
                room: { type: "string" },
                reactionTimeMean: { type: "number" },
                reactionTimeStdDev: { type: "number" },
              },
            },
          },
        },
      },
      annotations: {
        readOnlyHint: false,
        destructiveHint: true,
      },
    },
  • src/index.ts:139-149 (registration)
    Dispatch logic in main tool handler that routes calls to 'bulc_set_premovement_time' to the handleEvacTool function.
    if (
      name === "bulc_set_agent_properties" ||
      name === "bulc_generate_rset_report" ||
      name === "bulc_save_evac_result" ||
      name === "bulc_set_exit_assignment" ||
      name === "bulc_set_premovement_time" ||
      name === "bulc_set_fire_coupling"
    ) {
      return await handleEvacTool(name, safeArgs);
    }
  • src/index.ts:40-51 (registration)
    Main tools array that includes evacTools (containing the bulc_set_premovement_time tool) for listing available tools to the MCP client.
    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
    ];

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