You'd need client commands.
Well, considering it's a GUI, I don't think that's a problem. But you probably would need a client command. Item::onUse/etc would do commandtoClient(%someclient,command) or such. I'm just summarizing here, though.
Note: Append .dump() to the end of a variable (such as %obj or %obj.tool[number] or such) and it'll give you a list of functions/onSomethings/variables that're associated with the thing. Very helpful.
And before anyone says anything, my brain is not in coding mode, so don't chew me out for not going into detail.