Create a Shippo shipment via POST /shipments ensuring all carrier accounts you want to rate-shop are connected in your Shippo account (connect in the Shippo dashboard or via POST /carrier_accounts).
The shipment response 'rates' array contains rates from all connected carriers; each rate includes 'provider', 'servicelevel.name', 'servicelevel.token', 'amount', 'currency', 'estimated_days', and 'arrives_by' (if available).
Filter rates by 'estimated_days' or 'arrives_by' to keep only services that meet your delivery SLA window.
Sort the filtered rates by 'amount' ascending to find the cheapest qualifying service; handle currency conversion if you have international carrier accounts returning non-USD amounts.
Purchase a transaction using the chosen rate's 'object_id' via POST /transactions; the label for that carrier and service is returned in the response.
Known gotchas
Not all carrier accounts return rates for every shipment — a carrier may omit a rate if the destination is outside its service area or if your account lacks the service level. Filter by presence, not absence.
'estimated_days' is a carrier-reported estimate and is not a guaranteed SLA; for time-sensitive shipments, verify against carrier service commitments separately.
Connecting a carrier account to Shippo requires carrier-specific credentials (account number, meter number, etc.); incorrect credentials cause that carrier's rates to silently be omitted from results.
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