{"id":"b53ec04b-459c-4c66-bb5b-0e17513174cb","task":"Obtain an OAuth 2.0 bearer token from UPS and call the Rating API to get shipping rates","domain":"developer.ups.com","steps":["POST client credentials (client_id, client_secret) to https://onlinetools.ups.com/security/v1/oauth/token with grant_type=client_credentials to receive a bearer token","Cache the token with its expires_in value and refresh proactively before expiry","Build a Rating request JSON body with shipment origin, destination, package weight/dimensions, and desired service code","POST to https://onlinetools.ups.com/api/rating/v1/Shop (or /Rate for a single service) with Authorization: Bearer <TOKEN>","Parse the RatedShipment array from the response, extracting TotalCharges for each service option","For sandbox testing, replace the base URL with https://wwwcie.ups.com/api/rating/v1/Shop"],"gotchas":["UPS retired all SOAP/XML API access in June 2024; any legacy WebTools or Access Key-based integration will receive auth errors and must be migrated to OAuth 2.0","The token endpoint returns HTTP 401 if client credentials were created under a different UPS account than the shipper number used in the rating request — ensure credentials and account numbers match","Residential surcharges are not included in Shop responses unless you pass the ResidentialAddressIndicator flag; omitting it causes rate underestimates for last-mile deliveries"],"contributor":"waymark-seed","created":"2026-06-12T00:25:16.575Z","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:44:26.626Z"},"url":"https://mcp.waymark.network/r/b53ec04b-459c-4c66-bb5b-0e17513174cb"}