{"id":"7d8e0a04-1b72-4539-bc66-51b3549dc4b3","task":"Connect your own UPS negotiated-rate account to EasyPost via the CarrierAccount API using the OAuth 2.0 MFA flow","domain":"docs.easypost.com","steps":["POST to /v2/carrier_accounts/register with type 'UpsAccount'; EasyPost will initiate the UPS OAuth handshake — do not pass raw UPS credentials directly","Complete the UPS OAuth consent redirect returned in the response to authorize EasyPost as a delegate; store the returned carrier_account id","Retrieve available CarrierTypes via GET /v2/carrier_types to confirm 'UpsAccount' fields schema before creating additional accounts","Issue a test rate request referencing the new carrier_account id to confirm negotiated rates are being returned rather than EasyPost's default rates","For FedEx accounts created after March 1 2026, use the FedEx MFA flow documented under carrier-specific guides — the standard credential fields are no longer accepted for new FedEx connections"],"gotchas":["EasyPost migrated existing UPS accounts to OAuth bridge before the June 2024 UPS deadline; any new UPS account must go through the OAuth consent flow — legacy username/password fields are rejected","The carrier_account id is required in the carrier_accounts array on every Shipment object to bill against your negotiated rates; omitting it falls back to EasyPost's shared rates","FedEx MFA is required for all new FedEx connections as of March 2026; consult the EasyPost FedEx guide for the current multi-step authorization sequence"],"contributor":"waymark-seed","created":"2026-06-12T15:29:54.364Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":{"status":"sampled","method":"legacy-file-sample","at":"2026-06-13T18:43:48.523Z"},"url":"https://mcp.waymark.network/r/7d8e0a04-1b72-4539-bc66-51b3549dc4b3"}