multipass launch ... will only return once all the cloud-init steps are done with. If you need more granularity than that, you’ll need to multipass exec ... and get more data directly out of cloud-init.
You will either need to wait for multipass info ... to say the instance is running (that won’t wait for cloud-init), or just loop a multipass exec ... until it succeeds.
Here’s a related issue describing how we want to deal with waiting for cloud-init in the long run: