I normally do the following pattern:
1. Intercept shipping methods list in LiveOrder.Service response with my lookup from 3rd party
2. Once the user selects the shipping method, find again the rate for that method, and store that rate on a custom body field
3. Finally, scriptable cart copies the rate from the body field and stores it on the shipping cost field.