You can definitely use a M4L device to write / read MIDI data to and from clips, by using the Live API.
It’s been a while since I was last playing around with this stuff, but if I remember correctly you need to use the live.path and live.object devices within your M4L device. Here are the useful bits of the M4L documentation:
https://docs.cycling74.com/max5/refpages/m4l-ref/m4l_live_api_overview.html
https://docs.cycling74.com/max5/refpages/m4l-ref/m4l_live_object_model.html
From looking at those links briefly, I thiiiiiink you need to set the Live API path by sending the “live_set tracks N clip_slots M clip” message (explained in the second of the two links) to a live.path device, then sending live.path’s output to a live.object (the process for using live.path and live.object to navigate and interact with Live’s API is covered in the first link), then sending a “replace_selected_notes” message to the same live.object (again, this messaging is covered in the second link).
Basically, you tell M4L “Okay, find out the designated path within Live’s API for this particular clip in that track… okay, now add this note at that time in the clip, with this velocity and that duration”
Once you’ve got that worked out (it’s a bit fiddly but makes sense once you get your head round it), it’s dead simple to connect those messages to a step sequencer.