I got sick of working on Hammer in C++, so over the last couple of months I've been working on a C# API for tool addons to extend the functionality of Hammer.
You can do a lot with this already: create procedural meshes, place entities, get selected nodes, add new menus - and all from C# with hot loading.