The MessagePack specification helps you to learn about the available data types and their binary representation. However, I can't find information on the "grammar" that has to be used for building valid msgpack structures (since it's not a textual but a binary format, the term "grammar" is probably not accurate). I'm especially wondering if there are any requirements regarding the "top-level" elements within a msgpack structure. It's basically a similar question to the one that occured for JSON some time ago, albeit JSON's grammar is specified.
Using msgpack, is it ok to have primitive types (Int, Boolean..) at the top level, or does everything have to be encapsulated in a map/array? Is it possible to have multiple elements at the top level (e.g. two arrays, not nested, but "next to each other")?