Yes... A lot of what was tricky for nxTools to do is now done in the server and exposed via new TCL calls. In fact, entire features like site open/close, site who, etc are all builtin command now as well. nxTools could only dream of asking the server to get the parsed mountfile, get an actual directory listing with merged dirs, submounts, etc all included. It would be far easier to write a site script now
There are actually 2 ways to extend ioFTPD. TCL is clearly the more flexible and powerful method, but you can also use the EXEC module to run any old executable and have it interact with ioFTPD in a limited manner. The real advantage here is you could use php scripts if your problem is simple enough that you don't need features exposed only via TCL. Quite a number of zipscripts from like a decade ago are .exe based and Jeza's new java based archiving code uses it today. Its interface isn't especially well documented anywhere but the commands are !putlog, !vfs:add, !vfs:chattr, !change, !unlock, !newlines, !prefix, !buffer, and !detach which are just commands you can send to the server via stdout that it acts on rather than outputting to the client. Inputs to the executable are via the command line, you'll find them documented in doc/Events.txt, and via the process environment created by /etc/ioftpd.env. It defines a lot of things already, but you can use any ioFTPD cookies (/doc/Cookies.txt) to add more information if what is there already isn't enough. You can always go right to the ioFTPD source code for exact details