Plan optimal container & truck loads: 3D layouts, utilization, centre of gravity, crush checks.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Draft the dangerous-goods paperwork for a load from its cargo lines: an IMDG 5.4.1 transport-document description per DG line (UN, proper shipping name, class, PG, marine pollutant), the 5.3 placards + marks required, and the 5.4.2 container/vehicle packing-certificate statements. Input is a "loadingmcp.packing-list" document. This is a DRAFT from the curated DGL — it lists the fields a DG-competent person must still complete (flash point, net explosive mass, unverified PSN) and is never signed.
A loadingmcp.packing-list document with DG-bearing lines (unNumber/hazmatClass/packingGroup/marinePollutant). See docs/INTEGRATION.md.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Draft the dangerous-goods paperwork for a load from its cargo lines: an IMDG 5.4.1 transport-document description per DG line (UN, proper shipping name, class, PG, marine pollutant), the 5.3 placards + marks required, and the 5.4.2 container/vehicle packing-certificate statements. Input is a "loadingmcp.packing-list" document. This is a DRAFT from the curated DGL — it lists the fields a DG-competent person must still complete (flash point, net explosive mass, unverified PSN) and is never signed.
| Argument | Type | Description |
|---|---|---|
| packingList* | object | A loadingmcp.packing-list document with DG-bearing lines (unNumber/hazmatClass/packingGroup/marinePollutant). See docs/INTEGRATION.md. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"packingList"
],
"properties": {
"packingList": {
"type": "object",
"description": "A loadingmcp.packing-list document with DG-bearing lines (unNumber/hazmatClass/packingGroup/marinePollutant). See docs/INTEGRATION.md.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
}
}Export a load as a machine-readable LOADING WORK ORDER: a numbered stuffing sequence (which SKU, where, in what order and orientation), the securing/bracing action list, the key declarable figures (VGM, axle load, centre of gravity), and an optional per-retailer inbound-packaging check (Amazon FBA / Walmart). Feed it to a WES/TMS, a robotic palletiser, or a printable worker sheet. This is decision support to MEET published retailer/carrier specs — verify in your own portal; it is not a retailer certification.
| Argument | Type | Description |
|---|---|---|
| mode | string | Transport mode for auto right-size (ignored when equipmentCode is given). |
| items* | array | Cargo lines to load |
| retailers | array | Retailer inbound-packaging profiles to check the load against. |
| equipmentCode | string | Equipment code, e.g. 40HC (see list_equipment). Omit to auto right-size. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"items"
],
"properties": {
"mode": {
"enum": [
"sea",
"road",
"air"
],
"type": "string",
"default": "sea",
"description": "Transport mode for auto right-size (ignored when equipmentCode is given)."
},
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"length",
"width",
"height",
"weight"
],
"properties": {
"id": {
"type": "string",
"description": "Your reference for this cargo line"
},
"type": {
"enum": [
"box",
"pallet",
"drum",
"cylinder",
"bigbag",
"roll",
"sack"
],
"type": "string",
"default": "box"
},
"width": {
"type": "number",
"description": "mm"
},
"height": {
"type": "number",
"description": "mm"
},
"length": {
"type": "number",
"description": "mm"
},
"weight": {
"type": "number",
"description": "kg per unit"
},
"quantity": {
"type": "integer",
"default": 1,
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"unNumber": {
"type": "string",
"description": "UN number (e.g. \"UN1263\") — derives the IMDG class/PG/segregation/stowage/EmS from the DGL."
},
"stackable": {
"type": "boolean",
"default": true
},
"hazmatClass": {
"type": "string",
"description": "IMDG class (e.g. \"3\", \"5.1\"); omit if none"
},
"maxStackWeightKg": {
"type": "number",
"minimum": 0
}
}
},
"description": "Cargo lines to load"
},
"retailers": {
"type": "array",
"items": {
"enum": [
"AMAZON_FBA",
"WALMART_STORES",
"WALMART_WFS",
"GENERIC_GMA"
],
"type": "string"
},
"description": "Retailer inbound-packaging profiles to check the load against."
},
"equipmentCode": {
"type": "string",
"description": "Equipment code, e.g. 40HC (see list_equipment). Omit to auto right-size."
}
}
}ERP/TMS on-ramp: take a versioned "loadingmcp.packing-list" document (a WMS/ERP export — cargo lines + equipmentCode) and return a load plan + a container manifest. Parsing is fail-explicit: an invalid document returns the exact per-line issues, never a silently-dropped row. Pairs with plan_load's output for a full round-trip.
| Argument | Type | Description |
|---|---|---|
| packingList* | object | A loadingmcp.packing-list document: { format: "loadingmcp.packing-list", formatVersion, equipmentCode, jurisdiction?, lines: [...] }. See docs/INTEGRATION.md. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"packingList"
],
"properties": {
"packingList": {
"type": "object",
"description": "A loadingmcp.packing-list document: { format: \"loadingmcp.packing-list\", formatVersion, equipmentCode, jurisdiction?, lines: [...] }. See docs/INTEGRATION.md.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
}
}List the standard container, truck, ULD and pallet types LoadingMCP can plan loads into, with internal dimensions (mm) and max payload (kg).
| Argument | Type | Description |
|---|---|---|
| category | string | Optional category filter |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"category": {
"enum": [
"container",
"truck",
"uld",
"pallet"
],
"type": "string",
"description": "Optional category filter"
}
}
}Compute a 3D load plan for cargo into a container or truck: containers used, utilization (volume & payload %), centre of gravity, crush-protection violations, and a securing checklist (round cargo that rolls, soft cargo that slumps). Cargo `type` drives realism — drums/pipes hex-nest, big bags/sacks load on top and are never crushed. Omit `equipmentCode` to auto right-size to the cheapest container that fits. A real API key runs the production PackingSolver optimizer; the public demo key uses the offline preview packer.
| Argument | Type | Description |
|---|---|---|
| vgm | object | SOLAS Verified Gross Mass declaration (else a tare+cargo estimate is reported) |
| mode | string | Transport mode — scopes auto right-size to usable equipment (sea→containers, road→trucks, air→ULDs). Ignored when equipmentCode is given. |
| items* | array | Cargo lines to load |
| jurisdiction | string | Road jurisdiction for the axle / gross-weight compliance check (default EU). Set CN for China GB 1589 drayage limits. |
| vesselMotion | object | IMO CSS Annex 13 vessel motion + stowage position. When set, the sea leg uses the position-dependent DYNAMIC acceleration field (a container on deck forward sees a far harsher case than one low amidships) instead of the flat sea-area coefficient. |
| equipmentCode | string | Equipment code, e.g. 40HC (see list_equipment). Omit to auto right-size. |
Given total cargo volume (m³) and weight (kg), suggest how many of which container to use — a quick volume/weight estimate. For an exact, dimension-aware plan with utilization, CoG and securing, use plan_load (which can also auto right-size).
| Argument | Type | Description |
|---|---|---|
| volumeM3* | number | Total cargo volume in cubic metres |
| weightKg* | number | Total cargo weight in kilograms |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"volumeM3",
"weightKg"
],
"properties": {
"volumeM3": {
"type": "number",
"description": "Total cargo volume in cubic metres"
},
"weightKg": {
"type": "number",
"description": "Total cargo weight in kilograms"
}
}
}| sequenceStops |
| boolean |
| Delivery-stop sequencing: with ≥2 distinct deliveryStop values, zone the load nose→doors in reverse delivery order. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"items"
],
"properties": {
"vgm": {
"type": "object",
"properties": {
"method": {
"enum": [
"M1",
"M2"
],
"type": "string",
"description": "VGM method: M1 = weighbridge of the packed container, M2 = certified calculated sum"
},
"dunnageKg": {
"type": "number",
"minimum": 0,
"description": "Dunnage/securing mass (kg) to fold into the calculated VGM estimate"
},
"declaredKg": {
"type": "array",
"items": {
"type": "number",
"minimum": 0
},
"description": "Shipper-declared SOLAS VGM per container (kg), index-aligned to containers used"
}
},
"description": "SOLAS Verified Gross Mass declaration (else a tare+cargo estimate is reported)"
},
"mode": {
"enum": [
"sea",
"road",
"air"
],
"type": "string",
"default": "sea",
"description": "Transport mode — scopes auto right-size to usable equipment (sea→containers, road→trucks, air→ULDs). Ignored when equipmentCode is given."
},
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"length",
"width",
"height",
"weight"
],
"properties": {
"id": {
"type": "string",
"description": "Your reference for this cargo line"
},
"type": {
"enum": [
"box",
"pallet",
"drum",
"cylinder",
"bigbag",
"roll",
"sack"
],
"type": "string",
"default": "box",
"description": "Cargo shape: drum/cylinder/roll hex-nest; bigbag/sack load on top, never crushed"
},
"bulky": {
"type": "boolean",
"default": false,
"description": "Bulky/awkward — never takes a load on top and needs handling clearance"
},
"width": {
"type": "number",
"description": "mm"
},
"height": {
"type": "number",
"description": "mm"
},
"length": {
"type": "number",
"description": "mm"
},
"weight": {
"type": "number",
"description": "kg per unit"
},
"quantity": {
"type": "integer",
"default": 1,
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"unNumber": {
"type": "string",
"description": "UN number, e.g. \"UN1263\" or \"1263\". When set, the engine DERIVES the IMDG class, packing group, subsidiary risks, marine-pollutant status, segregation groups, stowage category and EmS from the curated Dangerous Goods List — no need to hand-enter each. Explicit DG fields override the derived ones."
},
"stackable": {
"type": "boolean",
"default": true,
"description": "Whether anything may be stacked on top"
},
"doubleWall": {
"type": "boolean",
"description": "Double-wall corrugated (vs single)"
},
"thisSideUp": {
"type": "boolean",
"default": false,
"description": "Must stay upright — restricts the packer to upright orientations"
},
"hazmatClass": {
"type": "string",
"description": "IMDG dangerous-goods class (e.g. \"3\", \"5.1\") — drives 7.2.4 segregation. Omit for non-hazardous."
},
"boardEctLbIn": {
"type": "number",
"description": "Corrugated edge-crush test (lb/in) → physical McKee crush limit for cartons",
"exclusiveMinimum": 0
},
"deliveryStop": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Multi-drop delivery-stop order (1 = first delivered, loaded last at the doors). ≥2 distinct stops + sequenceStops zones the load nose→doors.",
"exclusiveMinimum": 0
},
"packingGroup": {
"enum": [
"I",
"II",
"III"
],
"type": "string",
"description": "IMDG packing group. Derived from the UN number when unNumber is set."
},
"refrigerated": {
"type": "boolean",
"default": false,
"description": "Needs the cold chain (reefer only)"
},
"boardCaliperMm": {
"type": "number",
"description": "Corrugated board thickness (mm)",
"exclusiveMinimum": 0
},
"limitedQuantity": {
"type": "boolean",
"description": "Shipped as a limited quantity (IMDG 3.4) — exempt from most segregation except vs class 1/7."
},
"marinePollutant": {
"type": "boolean",
"description": "Marine pollutant (IMDG 2.10 / MARPOL Annex III). Derived from the DGL."
},
"maxStackWeightKg": {
"type": "number",
"minimum": 0,
"description": "Your crush limit: max kg allowed on top of one unit. Omit for a generous default; 0 = nothing may stack on it."
},
"segregationGroups": {
"type": "array",
"items": {
"type": "string"
},
"description": "IMDG 2.7.2.5 segregation groups this substance belongs to."
},
"subsidiaryHazards": {
"type": "array",
"items": {
"type": "string"
},
"description": "IMDG subsidiary hazard classes, e.g. [\"6.1\", \"8\"]."
},
"compatibilityGroup": {
"type": "string",
"description": "Class-1 explosives compatibility group (A–S)."
},
"segregateFromGroups": {
"type": "array",
"items": {
"type": "string"
},
"description": "IMDG segregation groups to keep this substance away from (its DGL column-16b provisions)."
}
}
},
"description": "Cargo lines to load"
},
"jurisdiction": {
"enum": [
"EU",
"US",
"CN"
],
"type": "string",
"description": "Road jurisdiction for the axle / gross-weight compliance check (default EU). Set CN for China GB 1589 drayage limits."
},
"vesselMotion": {
"type": "object",
"required": [
"lengthFraction",
"stowageZone"
],
"properties": {
"bOverGm": {
"type": "number",
"description": "Beam / metacentric-height ratio B/GM; derives the Annex 13 transverse B/GM correction.",
"exclusiveMinimum": 0
},
"lengthM": {
"type": "number",
"description": "Ship length between perpendiculars (m); with speedKn, derives the Annex 13 length/speed correction (50–300 m).",
"exclusiveMinimum": 0
},
"speedKn": {
"type": "number",
"description": "Service speed (kn); pairs with lengthM.",
"exclusiveMinimum": 0
},
"bGmFactor": {
"type": "number",
"description": "Explicit IMO CSS Annex 13 B/GM correction factor (fallback when bOverGm absent).",
"exclusiveMinimum": 0
},
"stowageZone": {
"enum": [
"onDeckHigh",
"onDeckLow",
"tweendeck",
"lowerHold"
],
"type": "string",
"description": "Vertical stowage zone."
},
"lengthFraction": {
"type": "number",
"maximum": 1,
"minimum": 0,
"description": "Longitudinal stowage position as a fraction of ship length from the aft perpendicular (0=aft, 1=fore)."
},
"lengthSpeedFactor": {
"type": "number",
"description": "Explicit IMO CSS Annex 13 length/speed correction factor (fallback when lengthM/speedKn absent).",
"exclusiveMinimum": 0
}
},
"description": "IMO CSS Annex 13 vessel motion + stowage position. When set, the sea leg uses the position-dependent DYNAMIC acceleration field (a container on deck forward sees a far harsher case than one low amidships) instead of the flat sea-area coefficient."
},
"equipmentCode": {
"type": "string",
"description": "Equipment code, e.g. 40HC (see list_equipment). Omit to auto right-size."
},
"sequenceStops": {
"type": "boolean",
"default": false,
"description": "Delivery-stop sequencing: with ≥2 distinct deliveryStop values, zone the load nose→doors in reverse delivery order."
}
}
}