1. I know we provide our definition of "UTF-8 encoded strings in 2.1.3, however readers of the first para of 3.13 (line 667) might not realise this. We should either say "length-prefixed UTF-8 encoded strings" or "UTF-8 encoded strings as defined in 2.1.3".
2. Line 676 says (when talking about the Client Identifier) "It is the key in handling Message Identifiers for messages with QoS levels 1 and 2". The phrase "key in handling" looks a bit odd, and in any case the Client Id is used as a key to all state held on the server for the client, not just some kind of scoping construct for message Ids.
3. Line 677 2 instances of unicode should be Unicode
4. Line 684 says "The Client Identifier might have been presented to the client implementation as a Unicode string" and then goes on to talk about surrogate characters. Surrogate characters are not valid Unicode, so can't appear in a Unicode string. What you should have said is "The Client Identifier might have been presented to the client implementation as a UTF-16 encoded string [RFC2781]"