Understand MPS structure: a multi-piece shipment groups multiple packages under one master tracking number (e.g., FedEx 'MasterTrackingNumber', UPS 'ShipmentIdentificationNumber') with individual tracking numbers per piece; carriers invoice the group together and may apply shipment-level discounts.
For EasyPost and Shippo: include multiple objects in the 'parcels' array within a single shipment request; the API handles MPS grouping automatically and returns individual tracking numbers per parcel along with a shipment-level identifier.
For UPS REST API: include multiple 'Package' objects in the 'Shipment.Package' array within a single shipment request; the response returns 'PackageResults' array with per-piece tracking numbers and label images.
For FedEx REST API: use 'requestedPackageLineItems' array with multiple line items in a single Ship request; the response returns 'pieceResponses' with individual tracking numbers and labels for each piece.
Download and print labels for each piece; each piece label contains its own barcode but references the master tracking number; all pieces in an MPS should be tendered to the carrier together.
When tracking an MPS, the master tracking number provides a shipment-level status while individual piece tracking numbers provide per-package scan events; decide which granularity your system requires.
Known gotchas
Carrier-specific MPS package count limits vary (verify per-carrier maximums in current docs); very large shipments may need to be split across multiple MPS groups.
Some carrier APIs require MPS pieces to be in separate API calls linked by a master tracking number from the first call (especially older FedEx SOAP workflows); the REST APIs generally accept all pieces in one request, but verify the current REST API behavior for your chosen carrier.
Insurance and declared value for MPS shipments may apply per piece or per shipment depending on the carrier; clarify coverage structure with the carrier before relying on declared value for high-value multi-piece shipments.
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp