GET /v2/carrier_types to retrieve the list of supported carrier types and their required credential fields; each carrier type has a 'fields' object describing 'credentials' and optional 'test_credentials' with their field names and labels.
POST /v2/carrier_accounts with a JSON body containing 'type' (the carrier type string, e.g., 'UpsAccount', 'FedexAccount'), 'description' (a human-readable label), and 'credentials' object with the carrier-specific fields identified in step 1.
The response returns a CarrierAccount object with an 'id' that you can reference in shipment creation to restrict rate shopping to specific accounts.
To use a connected carrier account for rates, include 'carrier_accounts' array (with objects containing the account 'id') in your shipment POST body; omitting this uses all connected accounts.
To update credentials (e.g., after a carrier password change), PUT /v2/carrier_accounts/{carrier_account_id} with just the changed 'credentials' fields.
Known gotchas
Carrier account connection requires the account holder's actual carrier credentials, not EasyPost credentials; gather these from the carrier's shipper portal before attempting connection.
Some carriers (e.g., FedEx, UPS) may require additional account configuration on the carrier side (e.g., enabling third-party billing or API access) before credentials work in EasyPost.
A connected carrier account with invalid credentials silently returns no rates rather than an error in the shipment response; always verify account connectivity after setup by checking for rates on a test shipment.
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