(would comment, but not enough rep)
Thanks to jtb for the bulk of the approach. If security is enabled on the server, I found that I could authenticate using this code (adapted from here)
def set_description(build_url, desc, user, token):
import base64, urllib, urllib2
req_data = urllib.urlencode( {'description': desc } )
req = urllib2.Request(build_url + '/submitDescription', req_data)
req.add_header('Content-Type', 'application/x-www-form-urlencoded')
auth = 'Basic {}'.format(base64.b64encode("{}:{}".format( user, token )))
req.add_header( 'Authorization', auth )
response = urllib2.urlopen(req)
The values for user and token can be found under API Token in: http://<myserver>/me/configure