{
  "name": "ElevatorCalc",
  "url": "https://elevatorcalc.com",
  "description": "Free elevator and escalator calculators: hoistway size, rated load, ADA car size, pit and overhead, traffic analysis, travel time, escalator dimensions, escalator capacity, counterweight balance and rope safety factor. Each one shows its working, cites the code clause and edition, and can be used by AI agents through llms.txt and an MCP endpoint.",
  "owner": "Maxwell Industries LLC",
  "disclaimer": "Not engineering advice; a licensed professional checks every result. Not a substitute for a licensed engineer, the manufacturer's data or the authority having jurisdiction; confirm the code edition your jurisdiction has adopted.",
  "status": "First build: the code limits used here await a trade check against a licensed copy of the cited edition. This applies to the calculators marked tradeCheckPending.",
  "units": "Numeric API inputs are SI: mm, m, m/s, m/s², m/s³, kg, m², degrees, seconds, kN and kg/m. Each output is in the unit declared for it in outputs: SI for most, with US companion fields (areaFt2 and clearFloorAreaFt2 in ft², ratedLoadLb in lb) declared in their own units.",
  "mcp": {
    "endpoint": "https://elevatorcalc.com/api/mcp",
    "transport": "Streamable HTTP (stateless, JSON responses)",
    "howTo": "https://elevatorcalc.com/mcp"
  },
  "calculators": [
    {
      "number": 1,
      "id": "hoistway",
      "title": "Elevator size and hoistway dimensions calculator",
      "summary": "Plans the hoistway width, depth and height from the car's inside size, door type and counterweight position. It draws a live plan and section, checks the ASME A17.1 running clearances and gives the car's minimum rated load.",
      "url": "https://elevatorcalc.com/calculators/elevator-hoistway-size",
      "mcpTool": "elevator_hoistway_size",
      "status": "First build: the code limits used here await a trade check against a licensed copy of the cited edition.",
      "tradeCheckPending": true,
      "inputs": [
        {
          "key": "carWidth",
          "label": "Car inside width",
          "type": "number",
          "unit": "mm",
          "unitLabel": "mm",
          "min": 900,
          "max": 4000,
          "default": 2032,
          "help": "Inside clear width, side wall to side wall."
        },
        {
          "key": "carDepth",
          "label": "Car inside depth",
          "type": "number",
          "unit": "mm",
          "unitLabel": "mm",
          "min": 900,
          "max": 4000,
          "default": 1651,
          "help": "Inside clear depth, back wall to front return."
        },
        {
          "key": "doorWidth",
          "label": "Door clear opening",
          "type": "number",
          "unit": "mm",
          "unitLabel": "mm",
          "min": 700,
          "max": 2600,
          "default": 1066.8,
          "help": "Clear width of the entrance."
        },
        {
          "key": "doorType",
          "label": "Door type",
          "type": "choice",
          "options": [
            {
              "value": "center",
              "label": "Two-panel centre opening"
            },
            {
              "value": "side",
              "label": "Two-speed side opening"
            }
          ],
          "default": "center",
          "help": "How the door panels slide."
        },
        {
          "key": "cwtPosition",
          "label": "Counterweight position",
          "type": "choice",
          "options": [
            {
              "value": "rear",
              "label": "Rear"
            },
            {
              "value": "side",
              "label": "Side"
            }
          ],
          "default": "rear",
          "help": "Where the counterweight runs relative to the car."
        },
        {
          "key": "ratedSpeed",
          "label": "Rated speed",
          "type": "number",
          "unit": "m/s",
          "unitLabel": "m/s",
          "min": 0.25,
          "max": 4,
          "default": 1.016,
          "help": "Used for the pit and overhead in the section."
        },
        {
          "key": "travel",
          "label": "Travel",
          "type": "number",
          "unit": "m",
          "unitLabel": "m",
          "min": 2,
          "max": 200,
          "default": 12.192,
          "help": "Bottom landing to top landing."
        },
        {
          "key": "wallThickness",
          "label": "Car wall thickness",
          "type": "number",
          "unit": "mm",
          "unitLabel": "mm",
          "min": 20,
          "max": 150,
          "default": 40,
          "help": "Car wall including finishes, each side."
        },
        {
          "key": "railZone",
          "label": "Guide rail zone, each side",
          "type": "number",
          "unit": "mm",
          "unitLabel": "mm",
          "min": 100,
          "max": 500,
          "default": 200,
          "help": "Car outside wall to hoistway wall, holding the rail, brackets and guide shoes."
        },
        {
          "key": "frontZone",
          "label": "Entrance zone",
          "type": "number",
          "unit": "mm",
          "unitLabel": "mm",
          "min": 100,
          "max": 450,
          "default": 200,
          "help": "Car front wall to hoistway front wall: sills, gap and door track."
        },
        {
          "key": "wallGap",
          "label": "Car to rear wall gap",
          "type": "number",
          "unit": "mm",
          "unitLabel": "mm",
          "min": 10,
          "max": 300,
          "default": 50,
          "help": "Used when the counterweight is at the side."
        },
        {
          "key": "cwtGap",
          "label": "Car to counterweight gap",
          "type": "number",
          "unit": "mm",
          "unitLabel": "mm",
          "min": 10,
          "max": 300,
          "default": 50,
          "help": "Running clearance between car and counterweight. With a side counterweight the real gap is this plus the rail zone, so the check on this value alone is conservative."
        },
        {
          "key": "cwtDepth",
          "label": "Counterweight frame depth",
          "type": "number",
          "unit": "mm",
          "unitLabel": "mm",
          "min": 100,
          "max": 600,
          "default": 200,
          "help": "Counterweight frame and filler weights."
        },
        {
          "key": "cwtWallGap",
          "label": "Counterweight to wall gap",
          "type": "number",
          "unit": "mm",
          "unitLabel": "mm",
          "min": 10,
          "max": 300,
          "default": 50,
          "help": "Running clearance between counterweight and hoistway wall."
        },
        {
          "key": "doorLap",
          "label": "Door lap and jamb allowance",
          "type": "number",
          "unit": "mm",
          "unitLabel": "mm",
          "min": 0,
          "max": 400,
          "default": 100,
          "help": "Panel overlap and frame allowance added to the door stack."
        },
        {
          "key": "units",
          "label": "System the code limits are checked in",
          "type": "choice",
          "options": [
            {
              "value": "si",
              "label": "Metric (the SI figures A17.1 prints)"
            },
            {
              "value": "us",
              "label": "US (the inch-pound figures A17.1 prints)"
            }
          ],
          "default": "si",
          "help": "ASME A17.1/CSA B44 prints each limit in both systems and the two are not exact equivalents (1.0 m/s against 200 ft/min); a value is checked against the figure printed in this system, so pass \"us\" when the job works in US units. Inputs stay in SI units either way. The page sets this from its unit switch."
        }
      ],
      "outputs": [
        {
          "key": "hoistwayWidth",
          "label": "Hoistway width",
          "unit": "mm",
          "help": "Clear inside width of the hoistway, rounded up."
        },
        {
          "key": "hoistwayDepth",
          "label": "Hoistway depth",
          "unit": "mm",
          "help": "Clear inside depth, front wall to rear wall, rounded up."
        },
        {
          "key": "pitDepth",
          "label": "Pit depth",
          "unit": "mm",
          "help": "From calculator 4 with its defaults, rounded up."
        },
        {
          "key": "overhead",
          "label": "Overhead",
          "unit": "mm",
          "help": "From calculator 4 with its defaults, rounded up."
        },
        {
          "key": "hoistwayHeight",
          "label": "Hoistway height, pit floor to ceiling",
          "unit": "mm",
          "help": "Pit plus travel plus overhead, rounded up."
        },
        {
          "key": "minRatedLoad",
          "label": "Minimum rated load for this car",
          "unit": "kg",
          "help": "Calculator 2's rating for this car: its ASME minimum rounded up to a whole kilogram, so it never reads low."
        }
      ],
      "formulas": [
        {
          "label": "Width by the car",
          "formula": "W_c = car width + 2 wall + 2 rail zone"
        },
        {
          "label": "Width by the door",
          "formula": "W_d = k x door opening + lap (k = 2 centre opening, 1.5 two-speed side)"
        },
        {
          "label": "Width, rear counterweight",
          "formula": "W = max(W_c, W_d)"
        },
        {
          "label": "Depth, rear counterweight",
          "formula": "D = entrance zone + car depth + 2 wall + car to counterweight gap + counterweight depth + counterweight to wall gap"
        },
        {
          "label": "Height",
          "formula": "H = pit + travel + overhead"
        }
      ],
      "citations": [
        {
          "standard": "ASME A17.1/CSA B44",
          "edition": "2019",
          "clause": "2.5.1.1 and 2.5.1.2",
          "topic": "Horizontal running clearances: car to wall (2.5.1.1), car to counterweight and counterweight to wall (2.5.1.2)"
        },
        {
          "standard": "ASME A17.1/CSA B44",
          "edition": "2019",
          "clause": "2.16.1.1",
          "topic": "Minimum rated load from inside net platform area (via calculator 2)"
        },
        {
          "standard": "ASME A17.1/CSA B44",
          "edition": "2019",
          "clause": "2.4.1, 2.4.6 and 2.22.4",
          "topic": "Pit and overhead for the section (via calculator 4)"
        }
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "carWidth": {
            "type": "number",
            "minimum": 900,
            "maximum": 4000,
            "default": 2032,
            "description": "Car inside width, in millimetres (mm). Inside clear width, side wall to side wall. Taken to 15 significant digits before use."
          },
          "carDepth": {
            "type": "number",
            "minimum": 900,
            "maximum": 4000,
            "default": 1651,
            "description": "Car inside depth, in millimetres (mm). Inside clear depth, back wall to front return. Taken to 15 significant digits before use."
          },
          "doorWidth": {
            "type": "number",
            "minimum": 700,
            "maximum": 2600,
            "default": 1066.8,
            "description": "Door clear opening, in millimetres (mm). Clear width of the entrance. Taken to 15 significant digits before use."
          },
          "doorType": {
            "type": "string",
            "enum": [
              "center",
              "side"
            ],
            "default": "center",
            "description": "Door type. How the door panels slide."
          },
          "cwtPosition": {
            "type": "string",
            "enum": [
              "rear",
              "side"
            ],
            "default": "rear",
            "description": "Counterweight position. Where the counterweight runs relative to the car."
          },
          "ratedSpeed": {
            "type": "number",
            "minimum": 0.25,
            "maximum": 4,
            "default": 1.016,
            "description": "Rated speed, in metres per second (m/s). Used for the pit and overhead in the section. Taken to 15 significant digits before use."
          },
          "travel": {
            "type": "number",
            "minimum": 2,
            "maximum": 200,
            "default": 12.192,
            "description": "Travel, in metres (m). Bottom landing to top landing. Taken to 15 significant digits before use."
          },
          "wallThickness": {
            "type": "number",
            "minimum": 20,
            "maximum": 150,
            "default": 40,
            "description": "Car wall thickness, in millimetres (mm). Car wall including finishes, each side. Taken to 15 significant digits before use."
          },
          "railZone": {
            "type": "number",
            "minimum": 100,
            "maximum": 500,
            "default": 200,
            "description": "Guide rail zone, each side, in millimetres (mm). Car outside wall to hoistway wall, holding the rail, brackets and guide shoes. Taken to 15 significant digits before use."
          },
          "frontZone": {
            "type": "number",
            "minimum": 100,
            "maximum": 450,
            "default": 200,
            "description": "Entrance zone, in millimetres (mm). Car front wall to hoistway front wall: sills, gap and door track. Taken to 15 significant digits before use."
          },
          "wallGap": {
            "type": "number",
            "minimum": 10,
            "maximum": 300,
            "default": 50,
            "description": "Car to rear wall gap, in millimetres (mm). Used when the counterweight is at the side. Taken to 15 significant digits before use."
          },
          "cwtGap": {
            "type": "number",
            "minimum": 10,
            "maximum": 300,
            "default": 50,
            "description": "Car to counterweight gap, in millimetres (mm). Running clearance between car and counterweight. With a side counterweight the real gap is this plus the rail zone, so the check on this value alone is conservative. Taken to 15 significant digits before use."
          },
          "cwtDepth": {
            "type": "number",
            "minimum": 100,
            "maximum": 600,
            "default": 200,
            "description": "Counterweight frame depth, in millimetres (mm). Counterweight frame and filler weights. Taken to 15 significant digits before use."
          },
          "cwtWallGap": {
            "type": "number",
            "minimum": 10,
            "maximum": 300,
            "default": 50,
            "description": "Counterweight to wall gap, in millimetres (mm). Running clearance between counterweight and hoistway wall. Taken to 15 significant digits before use."
          },
          "doorLap": {
            "type": "number",
            "minimum": 0,
            "maximum": 400,
            "default": 100,
            "description": "Door lap and jamb allowance, in millimetres (mm). Panel overlap and frame allowance added to the door stack. Taken to 15 significant digits before use."
          },
          "units": {
            "type": "string",
            "enum": [
              "si",
              "us"
            ],
            "default": "si",
            "description": "System the code limits are checked in. ASME A17.1/CSA B44 prints each limit in both systems and the two are not exact equivalents (1.0 m/s against 200 ft/min); a value is checked against the figure printed in this system, so pass \"us\" when the job works in US units. Inputs stay in SI units either way. The page sets this from its unit switch."
          }
        },
        "additionalProperties": false
      }
    },
    {
      "number": 2,
      "id": "rated-load",
      "title": "Elevator rated load and capacity calculator",
      "summary": "Minimum rated load from the car's inside platform area, or the largest car area a rated load allows, by the ASME A17.1/CSA B44 passenger formula, with the EN 81-20 person count.",
      "url": "https://elevatorcalc.com/calculators/elevator-rated-load-capacity",
      "mcpTool": "elevator_rated_load",
      "status": "First build: the code limits used here await a trade check against a licensed copy of the cited edition.",
      "tradeCheckPending": true,
      "inputs": [
        {
          "key": "direction",
          "label": "Work out",
          "type": "choice",
          "options": [
            {
              "value": "area-to-load",
              "label": "Rated load from car size"
            },
            {
              "value": "load-to-area",
              "label": "Largest car area from rated load"
            }
          ],
          "default": "area-to-load",
          "help": "Pick which way to run the rule."
        },
        {
          "key": "carWidth",
          "label": "Car inside width",
          "type": "number",
          "unit": "mm",
          "unitLabel": "mm",
          "min": 600,
          "max": 5000,
          "default": 2032,
          "help": "Inside clear width of the car, side wall to side wall."
        },
        {
          "key": "carDepth",
          "label": "Car inside depth",
          "type": "number",
          "unit": "mm",
          "unitLabel": "mm",
          "min": 600,
          "max": 5000,
          "default": 1651,
          "help": "Inside clear depth of the car, back wall to front return."
        },
        {
          "key": "ratedLoad",
          "label": "Rated load",
          "type": "number",
          "unit": "kg",
          "unitLabel": "kg",
          "min": 100,
          "max": 13500,
          "default": 1587.573295,
          "help": "The rated load on the capacity plate."
        }
      ],
      "outputs": [
        {
          "key": "ratedLoad",
          "label": "Rated load",
          "unit": "kg",
          "help": "From a car size: the minimum rated load rounded up to a whole kilogram, so it never reads low; persons and pounds come from this figure. From a load: the load you gave, exactly as given."
        },
        {
          "key": "area",
          "label": "Inside net platform area",
          "unit": "m2",
          "help": "From a car size: the car's inside width times depth, rounded to the nearest 0.001 m²; the rated load is worked from the unrounded area. From a load: the largest area the load allows, rounded down to 0.001 m² and checked forward, so a car of exactly this area still meets the rule."
        },
        {
          "key": "persons",
          "label": "Persons (EN 81-20, 75 kg each)",
          "unit": "count",
          "help": "Rated load divided by 75 kg, rounded down."
        },
        {
          "key": "areaFt2",
          "label": "Inside net platform area in square feet",
          "unit": "ft2",
          "help": "The US figure for area. From a car size: the car's own area rounded to the nearest 0.01 ft². From a load: the largest area the load allows, rounded down to 0.01 ft² and checked forward, so a car of exactly this area meets the rule; quote this, not a conversion of area."
        },
        {
          "key": "areaExact",
          "label": "Exact root, before rounding",
          "unit": "m2",
          "help": "For checking only, in m² to 9 decimals. From a car size: the car's own width times depth. From a load: the root of the formula before it is rounded down; it is NOT rounded the safe way, so do not quote or round it as a car size: use area (m²) or areaFt2 (ft²)."
        },
        {
          "key": "ratedLoadLb",
          "label": "Rated load in pounds",
          "unit": "lb",
          "help": "ratedLoad in pounds: from a car size, the whole-kilogram rating (ratedLoad) converted to pounds and rounded up to the next pound, so at or above the ASME pound minimum by up to about 3.2 lb; from a load, the load you gave converted to pounds, to 0.001 lb."
        }
      ],
      "formulas": [
        {
          "label": "Area up to 50 ft²",
          "formula": "W = 0.667 A^2 + 66.7 A (W in lb, A in ft², A <= 50)"
        },
        {
          "label": "Area above 50 ft² to 230 ft²",
          "formula": "W = 0.0467 A^2 + 125 A - 1367 (W in lb, A in ft², 50 < A <= 230)"
        },
        {
          "label": "Persons (EN 81-20)",
          "formula": "n = floor(Q / 75) (Q in kg)"
        }
      ],
      "citations": [
        {
          "standard": "ASME A17.1/CSA B44",
          "edition": "2019",
          "clause": "2.16.1.1, with the formulas of 8.2.1.1 and 8.2.1.2",
          "topic": "Minimum rated load for passenger elevators from inside net platform area"
        },
        {
          "standard": "EN 81-20",
          "edition": "2020",
          "clause": "5.4.2",
          "topic": "Rated load and number of passengers (75 kg per person)"
        }
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "direction": {
            "type": "string",
            "enum": [
              "area-to-load",
              "load-to-area"
            ],
            "default": "area-to-load",
            "description": "Work out. Pick which way to run the rule."
          },
          "carWidth": {
            "type": "number",
            "minimum": 600,
            "maximum": 5000,
            "default": 2032,
            "description": "Car inside width, in millimetres (mm). Inside clear width of the car, side wall to side wall. Taken to 15 significant digits before use."
          },
          "carDepth": {
            "type": "number",
            "minimum": 600,
            "maximum": 5000,
            "default": 1651,
            "description": "Car inside depth, in millimetres (mm). Inside clear depth of the car, back wall to front return. Taken to 15 significant digits before use."
          },
          "ratedLoad": {
            "type": "number",
            "minimum": 100,
            "maximum": 13500,
            "default": 1587.573295,
            "description": "Rated load, in kilograms (kg). The rated load on the capacity plate. Taken to 15 significant digits before use."
          }
        },
        "additionalProperties": false
      }
    },
    {
      "number": 3,
      "id": "ada-car-size",
      "title": "ADA elevator car size checker",
      "summary": "Checks an elevator car's inside dimensions and door width against the 2010 ADA Standards: passenger elevators (407.4.1), LULA elevators (408.4.1) and private residence elevators (409.3 and 409.4.1).",
      "url": "https://elevatorcalc.com/calculators/ada-elevator-car-size",
      "mcpTool": "ada_elevator_car_size",
      "status": "The ADA minimums were read from the federal text of the 2010 ADA Standards on 2026-10-01; no licensed-copy check is pending for this calculator.",
      "tradeCheckPending": false,
      "inputs": [
        {
          "key": "elevatorType",
          "label": "Elevator type",
          "type": "choice",
          "options": [
            {
              "value": "passenger",
              "label": "Passenger elevator (407)"
            },
            {
              "value": "lula",
              "label": "Limited-use, limited-application (408)"
            },
            {
              "value": "private-residence",
              "label": "Private residence elevator (409)"
            }
          ],
          "default": "passenger",
          "help": "The ADA section that applies to the elevator."
        },
        {
          "key": "doorLocation",
          "label": "Door location",
          "type": "choice",
          "options": [
            {
              "value": "centered",
              "label": "Centered"
            },
            {
              "value": "side",
              "label": "Side (off-centered)"
            }
          ],
          "default": "centered",
          "help": "Where the car door sits in the front wall."
        },
        {
          "key": "doorClearWidth",
          "label": "Door clear width",
          "type": "number",
          "unit": "mm",
          "unitLabel": "mm",
          "min": 500,
          "max": 2500,
          "default": 1066.8,
          "help": "Clear opening of the car door."
        },
        {
          "key": "carWidth",
          "label": "Inside car, side to side",
          "type": "number",
          "unit": "mm",
          "unitLabel": "mm",
          "min": 600,
          "max": 4000,
          "default": 2032,
          "help": "Inside clear width, side wall to side wall."
        },
        {
          "key": "depthToReturn",
          "label": "Inside car, back wall to front return",
          "type": "number",
          "unit": "mm",
          "unitLabel": "mm",
          "min": 600,
          "max": 4000,
          "default": 1295.4,
          "help": "Clear depth from the back wall to the front return panel."
        },
        {
          "key": "depthToDoor",
          "label": "Inside car, back wall to inside face of door",
          "type": "number",
          "unit": "mm",
          "unitLabel": "mm",
          "min": 600,
          "max": 4000,
          "default": 1371.6,
          "help": "Clear depth from the back wall to the inside face of the car door. Used for passenger elevators (Table 407.4.1) only."
        },
        {
          "key": "existing",
          "label": "Existing elevator",
          "type": "choice",
          "options": [
            {
              "value": "no",
              "label": "No, new work"
            },
            {
              "value": "yes",
              "label": "Yes, existing car"
            }
          ],
          "default": "no",
          "help": "Existing cars may use the exceptions in 407.4.1 and 408.4.1."
        },
        {
          "key": "system",
          "label": "Measure against",
          "type": "choice",
          "options": [
            {
              "value": "inch",
              "label": "Inch values"
            },
            {
              "value": "metric",
              "label": "Millimetre values"
            }
          ],
          "default": "inch",
          "help": "The inch and millimetre figures the standards print are not exact equivalents (36 in is printed 915 mm), so a design uses one of them throughout."
        }
      ],
      "outputs": [
        {
          "key": "compliant",
          "label": "Meets ADA car size",
          "unit": "text",
          "help": "yes or no"
        },
        {
          "key": "governing",
          "label": "Configuration met",
          "unit": "text",
          "help": "The first permitted configuration your car meets."
        },
        {
          "key": "clearFloorArea",
          "label": "Clear floor area (width × depth to return)",
          "unit": "m2",
          "help": "Inside width times depth to the front return, rounded down so it never reads above the car's area."
        },
        {
          "key": "clearFloorAreaFt2",
          "label": "Clear floor area in square feet",
          "unit": "ft2",
          "help": "The US figure for clearFloorArea: inside width times depth to the front return, rounded down to 0.01 ft²."
        }
      ],
      "formulas": [
        {
          "label": "Inches from millimetres",
          "formula": "x_in = x_mm / 25.4"
        },
        {
          "label": "Compliance",
          "formula": "pass when every minimum of at least one permitted configuration is met"
        }
      ],
      "citations": [
        {
          "standard": "2010 ADA Standards for Accessible Design",
          "edition": "2010",
          "clause": "407.4.1 and Table 407.4.1",
          "topic": "Passenger elevator car dimensions and door clear width"
        },
        {
          "standard": "2010 ADA Standards for Accessible Design",
          "edition": "2010",
          "clause": "408.4.1",
          "topic": "LULA elevator car dimensions and doors"
        },
        {
          "standard": "2010 ADA Standards for Accessible Design",
          "edition": "2010",
          "clause": "409.3, 409.3.2 and 409.4.1",
          "topic": "Private residence elevator doors (to 404.2.3), door at the narrow end, and inside dimensions"
        }
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "elevatorType": {
            "type": "string",
            "enum": [
              "passenger",
              "lula",
              "private-residence"
            ],
            "default": "passenger",
            "description": "Elevator type. The ADA section that applies to the elevator."
          },
          "doorLocation": {
            "type": "string",
            "enum": [
              "centered",
              "side"
            ],
            "default": "centered",
            "description": "Door location. Where the car door sits in the front wall."
          },
          "doorClearWidth": {
            "type": "number",
            "minimum": 500,
            "maximum": 2500,
            "default": 1066.8,
            "description": "Door clear width, in millimetres (mm). Clear opening of the car door. Taken to 15 significant digits before use."
          },
          "carWidth": {
            "type": "number",
            "minimum": 600,
            "maximum": 4000,
            "default": 2032,
            "description": "Inside car, side to side, in millimetres (mm). Inside clear width, side wall to side wall. Taken to 15 significant digits before use."
          },
          "depthToReturn": {
            "type": "number",
            "minimum": 600,
            "maximum": 4000,
            "default": 1295.4,
            "description": "Inside car, back wall to front return, in millimetres (mm). Clear depth from the back wall to the front return panel. Taken to 15 significant digits before use."
          },
          "depthToDoor": {
            "type": "number",
            "minimum": 600,
            "maximum": 4000,
            "default": 1371.6,
            "description": "Inside car, back wall to inside face of door, in millimetres (mm). Clear depth from the back wall to the inside face of the car door. Used for passenger elevators (Table 407.4.1) only. Taken to 15 significant digits before use."
          },
          "existing": {
            "type": "string",
            "enum": [
              "no",
              "yes"
            ],
            "default": "no",
            "description": "Existing elevator. Existing cars may use the exceptions in 407.4.1 and 408.4.1."
          },
          "system": {
            "type": "string",
            "enum": [
              "inch",
              "metric"
            ],
            "default": "inch",
            "description": "Measure against. The inch and millimetre figures the standards print are not exact equivalents (36 in is printed 915 mm), so a design uses one of them throughout."
          }
        },
        "additionalProperties": false
      }
    },
    {
      "number": 4,
      "id": "pit-overhead",
      "title": "Elevator pit depth and overhead calculator",
      "summary": "Minimum pit depth and overhead for a traction elevator from rated speed, buffer type, runbys and car heights, by ASME A17.1/CSA B44 or EN 81-20.",
      "url": "https://elevatorcalc.com/calculators/elevator-pit-depth-overhead",
      "mcpTool": "elevator_pit_overhead",
      "status": "First build: the code limits used here await a trade check against a licensed copy of the cited edition.",
      "tradeCheckPending": true,
      "inputs": [
        {
          "key": "standard",
          "label": "Code",
          "type": "choice",
          "options": [
            {
              "value": "asme",
              "label": "ASME A17.1-2019/CSA B44-19"
            },
            {
              "value": "en",
              "label": "EN 81-20:2020"
            }
          ],
          "default": "asme",
          "help": "The elevator code the job is built to."
        },
        {
          "key": "ratedSpeed",
          "label": "Rated speed",
          "type": "number",
          "unit": "m/s",
          "unitLabel": "m/s",
          "min": 0.1,
          "max": 4,
          "default": 1.016,
          "help": "Contract speed of the car."
        },
        {
          "key": "bufferType",
          "label": "Buffer type",
          "type": "choice",
          "options": [
            {
              "value": "oil",
              "label": "Oil (energy dissipation)"
            },
            {
              "value": "spring",
              "label": "Spring (energy accumulation)"
            }
          ],
          "default": "oil",
          "help": "Oil buffers suit any speed; spring buffers only up to 1.0 m/s (ASME also prints 200 ft/min)."
        },
        {
          "key": "springStroke",
          "label": "Spring buffer stroke",
          "type": "number",
          "unit": "mm",
          "unitLabel": "mm",
          "min": 30,
          "max": 400,
          "default": 100,
          "help": "Stroke of the spring buffer from the maker's data."
        },
        {
          "key": "tripSpeed",
          "label": "Governor tripping speed",
          "type": "number",
          "unit": "m/s",
          "unitLabel": "m/s",
          "min": 0.1,
          "max": 4,
          "default": 1.1684,
          "help": "ASME only: use the governor's tripping speed, at least 115 percent of rated speed. The default 1.1684 m/s suits the default 200 ft/min (1.016 m/s) rating. The 4 m/s input ceiling is a calculator limit, not the code maximum. The upper code limit needs a trade check."
        },
        {
          "key": "carRunby",
          "label": "Car runby",
          "type": "number",
          "unit": "mm",
          "unitLabel": "mm",
          "min": 50,
          "max": 600,
          "default": 150,
          "help": "Gap between the car striker and its buffer with the car level at the bottom landing."
        },
        {
          "key": "cwtRunby",
          "label": "Counterweight runby",
          "type": "number",
          "unit": "mm",
          "unitLabel": "mm",
          "min": 50,
          "max": 900,
          "default": 200,
          "help": "Gap between the counterweight and its buffer with the car level at the top landing."
        },
        {
          "key": "carHeight",
          "label": "Car height",
          "type": "number",
          "unit": "mm",
          "unitLabel": "mm",
          "min": 2000,
          "max": 4500,
          "default": 2600,
          "help": "Car floor to the top of the car roof."
        },
        {
          "key": "equipAbove",
          "label": "Equipment above the car roof",
          "type": "number",
          "unit": "mm",
          "unitLabel": "mm",
          "min": 0,
          "max": 1500,
          "default": 600,
          "help": "Height of the crosshead, door operator or other parts above the roof."
        },
        {
          "key": "equipBelow",
          "label": "Equipment below the platform",
          "type": "number",
          "unit": "mm",
          "unitLabel": "mm",
          "min": 0,
          "max": 1500,
          "default": 500,
          "help": "Depth of the safety plank, guide shoes and other parts below the platform."
        },
        {
          "key": "units",
          "label": "System the code limits are checked in",
          "type": "choice",
          "options": [
            {
              "value": "si",
              "label": "Metric (the SI figures A17.1 prints)"
            },
            {
              "value": "us",
              "label": "US (the inch-pound figures A17.1 prints)"
            }
          ],
          "default": "si",
          "help": "ASME A17.1/CSA B44 prints each limit in both systems and the two are not exact equivalents (1.0 m/s against 200 ft/min); a value is checked against the figure printed in this system, so pass \"us\" when the job works in US units. Inputs stay in SI units either way. The page sets this from its unit switch."
        }
      ],
      "outputs": [
        {
          "key": "pitDepth",
          "label": "Minimum pit depth",
          "unit": "mm",
          "help": "Bottom landing floor to pit floor, rounded up."
        },
        {
          "key": "overhead",
          "label": "Minimum overhead",
          "unit": "mm",
          "help": "Top landing floor to the underside of the hoistway ceiling, rounded up."
        },
        {
          "key": "bufferStroke",
          "label": "Buffer stroke",
          "unit": "mm",
          "help": "Computed for oil buffers and rounded up; as entered for spring buffers."
        },
        {
          "key": "jump",
          "label": "Jump allowance",
          "unit": "mm",
          "help": "Extra height for the car to rise after the counterweight lands, rounded up."
        },
        {
          "key": "spaceBelowCar",
          "label": "Space below the car on its buffer",
          "unit": "mm",
          "help": "Larger of the equipment below the platform plus clearance, and the pit refuge height."
        },
        {
          "key": "spaceAboveRoof",
          "label": "Space above the car roof",
          "unit": "mm",
          "help": "Larger of the roof equipment plus clearance, and the car top refuge height."
        }
      ],
      "formulas": [
        {
          "label": "Oil buffer stroke",
          "formula": "S = (1.15 v)^2 / (2 g_n), g_n = 9.80665 m/s²"
        },
        {
          "label": "Pit depth",
          "formula": "P = car runby + S + max(equipment below + pit clearance, pit refuge height)"
        },
        {
          "label": "Jump (ASME, oil buffers)",
          "formula": "J = 0.5 (1.15 v)^2 / (2 g_n)"
        },
        {
          "label": "Jump (ASME, spring buffers)",
          "formula": "J = 0.5 v_t^2 / (2 g_n), v_t = governor tripping speed (m/s), g_n = 9.80665 m/s²"
        },
        {
          "label": "Jump (EN 81-20)",
          "formula": "J = 0.035 v^2 (m)"
        },
        {
          "label": "Overhead",
          "formula": "O = car height + counterweight runby + S + max(equipment above + top clearance, top refuge height) + J"
        }
      ],
      "citations": [
        {
          "standard": "ASME A17.1/CSA B44",
          "edition": "2019",
          "clause": "2.4.1",
          "topic": "Bottom car clearance and pit refuge"
        },
        {
          "standard": "ASME A17.1/CSA B44",
          "edition": "2016",
          "clause": "2.4.6 and 2.4.7",
          "topic": "Checked public source for the jump and top clearances; the adopted 2019 edition remains unverified"
        },
        {
          "standard": "ASME A17.1/CSA B44",
          "edition": "2016",
          "clause": "2.18.2.1",
          "topic": "Governor tripping speed minimum; the table maximum is unconfirmed"
        },
        {
          "standard": "ASME A17.1/CSA B44",
          "edition": "2019",
          "clause": "2.22.1.1, 2.22.3 and 2.22.4",
          "topic": "Spring buffer speed limit, and spring and oil buffer strokes"
        },
        {
          "standard": "EN 81-20",
          "edition": "2020",
          "clause": "5.2.5.7 and 5.2.5.8",
          "topic": "Headroom and pit clearances and refuge spaces"
        },
        {
          "standard": "EN 81-20",
          "edition": "2020",
          "clause": "5.8.2",
          "topic": "Buffer strokes"
        }
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "standard": {
            "type": "string",
            "enum": [
              "asme",
              "en"
            ],
            "default": "asme",
            "description": "Code. The elevator code the job is built to."
          },
          "ratedSpeed": {
            "type": "number",
            "minimum": 0.1,
            "maximum": 4,
            "default": 1.016,
            "description": "Rated speed, in metres per second (m/s). Contract speed of the car. Taken to 15 significant digits before use."
          },
          "bufferType": {
            "type": "string",
            "enum": [
              "oil",
              "spring"
            ],
            "default": "oil",
            "description": "Buffer type. Oil buffers suit any speed; spring buffers only up to 1.0 m/s (ASME also prints 200 ft/min)."
          },
          "springStroke": {
            "type": "number",
            "minimum": 30,
            "maximum": 400,
            "default": 100,
            "description": "Spring buffer stroke, in millimetres (mm). Stroke of the spring buffer from the maker's data. Taken to 15 significant digits before use."
          },
          "tripSpeed": {
            "type": "number",
            "minimum": 0.1,
            "maximum": 4,
            "default": 1.1684,
            "description": "Governor tripping speed, in metres per second (m/s). ASME only: use the governor's tripping speed, at least 115 percent of rated speed. The default 1.1684 m/s suits the default 200 ft/min (1.016 m/s) rating. The 4 m/s input ceiling is a calculator limit, not the code maximum. The upper code limit needs a trade check. Taken to 15 significant digits before use."
          },
          "carRunby": {
            "type": "number",
            "minimum": 50,
            "maximum": 600,
            "default": 150,
            "description": "Car runby, in millimetres (mm). Gap between the car striker and its buffer with the car level at the bottom landing. Taken to 15 significant digits before use."
          },
          "cwtRunby": {
            "type": "number",
            "minimum": 50,
            "maximum": 900,
            "default": 200,
            "description": "Counterweight runby, in millimetres (mm). Gap between the counterweight and its buffer with the car level at the top landing. Taken to 15 significant digits before use."
          },
          "carHeight": {
            "type": "number",
            "minimum": 2000,
            "maximum": 4500,
            "default": 2600,
            "description": "Car height, in millimetres (mm). Car floor to the top of the car roof. Taken to 15 significant digits before use."
          },
          "equipAbove": {
            "type": "number",
            "minimum": 0,
            "maximum": 1500,
            "default": 600,
            "description": "Equipment above the car roof, in millimetres (mm). Height of the crosshead, door operator or other parts above the roof. Taken to 15 significant digits before use."
          },
          "equipBelow": {
            "type": "number",
            "minimum": 0,
            "maximum": 1500,
            "default": 500,
            "description": "Equipment below the platform, in millimetres (mm). Depth of the safety plank, guide shoes and other parts below the platform. Taken to 15 significant digits before use."
          },
          "units": {
            "type": "string",
            "enum": [
              "si",
              "us"
            ],
            "default": "si",
            "description": "System the code limits are checked in. ASME A17.1/CSA B44 prints each limit in both systems and the two are not exact equivalents (1.0 m/s against 200 ft/min); a value is checked against the figure printed in this system, so pass \"us\" when the job works in US units. Inputs stay in SI units either way. The page sets this from its unit switch."
          }
        },
        "additionalProperties": false
      }
    },
    {
      "number": 7,
      "id": "traffic",
      "title": "Elevator traffic analysis calculator: how many elevators",
      "summary": "Up-peak round trip time, interval and 5-minute handling capacity for a group of elevators, and the number of cars needed to meet your interval and handling targets, with every step of the working shown.",
      "url": "https://elevatorcalc.com/calculators/elevator-traffic-analysis",
      "mcpTool": "elevator_traffic_analysis",
      "status": "A planning model from probability and kinematics with no code limit, so no trade check is pending; the targets and planning times are yours to set.",
      "tradeCheckPending": false,
      "inputs": [
        {
          "key": "floors",
          "label": "Floors served above the lobby",
          "type": "number",
          "unit": "count",
          "unitLabel": "",
          "min": 1,
          "max": 80,
          "default": 12,
          "help": "Upper floors the group serves, not counting the main lobby. A whole number."
        },
        {
          "key": "floorHeight",
          "label": "Floor to floor height",
          "type": "number",
          "unit": "m",
          "unitLabel": "m",
          "min": 2.4,
          "max": 10,
          "default": 3.6576,
          "help": "Average distance between the upper floors."
        },
        {
          "key": "population",
          "label": "Building population above the lobby",
          "type": "number",
          "unit": "count",
          "unitLabel": "",
          "min": 10,
          "max": 30000,
          "default": 1200,
          "help": "People on the floors served, at peak occupancy."
        },
        {
          "key": "carCapacity",
          "label": "Car capacity",
          "type": "number",
          "unit": "count",
          "unitLabel": "",
          "min": 4,
          "max": 60,
          "default": 16,
          "help": "Rated capacity in persons. A whole number."
        },
        {
          "key": "cars",
          "label": "Number of cars in the group",
          "type": "number",
          "unit": "count",
          "unitLabel": "",
          "min": 1,
          "max": 16,
          "default": 4,
          "help": "Cars that serve the same floors together. A whole number."
        },
        {
          "key": "ratedSpeed",
          "label": "Rated speed",
          "type": "number",
          "unit": "m/s",
          "unitLabel": "m/s",
          "min": 0.5,
          "max": 10,
          "default": 2.54,
          "help": "Contract speed of the cars."
        },
        {
          "key": "targetInterval",
          "label": "Target interval",
          "type": "number",
          "unit": "s",
          "unitLabel": "s",
          "min": 10,
          "max": 120,
          "default": 30,
          "help": "The longest average gap between cars leaving the lobby that you accept."
        },
        {
          "key": "targetHandling",
          "label": "Target handling capacity (% of population in 5 minutes)",
          "type": "number",
          "unit": "none",
          "unitLabel": "",
          "min": 3,
          "max": 30,
          "default": 12,
          "help": "Share of the population the group must carry up in 5 minutes, in percent."
        },
        {
          "key": "loadFactor",
          "label": "Design loading",
          "type": "number",
          "unit": "none",
          "unitLabel": "",
          "min": 0.4,
          "max": 1,
          "default": 0.8,
          "help": "Average load per trip as a fraction of capacity: 0.8 means cars leave 80 percent full (estimate)."
        },
        {
          "key": "doorOpen",
          "label": "Door opening time",
          "type": "number",
          "unit": "s",
          "unitLabel": "s",
          "min": 0.5,
          "max": 10,
          "default": 1.8,
          "help": "From the doors starting to open until they are fully open (estimate; use the door operator's figure)."
        },
        {
          "key": "doorClose",
          "label": "Door closing time",
          "type": "number",
          "unit": "s",
          "unitLabel": "s",
          "min": 0.5,
          "max": 10,
          "default": 3,
          "help": "From the doors starting to close until they are locked (estimate)."
        },
        {
          "key": "transfer",
          "label": "Passenger transfer time",
          "type": "number",
          "unit": "s",
          "unitLabel": "s",
          "min": 0.3,
          "max": 5,
          "default": 1.2,
          "help": "Average time for one person to enter or leave the car (estimate)."
        },
        {
          "key": "acceleration",
          "label": "Acceleration",
          "type": "number",
          "unit": "m/s2",
          "unitLabel": "m/s²",
          "min": 0.3,
          "max": 2,
          "default": 1,
          "help": "Peak acceleration, used for the one-floor flight time."
        },
        {
          "key": "jerk",
          "label": "Jerk",
          "type": "number",
          "unit": "m/s3",
          "unitLabel": "m/s³",
          "min": 0.3,
          "max": 5,
          "default": 1.5,
          "help": "Rate of change of acceleration, used for the one-floor flight time."
        }
      ],
      "outputs": [
        {
          "key": "carsNeeded",
          "label": "Cars needed for your targets",
          "unit": "count",
          "help": "Fewest identical cars that meet both the interval and the handling targets."
        },
        {
          "key": "interval",
          "label": "Interval with your cars",
          "unit": "s",
          "help": "Round trip time divided by the number of cars, rounded up."
        },
        {
          "key": "handlingPercent",
          "label": "Handling capacity (% in 5 minutes)",
          "unit": "none",
          "help": "Persons carried up in 5 minutes as a share of the population, in percent, rounded down."
        },
        {
          "key": "handlingCapacity",
          "label": "Persons carried up in 5 minutes",
          "unit": "count",
          "help": "Up-peak handling capacity of the group, rounded down."
        },
        {
          "key": "roundTripTime",
          "label": "Round trip time",
          "unit": "s",
          "help": "Time for one car to load at the lobby, serve its stops and return, rounded up."
        },
        {
          "key": "passengers",
          "label": "Passengers per trip",
          "unit": "none",
          "help": "Car capacity times the design loading."
        },
        {
          "key": "expectedStops",
          "label": "Expected stops per trip",
          "unit": "none",
          "help": "Average number of floors a car stops at on the way up."
        },
        {
          "key": "reversalFloor",
          "label": "Expected highest floor",
          "unit": "none",
          "help": "Average floor where the car turns back, counted above the lobby."
        },
        {
          "key": "stopTime",
          "label": "Time lost per stop",
          "unit": "s",
          "help": "Extra time each stop costs: slowing, stopping, doors and starting again."
        },
        {
          "key": "meetsTargets",
          "label": "Your cars meet both targets",
          "unit": "text",
          "help": "yes when the interval and handling checks both pass with the number of cars you gave."
        }
      ],
      "formulas": [
        {
          "label": "Expected stops",
          "formula": "S = N [1 - (1 - 1/N)^P]"
        },
        {
          "label": "Expected highest floor",
          "formula": "H = N - sum_{i=1}^{N-1} (i/N)^P"
        },
        {
          "label": "Round trip time",
          "formula": "RTT = 2 H t_v + (S + 1) t_s + 2 P t_p, with t_v = d_f / v and t_s = t_f(d_f) - t_v + t_o + t_c"
        },
        {
          "label": "Interval",
          "formula": "INT = RTT / L"
        },
        {
          "label": "Handling capacity in 5 minutes",
          "formula": "HC_5 = 300 P L / RTT; %HC = 100 HC_5 / U"
        }
      ],
      "citations": [
        {
          "standard": "Up-peak round trip time model (CIBSE Guide D, Transportation systems in buildings, section 3)",
          "edition": "n/a",
          "clause": "Derivation in this calculator's spec",
          "topic": "Expected stops, highest reversal floor, round trip time, interval and handling capacity"
        }
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "floors": {
            "type": "number",
            "minimum": 1,
            "maximum": 80,
            "default": 12,
            "description": "Floors served above the lobby, in count. Upper floors the group serves, not counting the main lobby. A whole number. Taken to 15 significant digits before use."
          },
          "floorHeight": {
            "type": "number",
            "minimum": 2.4,
            "maximum": 10,
            "default": 3.6576,
            "description": "Floor to floor height, in metres (m). Average distance between the upper floors. Taken to 15 significant digits before use."
          },
          "population": {
            "type": "number",
            "minimum": 10,
            "maximum": 30000,
            "default": 1200,
            "description": "Building population above the lobby, in count. People on the floors served, at peak occupancy. Taken to 15 significant digits before use."
          },
          "carCapacity": {
            "type": "number",
            "minimum": 4,
            "maximum": 60,
            "default": 16,
            "description": "Car capacity, in count. Rated capacity in persons. A whole number. Taken to 15 significant digits before use."
          },
          "cars": {
            "type": "number",
            "minimum": 1,
            "maximum": 16,
            "default": 4,
            "description": "Number of cars in the group, in count. Cars that serve the same floors together. A whole number. Taken to 15 significant digits before use."
          },
          "ratedSpeed": {
            "type": "number",
            "minimum": 0.5,
            "maximum": 10,
            "default": 2.54,
            "description": "Rated speed, in metres per second (m/s). Contract speed of the cars. Taken to 15 significant digits before use."
          },
          "targetInterval": {
            "type": "number",
            "minimum": 10,
            "maximum": 120,
            "default": 30,
            "description": "Target interval, in seconds (s). The longest average gap between cars leaving the lobby that you accept. Taken to 15 significant digits before use."
          },
          "targetHandling": {
            "type": "number",
            "minimum": 3,
            "maximum": 30,
            "default": 12,
            "description": "Target handling capacity (% of population in 5 minutes), in . Share of the population the group must carry up in 5 minutes, in percent. Taken to 15 significant digits before use."
          },
          "loadFactor": {
            "type": "number",
            "minimum": 0.4,
            "maximum": 1,
            "default": 0.8,
            "description": "Design loading, in . Average load per trip as a fraction of capacity: 0.8 means cars leave 80 percent full (estimate). Taken to 15 significant digits before use."
          },
          "doorOpen": {
            "type": "number",
            "minimum": 0.5,
            "maximum": 10,
            "default": 1.8,
            "description": "Door opening time, in seconds (s). From the doors starting to open until they are fully open (estimate; use the door operator's figure). Taken to 15 significant digits before use."
          },
          "doorClose": {
            "type": "number",
            "minimum": 0.5,
            "maximum": 10,
            "default": 3,
            "description": "Door closing time, in seconds (s). From the doors starting to close until they are locked (estimate). Taken to 15 significant digits before use."
          },
          "transfer": {
            "type": "number",
            "minimum": 0.3,
            "maximum": 5,
            "default": 1.2,
            "description": "Passenger transfer time, in seconds (s). Average time for one person to enter or leave the car (estimate). Taken to 15 significant digits before use."
          },
          "acceleration": {
            "type": "number",
            "minimum": 0.3,
            "maximum": 2,
            "default": 1,
            "description": "Acceleration, in metres per second squared (m/s²). Peak acceleration, used for the one-floor flight time. Taken to 15 significant digits before use."
          },
          "jerk": {
            "type": "number",
            "minimum": 0.3,
            "maximum": 5,
            "default": 1.5,
            "description": "Jerk, in metres per second cubed (m/s³). Rate of change of acceleration, used for the one-floor flight time. Taken to 15 significant digits before use."
          }
        },
        "additionalProperties": false
      }
    },
    {
      "number": 8,
      "id": "travel-time",
      "title": "Elevator speed and travel time calculator",
      "summary": "Flight time between floors for a jerk-limited (S-curve) elevator ride from travel distance, rated speed, acceleration and jerk, with whether rated speed is reached.",
      "url": "https://elevatorcalc.com/calculators/elevator-speed-travel-time",
      "mcpTool": "elevator_travel_time",
      "status": "First-principles kinematics with no code limit, so no trade check is pending for this calculator.",
      "tradeCheckPending": false,
      "inputs": [
        {
          "key": "travel",
          "label": "Travel distance",
          "type": "number",
          "unit": "m",
          "unitLabel": "m",
          "min": 0.5,
          "max": 600,
          "default": 30.48,
          "help": "Distance between the two landings."
        },
        {
          "key": "ratedSpeed",
          "label": "Rated speed",
          "type": "number",
          "unit": "m/s",
          "unitLabel": "m/s",
          "min": 0.1,
          "max": 20,
          "default": 2.54,
          "help": "Contract speed of the car."
        },
        {
          "key": "acceleration",
          "label": "Acceleration",
          "type": "number",
          "unit": "m/s2",
          "unitLabel": "m/s²",
          "min": 0.1,
          "max": 2,
          "default": 1,
          "help": "Peak acceleration and deceleration."
        },
        {
          "key": "jerk",
          "label": "Jerk",
          "type": "number",
          "unit": "m/s3",
          "unitLabel": "m/s³",
          "min": 0.1,
          "max": 5,
          "default": 1.5,
          "help": "Rate of change of acceleration."
        }
      ],
      "outputs": [
        {
          "key": "flightTime",
          "label": "Flight time",
          "unit": "s",
          "help": "Start of motion to stop, doors excluded."
        },
        {
          "key": "peakSpeed",
          "label": "Top speed reached",
          "unit": "m/s",
          "help": "Rated speed, or lower on short trips."
        },
        {
          "key": "averageSpeed",
          "label": "Average speed",
          "unit": "m/s",
          "help": "Travel divided by flight time."
        },
        {
          "key": "distanceToRated",
          "label": "Trip needed to reach rated speed",
          "unit": "m",
          "help": "Shortest trip on which the car reaches rated speed, rounded up."
        },
        {
          "key": "peakAcceleration",
          "label": "Peak acceleration reached",
          "unit": "m/s2",
          "help": "The acceleration this trip actually reaches: the set acceleration, the cap at rated speed, or less on a trip of jerk phases only."
        },
        {
          "key": "profile",
          "label": "Motion profile",
          "unit": "text",
          "help": "Which of the three cases applies."
        }
      ],
      "formulas": [
        {
          "label": "Distance to reach rated speed and stop",
          "formula": "d_v = v (v/a + a/j)"
        },
        {
          "label": "Flight time, d >= d_v",
          "formula": "t = d/v + v/a + a/j"
        },
        {
          "label": "Flight time, 2a³/j² <= d < d_v",
          "formula": "t = a/j + sqrt((a/j)^2 + 4d/a)"
        },
        {
          "label": "Flight time, d < 2a³/j²",
          "formula": "t = cbrt(32 d / j)"
        }
      ],
      "citations": [
        {
          "standard": "First-principles kinematics (jerk-limited S-curve)",
          "edition": "n/a",
          "clause": "Derivation in this calculator's spec",
          "topic": "Flight time from distance, speed, acceleration and jerk"
        }
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "travel": {
            "type": "number",
            "minimum": 0.5,
            "maximum": 600,
            "default": 30.48,
            "description": "Travel distance, in metres (m). Distance between the two landings. Taken to 15 significant digits before use."
          },
          "ratedSpeed": {
            "type": "number",
            "minimum": 0.1,
            "maximum": 20,
            "default": 2.54,
            "description": "Rated speed, in metres per second (m/s). Contract speed of the car. Taken to 15 significant digits before use."
          },
          "acceleration": {
            "type": "number",
            "minimum": 0.1,
            "maximum": 2,
            "default": 1,
            "description": "Acceleration, in metres per second squared (m/s²). Peak acceleration and deceleration. Taken to 15 significant digits before use."
          },
          "jerk": {
            "type": "number",
            "minimum": 0.1,
            "maximum": 5,
            "default": 1.5,
            "description": "Jerk, in metres per second cubed (m/s³). Rate of change of acceleration. Taken to 15 significant digits before use."
          }
        },
        "additionalProperties": false
      }
    },
    {
      "number": 9,
      "id": "escalator",
      "title": "Escalator dimensions calculator",
      "summary": "Escalator horizontal run, incline length and overall length from rise, angle and end lengths, with angle, speed and step width checked against ASME A17.1/CSA B44 or EN 115-1.",
      "url": "https://elevatorcalc.com/calculators/escalator-dimensions",
      "mcpTool": "escalator_dimensions",
      "status": "First build: the code limits used here await a trade check against a licensed copy of the cited edition.",
      "tradeCheckPending": true,
      "inputs": [
        {
          "key": "standard",
          "label": "Code",
          "type": "choice",
          "options": [
            {
              "value": "asme",
              "label": "ASME A17.1-2019/CSA B44-19"
            },
            {
              "value": "en",
              "label": "EN 115-1:2017"
            }
          ],
          "default": "asme",
          "help": "The escalator code the job is built to."
        },
        {
          "key": "rise",
          "label": "Rise",
          "type": "number",
          "unit": "mm",
          "unitLabel": "mm",
          "min": 1000,
          "max": 15000,
          "default": 4500,
          "help": "Vertical distance between the two finished floors."
        },
        {
          "key": "angle",
          "label": "Angle of inclination",
          "type": "number",
          "unit": "deg",
          "unitLabel": "°",
          "min": 20,
          "max": 40,
          "default": 30,
          "help": "Angle of the step line from the horizontal."
        },
        {
          "key": "stepWidth",
          "label": "Step width",
          "type": "number",
          "unit": "mm",
          "unitLabel": "mm",
          "min": 400,
          "max": 1300,
          "default": 1000,
          "help": "Nominal width of the steps."
        },
        {
          "key": "speed",
          "label": "Rated speed",
          "type": "number",
          "unit": "m/s",
          "unitLabel": "m/s",
          "min": 0.2,
          "max": 1,
          "default": 0.5,
          "help": "Speed along the incline."
        },
        {
          "key": "upperEnd",
          "label": "Upper end length",
          "type": "number",
          "unit": "mm",
          "unitLabel": "mm",
          "min": 1000,
          "max": 6000,
          "default": 2600,
          "help": "Plan length from the top of the incline to the end of the truss."
        },
        {
          "key": "lowerEnd",
          "label": "Lower end length",
          "type": "number",
          "unit": "mm",
          "unitLabel": "mm",
          "min": 1000,
          "max": 6000,
          "default": 2200,
          "help": "Plan length from the bottom of the incline to the end of the truss."
        },
        {
          "key": "units",
          "label": "System the code limits are checked in",
          "type": "choice",
          "options": [
            {
              "value": "si",
              "label": "Metric (the SI figures A17.1 prints)"
            },
            {
              "value": "us",
              "label": "US (the inch-pound figures A17.1 prints)"
            }
          ],
          "default": "si",
          "help": "ASME A17.1/CSA B44 prints each limit in both systems and the two are not exact equivalents (1.0 m/s against 200 ft/min); a value is checked against the figure printed in this system, so pass \"us\" when the job works in US units. Inputs stay in SI units either way. The page sets this from its unit switch."
        }
      ],
      "outputs": [
        {
          "key": "overallLength",
          "label": "Overall length in plan",
          "unit": "mm",
          "help": "Horizontal run plus both end lengths, rounded up."
        },
        {
          "key": "horizontalRun",
          "label": "Horizontal run of the incline",
          "unit": "mm",
          "help": "Rise divided by the tangent of the angle, rounded up."
        },
        {
          "key": "inclineLength",
          "label": "Length along the incline",
          "unit": "mm",
          "help": "Rise divided by the sine of the angle, rounded up."
        },
        {
          "key": "withinLimits",
          "label": "Within the code limits checked",
          "unit": "text",
          "help": "yes when angle, speed and width all pass."
        }
      ],
      "formulas": [
        {
          "label": "Horizontal run",
          "formula": "L_h = H / tan(alpha)"
        },
        {
          "label": "Incline length",
          "formula": "L_i = H / sin(alpha)"
        },
        {
          "label": "Overall length",
          "formula": "L = L_h + upper end + lower end"
        }
      ],
      "citations": [
        {
          "standard": "ASME A17.1/CSA B44",
          "edition": "2019",
          "clause": "6.1.3.1, 6.1.3.5.2 and 6.1.4.1",
          "topic": "Escalator angle of inclination, step width and rated speed"
        },
        {
          "standard": "EN 115-1",
          "edition": "2017",
          "clause": "5.2.2, 5.2.3 and 5.3.1",
          "topic": "Escalator inclination, nominal speed and nominal width"
        }
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "standard": {
            "type": "string",
            "enum": [
              "asme",
              "en"
            ],
            "default": "asme",
            "description": "Code. The escalator code the job is built to."
          },
          "rise": {
            "type": "number",
            "minimum": 1000,
            "maximum": 15000,
            "default": 4500,
            "description": "Rise, in millimetres (mm). Vertical distance between the two finished floors. Taken to 15 significant digits before use."
          },
          "angle": {
            "type": "number",
            "minimum": 20,
            "maximum": 40,
            "default": 30,
            "description": "Angle of inclination, in degrees. Angle of the step line from the horizontal. Taken to 15 significant digits before use."
          },
          "stepWidth": {
            "type": "number",
            "minimum": 400,
            "maximum": 1300,
            "default": 1000,
            "description": "Step width, in millimetres (mm). Nominal width of the steps. Taken to 15 significant digits before use."
          },
          "speed": {
            "type": "number",
            "minimum": 0.2,
            "maximum": 1,
            "default": 0.5,
            "description": "Rated speed, in metres per second (m/s). Speed along the incline. Taken to 15 significant digits before use."
          },
          "upperEnd": {
            "type": "number",
            "minimum": 1000,
            "maximum": 6000,
            "default": 2600,
            "description": "Upper end length, in millimetres (mm). Plan length from the top of the incline to the end of the truss. Taken to 15 significant digits before use."
          },
          "lowerEnd": {
            "type": "number",
            "minimum": 1000,
            "maximum": 6000,
            "default": 2200,
            "description": "Lower end length, in millimetres (mm). Plan length from the bottom of the incline to the end of the truss. Taken to 15 significant digits before use."
          },
          "units": {
            "type": "string",
            "enum": [
              "si",
              "us"
            ],
            "default": "si",
            "description": "System the code limits are checked in. ASME A17.1/CSA B44 prints each limit in both systems and the two are not exact equivalents (1.0 m/s against 200 ft/min); a value is checked against the figure printed in this system, so pass \"us\" when the job works in US units. Inputs stay in SI units either way. The page sets this from its unit switch."
          }
        },
        "additionalProperties": false
      }
    },
    {
      "number": 10,
      "id": "escalator-capacity",
      "title": "Escalator capacity calculator: persons per hour",
      "summary": "Theoretical escalator capacity in persons per hour from speed and your persons per step planning input, the capacity you plan to use, and how many escalators a demand needs, with the speed checked against ASME A17.1/CSA B44 or EN 115-1.",
      "url": "https://elevatorcalc.com/calculators/escalator-capacity",
      "mcpTool": "escalator_capacity",
      "status": "First build: the code limits used here await a trade check against a licensed copy of the cited edition.",
      "tradeCheckPending": true,
      "inputs": [
        {
          "key": "standard",
          "label": "Code",
          "type": "choice",
          "options": [
            {
              "value": "asme",
              "label": "ASME A17.1-2019/CSA B44-19"
            },
            {
              "value": "en",
              "label": "EN 115-1:2017"
            }
          ],
          "default": "asme",
          "help": "The escalator code the job is built to."
        },
        {
          "key": "stepWidth",
          "label": "Nominal step width",
          "type": "choice",
          "options": [
            {
              "value": "600",
              "label": "600 mm (about 24 in)"
            },
            {
              "value": "800",
              "label": "800 mm (about 32 in)"
            },
            {
              "value": "1000",
              "label": "1000 mm (about 40 in)"
            }
          ],
          "default": "1000",
          "help": "Width shown in the drawing only. It does not set the persons per step input."
        },
        {
          "key": "personsPerStep",
          "label": "Persons per step (planning input)",
          "type": "number",
          "unit": "none",
          "unitLabel": "",
          "min": 0.1,
          "max": 4,
          "default": 1,
          "help": "Your assumed average occupancy per step (estimate). One person per step is a conservative starting value, independent of width. Set this editable input from your planning evidence."
        },
        {
          "key": "speed",
          "label": "Rated speed",
          "type": "number",
          "unit": "m/s",
          "unitLabel": "m/s",
          "min": 0.2,
          "max": 1,
          "default": 0.5,
          "help": "Speed along the incline."
        },
        {
          "key": "demand",
          "label": "Peak demand in one direction",
          "type": "number",
          "unit": "count",
          "unitLabel": "",
          "min": 0,
          "max": 100000,
          "default": 6000,
          "help": "Persons per hour you expect at the busiest time; 0 to skip the sizing."
        },
        {
          "key": "planningShare",
          "label": "Planning share of the theoretical capacity",
          "type": "number",
          "unit": "none",
          "unitLabel": "",
          "min": 0.2,
          "max": 1,
          "default": 0.75,
          "help": "The fraction of the theoretical figure you count on: 0.75 means 75 percent (estimate)."
        },
        {
          "key": "units",
          "label": "System the code limits are checked in",
          "type": "choice",
          "options": [
            {
              "value": "si",
              "label": "Metric (the SI figures A17.1 prints)"
            },
            {
              "value": "us",
              "label": "US (the inch-pound figures A17.1 prints)"
            }
          ],
          "default": "si",
          "help": "ASME A17.1/CSA B44 prints each limit in both systems and the two are not exact equivalents (1.0 m/s against 200 ft/min); a value is checked against the figure printed in this system, so pass \"us\" when the job works in US units. Inputs stay in SI units either way. The page sets this from its unit switch."
        }
      ],
      "outputs": [
        {
          "key": "theoreticalCapacity",
          "label": "Theoretical capacity (persons an hour)",
          "unit": "count",
          "help": "Every step filled, rounded down."
        },
        {
          "key": "escalatorsNeeded",
          "label": "Escalators needed for the demand",
          "unit": "count",
          "help": "In one direction, at your planning share; 0 when no demand is given."
        },
        {
          "key": "planningCapacity",
          "label": "Capacity you plan on (persons an hour)",
          "unit": "count",
          "help": "Theoretical capacity times your planning share, rounded down."
        },
        {
          "key": "capacityPer5Min",
          "label": "Theoretical persons in 5 minutes",
          "unit": "count",
          "help": "The hourly figure divided by 12, rounded down."
        },
        {
          "key": "demandShare",
          "label": "Demand as % of one escalator's theoretical capacity",
          "unit": "none",
          "help": "Above 100 means one escalator cannot carry the demand even when full."
        },
        {
          "key": "personsPerStep",
          "label": "Persons per step counted",
          "unit": "none",
          "help": "Your persons per step planning input, independent of width, echoed at its entered precision."
        },
        {
          "key": "withinLimits",
          "label": "Speed within the code limit",
          "unit": "text",
          "help": "yes when the speed check passes."
        }
      ],
      "formulas": [
        {
          "label": "Steps an hour",
          "formula": "n_s = 3600 v / s, s = 0.4 m"
        },
        {
          "label": "Theoretical capacity",
          "formula": "C_t = 3600 v k / s, k is your persons per step planning input"
        },
        {
          "label": "Planned capacity and units needed",
          "formula": "n = ceil(D / (phi C_t))"
        }
      ],
      "citations": [
        {
          "standard": "EN 115-1",
          "edition": "2017",
          "clause": "Informative annex on escalator capacity; 5.2.3",
          "topic": "Theoretical capacity from speed, step depth and persons per step; nominal speed"
        },
        {
          "standard": "ASME A17.1/CSA B44",
          "edition": "2019",
          "clause": "6.1.4.1",
          "topic": "Escalator rated speed"
        }
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "standard": {
            "type": "string",
            "enum": [
              "asme",
              "en"
            ],
            "default": "asme",
            "description": "Code. The escalator code the job is built to."
          },
          "stepWidth": {
            "type": "string",
            "enum": [
              "600",
              "800",
              "1000"
            ],
            "default": "1000",
            "description": "Nominal step width. Width shown in the drawing only. It does not set the persons per step input."
          },
          "personsPerStep": {
            "type": "number",
            "minimum": 0.1,
            "maximum": 4,
            "default": 1,
            "description": "Persons per step (planning input), in . Your assumed average occupancy per step (estimate). One person per step is a conservative starting value, independent of width. Set this editable input from your planning evidence. Taken to 15 significant digits before use."
          },
          "speed": {
            "type": "number",
            "minimum": 0.2,
            "maximum": 1,
            "default": 0.5,
            "description": "Rated speed, in metres per second (m/s). Speed along the incline. Taken to 15 significant digits before use."
          },
          "demand": {
            "type": "number",
            "minimum": 0,
            "maximum": 100000,
            "default": 6000,
            "description": "Peak demand in one direction, in count. Persons per hour you expect at the busiest time; 0 to skip the sizing. Taken to 15 significant digits before use."
          },
          "planningShare": {
            "type": "number",
            "minimum": 0.2,
            "maximum": 1,
            "default": 0.75,
            "description": "Planning share of the theoretical capacity, in . The fraction of the theoretical figure you count on: 0.75 means 75 percent (estimate). Taken to 15 significant digits before use."
          },
          "units": {
            "type": "string",
            "enum": [
              "si",
              "us"
            ],
            "default": "si",
            "description": "System the code limits are checked in. ASME A17.1/CSA B44 prints each limit in both systems and the two are not exact equivalents (1.0 m/s against 200 ft/min); a value is checked against the figure printed in this system, so pass \"us\" when the job works in US units. Inputs stay in SI units either way. The page sets this from its unit switch."
          }
        },
        "additionalProperties": false
      }
    },
    {
      "number": 11,
      "id": "counterweight",
      "title": "Elevator counterweight and balance calculator",
      "summary": "Counterweight mass from the empty car mass, the rated load and the balance ratio, with the out of balance empty and full and the largest out-of-balance force the machine holds.",
      "url": "https://elevatorcalc.com/calculators/elevator-counterweight",
      "mcpTool": "elevator_counterweight",
      "status": "Textbook statics with no code limit, so no trade check is pending for this calculator.",
      "tradeCheckPending": false,
      "inputs": [
        {
          "key": "carMass",
          "label": "Empty car mass",
          "type": "number",
          "unit": "kg",
          "unitLabel": "kg",
          "min": 100,
          "max": 20000,
          "default": 1200,
          "help": "Car, sling, platform, car door and everything else that travels with the car, with no load."
        },
        {
          "key": "ratedLoad",
          "label": "Rated load",
          "type": "number",
          "unit": "kg",
          "unitLabel": "kg",
          "min": 50,
          "max": 13500,
          "default": 1600,
          "help": "The load the car is rated to carry."
        },
        {
          "key": "balance",
          "label": "Balance ratio",
          "type": "number",
          "unit": "none",
          "unitLabel": "",
          "min": 0.25,
          "max": 0.75,
          "default": 0.45,
          "help": "Share of the rated load the counterweight balances, as a fraction: 0.45 means 45 percent. The typical 0.40 to 0.50 range is provisional, pending trade or textbook confirmation."
        }
      ],
      "outputs": [
        {
          "key": "counterweightMass",
          "label": "Counterweight mass",
          "unit": "kg",
          "help": "Empty car mass plus the balance ratio times the rated load."
        },
        {
          "key": "balancedLoad",
          "label": "Car load at balance",
          "unit": "kg",
          "help": "The load in the car at which the car and the counterweight weigh the same."
        },
        {
          "key": "unbalanceEmpty",
          "label": "Out of balance, car empty",
          "unit": "kg",
          "help": "How much heavier the counterweight side is with the car empty."
        },
        {
          "key": "unbalanceFull",
          "label": "Out of balance, car fully loaded",
          "unit": "kg",
          "help": "How much heavier the car side is with the rated load in the car."
        },
        {
          "key": "maxUnbalance",
          "label": "Largest out of balance",
          "unit": "kg",
          "help": "The larger of the two figures above."
        },
        {
          "key": "maxUnbalanceForce",
          "label": "Largest out-of-balance force",
          "unit": "kN",
          "help": "The largest out of balance times standard gravity: the static force the brake and the traction must hold."
        }
      ],
      "formulas": [
        {
          "label": "Counterweight mass",
          "formula": "W = P + q Q"
        },
        {
          "label": "Out of balance, car empty",
          "formula": "U_0 = q Q"
        },
        {
          "label": "Out of balance, rated load in the car",
          "formula": "U_Q = (1 - q) Q"
        },
        {
          "label": "Largest out-of-balance force",
          "formula": "F = g max(U_0, U_Q), g = 9.80665 m/s²"
        }
      ],
      "citations": [
        {
          "standard": "Traction elevator statics (textbook balance-ratio method)",
          "edition": "n/a",
          "clause": "Derivation in this calculator's spec",
          "topic": "Counterweight mass and out of balance from car mass, rated load and balance ratio"
        }
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "carMass": {
            "type": "number",
            "minimum": 100,
            "maximum": 20000,
            "default": 1200,
            "description": "Empty car mass, in kilograms (kg). Car, sling, platform, car door and everything else that travels with the car, with no load. Taken to 15 significant digits before use."
          },
          "ratedLoad": {
            "type": "number",
            "minimum": 50,
            "maximum": 13500,
            "default": 1600,
            "description": "Rated load, in kilograms (kg). The load the car is rated to carry. Taken to 15 significant digits before use."
          },
          "balance": {
            "type": "number",
            "minimum": 0.25,
            "maximum": 0.75,
            "default": 0.45,
            "description": "Balance ratio, in . Share of the rated load the counterweight balances, as a fraction: 0.45 means 45 percent. The typical 0.40 to 0.50 range is provisional, pending trade or textbook confirmation. Taken to 15 significant digits before use."
          }
        },
        "additionalProperties": false
      }
    },
    {
      "number": 12,
      "id": "rope-safety",
      "title": "Elevator hoist rope safety factor calculator",
      "summary": "Factor of safety of elevator suspension ropes from rope count, roping, breaking load, car mass, rated load and the rope hanging in the hoistway, checked against EN 81-20 or the ASME A17.1 minimum for your speed.",
      "url": "https://elevatorcalc.com/calculators/elevator-rope-safety-factor",
      "mcpTool": "elevator_rope_safety_factor",
      "status": "First build: the code limits used here await a trade check against a licensed copy of the cited edition.",
      "tradeCheckPending": true,
      "inputs": [
        {
          "key": "standard",
          "label": "Code",
          "type": "choice",
          "options": [
            {
              "value": "en",
              "label": "EN 81-20:2020"
            },
            {
              "value": "asme",
              "label": "ASME A17.1-2019/CSA B44-19"
            }
          ],
          "default": "en",
          "help": "The elevator code the job is built to. Under ASME, enter the minimum from the code's table for your speed."
        },
        {
          "key": "drive",
          "label": "Drive",
          "type": "choice",
          "options": [
            {
              "value": "traction",
              "label": "Traction"
            },
            {
              "value": "drum",
              "label": "Drum (positive drive)"
            }
          ],
          "default": "traction",
          "help": "EN 81-20 sets a different minimum for each."
        },
        {
          "key": "ropes",
          "label": "Number of ropes",
          "type": "number",
          "unit": "count",
          "unitLabel": "",
          "min": 1,
          "max": 20,
          "default": 6,
          "help": "Separate suspension ropes. A whole number."
        },
        {
          "key": "roping",
          "label": "Roping ratio",
          "type": "number",
          "unit": "count",
          "unitLabel": "",
          "min": 1,
          "max": 4,
          "default": 1,
          "help": "1 for 1:1, 2 for 2:1 and so on: how many runs of each rope hold the car."
        },
        {
          "key": "breakingLoad",
          "label": "Minimum breaking load of one rope",
          "type": "number",
          "unit": "kN",
          "unitLabel": "kN",
          "min": 5,
          "max": 2000,
          "default": 60,
          "help": "From the rope maker's certificate."
        },
        {
          "key": "carMass",
          "label": "Empty car mass",
          "type": "number",
          "unit": "kg",
          "unitLabel": "kg",
          "min": 100,
          "max": 20000,
          "default": 1200,
          "help": "Car, sling, platform and everything that hangs on the car ropes, with no load."
        },
        {
          "key": "ratedLoad",
          "label": "Rated load",
          "type": "number",
          "unit": "kg",
          "unitLabel": "kg",
          "min": 50,
          "max": 13500,
          "default": 1600,
          "help": "The load the car is rated to carry."
        },
        {
          "key": "travel",
          "label": "Travel",
          "type": "number",
          "unit": "m",
          "unitLabel": "m",
          "min": 0,
          "max": 600,
          "default": 30.48,
          "help": "Bottom landing to top landing: sets how much rope hangs below the sheave."
        },
        {
          "key": "ropeMass",
          "label": "Rope mass per metre",
          "type": "number",
          "unit": "kg/m",
          "unitLabel": "kg/m",
          "min": 0,
          "max": 10,
          "default": 0.35,
          "help": "Mass of one metre of one rope, from the certificate (estimate shown)."
        },
        {
          "key": "minimumFactor",
          "label": "Further minimum factor (0 for none)",
          "type": "number",
          "unit": "none",
          "unitLabel": "",
          "min": 0,
          "max": 40,
          "default": 0,
          "help": "Under ASME, the figure from the code's table for your rope speed and car type. Under EN, enter the verified EN 81-50 figure for your sheaves, even if it is below the fixed minimum. With 0 the EN check is incomplete."
        }
      ],
      "outputs": [
        {
          "key": "factorOfSafety",
          "label": "Factor of safety",
          "unit": "none",
          "help": "Breaking strength of all the runs over the largest static load, rounded down."
        },
        {
          "key": "requiredFactor",
          "label": "Minimum checked",
          "unit": "none",
          "help": "The larger of the EN fixed and entered minimums, or the ASME input, echoed at its entered precision. With no EN further minimum, this is only the fixed minimum and the check is incomplete; 0 for ASME with none entered."
        },
        {
          "key": "passes",
          "label": "Meets the minimum",
          "unit": "text",
          "help": "yes, no, incomplete check (EN further minimum absent), or no minimum entered (ASME)."
        },
        {
          "key": "staticLoad",
          "label": "Largest static load on the car ropes",
          "unit": "kN",
          "help": "Car, rated load and hanging rope, times standard gravity, rounded up."
        },
        {
          "key": "tensionPerRun",
          "label": "Tension in each rope run",
          "unit": "kN",
          "help": "The static load shared over every run, rounded up."
        },
        {
          "key": "ropeMassHanging",
          "label": "Rope hanging on the car side",
          "unit": "kg",
          "help": "Every run times the travel times the mass per metre."
        },
        {
          "key": "ropeRuns",
          "label": "Rope runs",
          "unit": "count",
          "help": "Ropes times the roping ratio."
        }
      ],
      "formulas": [
        {
          "label": "Rope runs",
          "formula": "N = n r"
        },
        {
          "label": "Largest static load",
          "formula": "W = (P + Q + N m' H) g"
        },
        {
          "label": "Factor of safety",
          "formula": "f = S N / W"
        }
      ],
      "citations": [
        {
          "standard": "ASME A17.1/CSA B44",
          "edition": "2019",
          "clause": "2.20.3",
          "topic": "Factor of safety of suspension ropes, f = S N / W; minimum read from the code's table for the rope speed"
        },
        {
          "standard": "EN 81-20",
          "edition": "2020",
          "clause": "5.5.1 and 5.5.2.2",
          "topic": "Number of suspension ropes and their minimum safety factor by drive and rope count"
        }
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "standard": {
            "type": "string",
            "enum": [
              "en",
              "asme"
            ],
            "default": "en",
            "description": "Code. The elevator code the job is built to. Under ASME, enter the minimum from the code's table for your speed."
          },
          "drive": {
            "type": "string",
            "enum": [
              "traction",
              "drum"
            ],
            "default": "traction",
            "description": "Drive. EN 81-20 sets a different minimum for each."
          },
          "ropes": {
            "type": "number",
            "minimum": 1,
            "maximum": 20,
            "default": 6,
            "description": "Number of ropes, in count. Separate suspension ropes. A whole number. Taken to 15 significant digits before use."
          },
          "roping": {
            "type": "number",
            "minimum": 1,
            "maximum": 4,
            "default": 1,
            "description": "Roping ratio, in count. 1 for 1:1, 2 for 2:1 and so on: how many runs of each rope hold the car. Taken to 15 significant digits before use."
          },
          "breakingLoad": {
            "type": "number",
            "minimum": 5,
            "maximum": 2000,
            "default": 60,
            "description": "Minimum breaking load of one rope, in kilonewtons (kN). From the rope maker's certificate. Taken to 15 significant digits before use."
          },
          "carMass": {
            "type": "number",
            "minimum": 100,
            "maximum": 20000,
            "default": 1200,
            "description": "Empty car mass, in kilograms (kg). Car, sling, platform and everything that hangs on the car ropes, with no load. Taken to 15 significant digits before use."
          },
          "ratedLoad": {
            "type": "number",
            "minimum": 50,
            "maximum": 13500,
            "default": 1600,
            "description": "Rated load, in kilograms (kg). The load the car is rated to carry. Taken to 15 significant digits before use."
          },
          "travel": {
            "type": "number",
            "minimum": 0,
            "maximum": 600,
            "default": 30.48,
            "description": "Travel, in metres (m). Bottom landing to top landing: sets how much rope hangs below the sheave. Taken to 15 significant digits before use."
          },
          "ropeMass": {
            "type": "number",
            "minimum": 0,
            "maximum": 10,
            "default": 0.35,
            "description": "Rope mass per metre, in kilograms per metre (kg/m). Mass of one metre of one rope, from the certificate (estimate shown). Taken to 15 significant digits before use."
          },
          "minimumFactor": {
            "type": "number",
            "minimum": 0,
            "maximum": 40,
            "default": 0,
            "description": "Further minimum factor (0 for none), in . Under ASME, the figure from the code's table for your rope speed and car type. Under EN, enter the verified EN 81-50 figure for your sheaves, even if it is below the fixed minimum. With 0 the EN check is incomplete. Taken to 15 significant digits before use."
          }
        },
        "additionalProperties": false
      }
    }
  ]
}