Passing data back and forth can be done either by letting a tool activity use a specific context object that the tool can prep in the context store, or by requiring the host to implement specific interfaces (that the activity can check for inSetup()).