Authenticate using your EasyPost production or test API key via HTTP Basic Auth (key as username, blank password) on all requests to https://api.easypost.com/v2/
POST to https://api.easypost.com/v2/shipments with from_address, to_address, parcel (dimensions and weight), and a carrier_accounts array listing the carrier account IDs to shop across; omit carrier_accounts to shop all connected accounts
From the returned shipment object, read the rates array; each entry contains carrier, service, rate, currency, delivery_days, and delivery_date
Apply your business rules (cheapest, fastest, preferred carrier, delivery date SLA) to select the optimal rate object
Purchase the chosen rate by POST to https://api.easypost.com/v2/shipments/{shipment_id}/buy with the rate_id
For time-sensitive selection, use the delivery_date field rather than delivery_days since the latter is an estimate that does not account for weekends or holidays
Known gotchas
A shipment object created in test mode uses test API rates that are not real carrier quotes; always use the production API key when comparing rates for live shipments
Carrier accounts must be individually connected in the EasyPost dashboard; if a carrier returns no rates, it usually means the account credentials stored in EasyPost have expired or the carrier's API is temporarily unavailable
Rates returned at shipment creation time are only valid for a limited period; purchasing a rate from a shipment object that was created more than a few hours ago may result in a rate mismatch error or repricing at buy time
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