cbm
Calculate shipment volume (CBM/CFT), weight, and how cargo fits standard shipping containers.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
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-httpWhat it can do
Tool inventory
Tools (4)
🟢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
Evidence