I don’t know if this is a reasonable way to do it, but I had just made an unlisted page called tag and a corresponding tag.json.php template. Perhaps it could also just be defined in a custom route in config.php?
If I remove children(), nothing is returned.
The events are essentialy grandchildren so is it due to the hierarchy that they aren’t being picked up?
EDIT Ok, so there was indeed an obvious solution, to use $items = $site->index() instead.
My apologies, thanks for your help as always @texnixe