monotone in itself is quite useful, and it can be made even more useful through hooks, user supplied commands (through the register_command), external scripts, library modules, completion modules, ...
There are recommendations on how to write hooks, or how one can ideally install hooks contributed by others.