Call GET /v1/connections/carriers to discover available carrier codes and the credential fields each carrier requires
POST to /v1/connections/carriers/{carrier_code} with a JSON body containing the carrier-specific credential fields (e.g., account_number, password, nickname) documented per carrier
The response returns a carrier_id on success; store this id for use in subsequent rate and label requests
Verify the connection by calling GET /v1/carriers/{carrier_id} and confirming 'requires_funded_amount' and 'has_multi_package_supporting_services' reflect expected carrier capabilities
To update credentials later (e.g., password rotation), call PUT /v1/connections/carriers/{carrier_code}/{carrier_id} with the updated fields
Known gotchas
Each carrier uses a different credential schema; retrieve credential requirements via GET before posting to avoid schema validation errors
LTL carrier connections use a separate endpoint path documented under /v1/connections/carriers/ltl — do not use the parcel carrier path for freight accounts
After a successful connection, it can take a few minutes for the carrier's rate engine to become available; retry rate calls with exponential backoff if you receive a 'carrier not ready' error immediately after connection
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