Prominent you might already have tried these, but for checking internal points there's the Pick overlapping point condition, & for moving them back out the Custom Movement behavior has lots of 'push out solid' options.
mattb , pick overlapping point doesn't work for tilemaps. But I can check what the tile is at a position, and if it is -1 it means it is outside of it. push out solid seems to push them out at closest direction, which may not be accurate. I'm using the normal to push it out so it seems to work.. Sometimes I get it still pushing it out at wrong directions, so maybe I can use push out solid if the normal sends it too far in weird cases...
R0J0hound , do contact points remain after the on post collision event? Since it only fires once, there's no way to reference the contact point afterwards unless you store it in an instance variable- that's what it seems like anyways.