Well, you can walk the stash of the class the object belongs to, and the stashes of the classes this class directly and indirectly inherits, and the stash of UNIVERSAL. It will give you a bunch of subroutine names.
But it won't be easy to determine which ones are supposed to be methods (and hence callable from the outside), and which ones are subroutines not meant as methods.