Skip to main content
Glama

Plan a Cargo Load

plan_cargo_load
Read-onlyIdempotent

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

TableJSON Schema
NameRequiredDescriptionDefault
widthYesWidth of one unit.
heightYesHeight of one unit. For a pallet, the loaded height including the deck.
lengthYesLength of one unit (carton, crate or loaded pallet).
vesselYesThe 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.
weightNoGross weight of one unit. Optional; without it the payload is not checked.
quantityNoHow many units ship.
stackableNoWhether units may be stacked on top of each other.
unitSystemNoUnits for the dimensions and weight. 'metric' = centimetres and kilograms; 'imperial' = inches and pounds.metric
keepUprightNo"This side up": false lets the unit lie on a side if that fits more.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
layersYes
vesselYes
perLoadYesUnits one vessel takes: the smaller of space and payload.
limitedByYes
floorCountYesUnits in one floor layer.
laidOnSideYes
plannerUrlYesThe same plan on the web, with the floor layout drawn.
loadsNeededYesVessels needed for the full quantity.
payloadAllowsYesUnits the payload allows; null when no weight was given.
exactFloorCountYesFalse when the floor count is a block-pattern lower bound.
unitsInLastLoadYes
volumeUtilisationPctYesOf the first load.
weightUtilisationPctYesOf the first load; 0 when no weight was given.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare a safe, idempotent, closed-world read (readOnlyHint=true, destructiveHint=false, idempotentHint=true, openWorldHint=false). The description adds genuinely new behavioral context beyond that: the per-call scope constraint ('One size per call; for several sizes, call once per size') and the fact that a web-rendered plan link is returned. It does not discuss rate limits or error behavior, but for a read-only calculator that is a minor gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the purpose, then usage triggers, then the return payload, then the one-size-per-call constraint — a logical order with no filler sentences. It is somewhat dense and long, but every clause carries information (vessel list, output fields, scope rule), so it earns its length without padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description needn't enumerate return values, yet it still summarizes them (units per layer, layers, loads needed, utilisation, web link), which is more than required. Annotations cover the safety profile, schema coverage is 100%, and the description supplies purpose, triggers, scope rules and vessel coverage — nothing an agent needs to call this correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all nine parameters and the baseline is 3. The description still adds meaning by clarifying that each call covers a single size with optionally-supplied weight, which explains why quantity is interpreted per-size and why weight is optional ('without it the payload is not checked' is in the schema). Modest added value on top of a fully documented schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Plan how one cargo size loads into a shipping container, truck trailer or rail wagon') and enumerates supported vessel types, so the agent knows exactly what the tool computes. It does not explicitly differentiate itself from the overlapping sibling how_many_pallets_fit (which also handles pallets) or calculate_cbm, so it falls short of full sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete trigger conditions: 'Use this when someone asks how many of their boxes, cartons, crates or pallets ... fit in a 20ft, 40ft ... or whether weight or space limits the load.' This clearly states when to reach for the tool. No alternatives are named in the description (get_container_dimensions is only referenced inside the schema), so the 'when-not / alternative' half is missing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources