@Kieran I'm glad you built that abstraction =]. When michael (I can't actually find his name to @ him.. hmm :P) started building ssb-go (the game of Go in scuttlebutt), I realised I'd lost an opportunity to do the invite / invite accept portion of the ssb-chess protocol more abstractly and that if I had, he could've re-used it - so it's good to see someone else doing it :D.
The ssb-chess-db flume indexer ( https://github.com/happy0/ssb-chess-db / http://localhost:7718/%25yxHzioSeLkUq46%2FU4zgDGbf0ixrwIsmN%2FHwOESsq9Qg%3D.sha256 ) I built for finding games and their status could also have been build abstractly on top of it (perhaps with some customisation about message types / fields to look at to get the game status.)
I guess your use case for invite / invite accepted doesn't have any status beyond 'accepted / not accepted', but in chess / go there is 'win for white, win for black, draw', etc.
Anyway, this whole mmt project sounds cool :)