cbm

Calculate shipment volume (CBM/CFT), weight, and how cargo fits standard shipping containers.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
97%
Naming quality
90%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~2,641Tokens (tool definitions)
~5.6 KBTypical response size
Significant attention impact (2.06% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "cbm": {
      "url": "https://mcp.containermath.com"
    }
  }
}

Remote endpoints

https://mcp.containermath.comstreamable-http

What it can do

Tool inventory

Tools (4)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢calculate_cbm(unitSystem, items)

Calculate total shipment volume (CBM / cubic metres and CFT / cubic feet), total weight, and how that cargo fits into standard shipping containers (20ft Standard, 40ft Standard, 40ft High Cube). Use this whenever someone asks how much space a shipment takes, how many cubic metres or CBM their boxes / pallets / cartons add up to, whether cargo will fit in a container, what container size they need, or how full a container will be. Accepts a list of items with length, width, height, weight and quantity in metric (cm, kg) or imperial (in, lb) units; returns total CBM, CFT, total weight, and per-container fill percentage with an overload flag.

Input Schema

{
  "type": "object",
  "properties": {
    "unitSystem": {
      "type": "string",
      "enum": [
        "metric",
        "imperial"
      ],
      "default": "metric",
      "description": "Units for the item dimensions and weight. 'metric' = centimetres and kilograms; 'imperial' = inches and pounds."
    },
    "items": {
      "type": "array",
      "minItems": 1,
      "maxItems": 50,
      "description": "The cargo line items to total up.",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 100,
            "description": "Optional label for the item."
          },
          "length": {
            "type": "number",
            "exclusiveMinimum": 0,
            "maximum": 100000
          },
          "width": {
            "type": "number",
            "exclusiveMinimum": 0,
            "maximum": 100000
          },
          "height": {
            "type": "number",
            "exclusiveMinimum": 0,
            "maximum": 100000
          },
          "weight": {
            "type": "number",
            "minimum": 0,
            "maximum": 1000000,
            "default": 0,
            "description": "Per-unit weight. Optional (defaults to 0)."
          },
          "quantity": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "maximum": 1000000
          }
        },
        "required": [
          "length",
          "width",
          "height",
          "quantity"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "items"
  ],
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "totalCbm": {
      "type": "number"
    },
    "totalCft": {
      "type": "number"
    },
    "totalWeightKg": {
      "type": "number"
    },
    "totalWeightLbs": {
      "type": "number"
    },
    "containers": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "volumePct": {
            "type": "number"
          },
          "weightPct": {
            "type": "number"
          },
          "overloaded": {
            "type": "boolean"
          }
        },
        "required": [
          "name",
          "volumePct",
          "weightPct",
          "overloaded"
        ],
        "additionalProperties": false
      }
    },
    "calculatorUrl": {
      "type": "string"
    }
  },
  "required": [
    "totalCbm",
    "totalCft",
    "totalWeightKg",
    "totalWeightLbs",
    "containers",
    "calculatorUrl"
  ],
  "additionalProperties": false
}
🟢plan_cargo_load(vessel, unitSystem, length, width, height, ...)

Plan how one cargo size loads into a shipping container, truck trailer or rail wagon. Use this when someone asks how many of their boxes, cartons, crates or pallets (of a given size, and optionally weight) fit in a 20ft, 40ft, 40ft High Cube, 45ft, 53ft dry van, curtainsider or other vehicle, how many containers or trucks a quantity needs, or whether weight or space limits the load. Returns units per floor layer (mixed orientations), layers by interior height, units per load, whether space or payload binds, loads needed, utilisation, and a link to the same plan drawn on the web. One size per call; for several sizes, call once per size.

Input Schema

{
  "type": "object",
  "properties": {
    "vessel": {
      "type": "string",
      "description": "The container, truck trailer or rail wagon to load. Accepts a slug (\"40ft-high-cube-container\") or a plain name (\"40HC\", \"20ft\", \"53ft dry van\", \"curtainsider\"). Air ULDs are not supported. Call get_container_dimensions with no arguments for the catalog."
    },
    "unitSystem": {
      "type": "string",
      "enum": [
        "metric",
        "imperial"
      ],
      "default": "metric",
      "description": "Units for the dimensions and weight. 'metric' = centimetres and kilograms; 'imperial' = inches and pounds."
    },
    "length": {
      "type": "number",
      "exclusiveMinimum": 0,
      "maximum": 100000,
      "description": "Length of one unit (carton, crate or loaded pallet)."
    },
    "width": {
      "type": "number",
      "exclusiveMinimum": 0,
      "maximum": 100000,
      "description": "Width of one unit."
    },
    "height": {
      "type": "number",
      "exclusiveMinimum": 0,
      "maximum": 100000,
      "description": "Height of one unit. For a pallet, the loaded height including the deck."
    },
    "weight": {
      "type": "number",
      "minimum": 0,
      "maximum": 1000000,
      "default": 0,
      "description": "Gross weight of one unit. Optional; without it the payload is not checked."
    },
    "quantity": {
      "type": "integer",
      "minimum": 1,
      "maximum": 1000000,
      "default": 1,
      "description": "How many units ship."
    },
    "stackable": {
      "type": "boolean",
      "default": false,
      "description": "Whether units may be stacked on top of each other."
    },
    "keepUpright": {
      "type": "boolean",
      "default": true,
      "description": "\"This side up\": false lets the unit lie on a side if that fits more."
    }
  },
  "required": [
    "vessel",
    "length",
    "width",
    "height"
  ],
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "vessel": {
      "type": "object",
      "properties": {
        "slug": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "mode": {
          "type": "string"
        },
        "interiorLengthMm": {
          "type": "number"
        },
        "interiorWidthMm": {
          "type": "number"
        },
        "interiorHeightMm": {
          "type": "number"
        },
        "maxPayloadKg": {
          "type": "number"
        }
      },
      "required": [
        "slug",
        "name",
        "mode",
        "interiorLengthMm",
        "interiorWidthMm",
        "interiorHeightMm",
        "maxPayloadKg"
      ],
      "additionalProperties": false
    },
    "perLoad": {
      "type": "number",
      "description": "Units one vessel takes: the smaller of space and payload."
    },
    "floorCount": {
      "type": "number",
      "description": "Units in one floor layer."
    },
    "layers": {
      "type": "number"
    },
    "limitedBy": {
      "type": "string",
      "enum": [
        "space",
        "weight"
      ]
    },
    "payloadAllows": {
      "type": [
        "number",
        "null"
      ],
      "description": "Units the payload allows; null when no weight was given."
    },
    "loadsNeeded": {
      "type": "number",
      "description": "Vessels needed for the full quantity."
    },
    "unitsInLastLoad": {
      "type": "number"
    },
    "laidOnSide": {
      "type": "boolean"
    },
    "volumeUtilisationPct": {
      "type": "number",
      "description": "Of the first load."
    },
    "weightUtilisationPct": {
      "type": "number",
      "description": "Of the first load; 0 when no weight was given."
    },
    "exactFloorCount": {
      "type": "boolean",
      "description": "False when the floor count is a block-pattern lower bound."
    },
    "plannerUrl": {
      "type": "string",
      "description": "The same plan on the web, with the floor layout drawn."
    }
  },
  "required": [
    "vessel",
    "perLoad",
    "floorCount",
    "layers",
    "limitedBy",
    "payloadAllows",
    "loadsNeeded",
    "unitsInLastLoad",
    "laidOnSide",
    "volumeUtilisationPct",
    "weightUtilisationPct",
    "exactFloorCount",
    "plannerUrl"
  ],
  "additionalProperties": false
}
🟢how_many_pallets_fit(vessel, palletType, grossWeightKgPerPallet)

How many pallets fit in a given shipping container, truck trailer, rail wagon or air ULD. Use this whenever someone asks how many pallets (Euro 1200x800, standard 1200x1000, or US GMA 48x40) fit in a 20ft, 40ft, 40ft High Cube, 45ft, 53ft trailer or any other vessel. Returns the best single-layer floor count with pallets turned to their best orientation — a solved pallet-loading result, not length divided by length, so a 20ft holds 11 Euro pallets and a 40ft holds 25 — plus the double-stacked count with the load height that allows it, and how many the payload allows, which is what decides whether weight or floor space runs out first.

Input Schema

{
  "type": "object",
  "properties": {
    "vessel": {
      "type": "string",
      "description": "The container, trailer, rail wagon or air ULD to load. Accepts a slug (\"40ft-high-cube-container\") or a plain name (\"40HC\", \"40' high cube\", \"53ft trailer\"). Call get_container_dimensions with no arguments for the full catalog."
    },
    "palletType": {
      "type": "string",
      "enum": [
        "euro",
        "standard",
        "gma",
        "all"
      ],
      "default": "all",
      "description": "Which pallet: 'euro' (1200x800mm), 'standard' (1200x1000mm), 'gma' (US 48x40in), or 'all' for every size."
    },
    "grossWeightKgPerPallet": {
      "type": "number",
      "minimum": 1,
      "maximum": 5000,
      "default": 700,
      "description": "Gross weight of one LOADED pallet, kg. Only affects the payload-limited count, which is what decides whether weight or floor space binds first."
    }
  },
  "required": [
    "vessel"
  ],
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "vessel": {
      "type": "object",
      "properties": {
        "slug": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "mode": {
          "type": "string"
        },
        "interiorLengthMm": {
          "type": "number"
        },
        "interiorWidthMm": {
          "type": "number"
        },
        "interiorHeightMm": {
          "type": "number"
        },
        "maxPayloadKg": {
          "type": "number"
        }
      },
      "required": [
        "slug",
        "name",
        "mode",
        "interiorLengthMm",
        "interiorWidthMm",
        "interiorHeightMm",
        "maxPayloadKg"
      ],
      "additionalProperties": false
    },
    "fits": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "palletId": {
            "type": "string"
          },
          "palletName": {
            "type": "string"
          },
          "palletLengthMm": {
            "type": "number"
          },
          "palletWidthMm": {
            "type": "number"
          },
          "floorCount": {
            "type": "number",
            "description": "Best single-layer count, pallets turned to their best orientation."
          },
          "doubleStackedCount": {
            "type": "number"
          },
          "doubleStackMaxLoadHeightMm": {
            "type": "number",
            "description": "Tallest a loaded pallet may be for two tiers to fit."
          },
          "payloadLimitedCount": {
            "type": "number"
          },
          "limitedBy": {
            "type": "string",
            "enum": [
              "floor",
              "payload"
            ]
          }
        },
        "required": [
          "palletId",
          "palletName",
          "palletLengthMm",
          "palletWidthMm",
          "floorCount",
          "doubleStackedCount",
          "doubleStackMaxLoadHeightMm",
          "payloadLimitedCount",
          "limitedBy"
        ],
        "additionalProperties": false
      }
    },
    "assumedGrossKgPerPallet": {
      "type": "number"
    },
    "note": {
      "type": "string"
    },
    "referenceUrl": {
      "type": "string"
    }
  },
  "required": [
    "vessel",
    "fits",
    "assumedGrossKgPerPallet",
    "note",
    "referenceUrl"
  ],
  "additionalProperties": false
}
🟢get_container_dimensions(vessel, mode)

Interior dimensions, volume, floor area and maximum payload for 47 shipping containers, truck trailers, rail wagons and air ULDs. Use this when someone asks for the internal or interior dimensions, cubic capacity, floor area, payload or weight limit of a container or trailer — 20ft, 40ft, 40ft High Cube, 45ft, reefer, open top, flat rack, 53ft dry van, curtainsider, boxcar, LD-3, PMC and more. Called with no arguments (optionally filtered by mode) it lists the whole catalog with the slug for each vessel.

Input Schema

{
  "type": "object",
  "properties": {
    "vessel": {
      "type": "string",
      "description": "The vessel to look up, as a slug (\"20ft-container\") or plain name (\"20 foot container\", \"40HC\"). Omit to list the catalog instead."
    },
    "mode": {
      "type": "string",
      "enum": [
        "sea",
        "road",
        "rail",
        "air"
      ],
      "description": "When listing, restrict to one transport mode. Ignored when `vessel` is given."
    }
  },
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "vessel": {
      "type": "object",
      "description": "Present when a single vessel was requested."
    },
    "vessels": {
      "type": "array",
      "description": "Present when listing the catalog.",
      "items": {
        "type": "object"
      }
    },
    "note": {
      "type": "string"
    },
    "referenceUrl": {
      "type": "string"
    }
  },
  "required": [
    "referenceUrl"
  ],
  "additionalProperties": true
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded4 tools
verifiedversion not recorded4 tools
verifiedversion not recorded4 tools
verifiedversion not recorded4 tools
verifiedversion not recorded1 tools
verifiedversion not recorded1 tools