That's new API right? I took a look but am not sure what the final form is that you are thinking of. Susan had some comments and David as well. The original patch from you had a method getAgent() which seems suspect as it does effectively the ServiceHelper trick. Do you have any examples of this API in use.
If you are going to look to release this please post a new patch with the proposed shape, some example use and mark for review. Ideally we could get John and/or DJ to review (I'll review as PMC guy). Please do not release until it has been reviewed.