The hot shoe is handled by the
MPU, to my knowledge, and I did not explore it. I'm pretty sure others did, outside the ML project.
The port with the most consistent timing is probably the
UART (available as a debug port, but finding the right connector can be challenging).
The USB port is also available, but your device needs to be a USB host. No idea about timing; probably OK.
Bit-banging over the audio input (microphone) pin might be doable, too. See this
remote trigger.
Timing, i.e. "exactly on the time the picture was taken." -> better sync this one with a microphone

Reason: the main CPU controls the exposure, but the mechanical shutter (which gives the actual exposure timings) is handled by the MPU. Communication between them is a little slow. Maybe the timing is actually consistent - who knows - one has to do a bit of low-level experimentation to find out.
Start here.
For adding metadata to pictures, the easiest way is by using a sidecar file. See
this thread.