Live Client Context Update Tools
A wrapper around the list of tools.
This wrapper exists because a bare repeated Tool field cannot tell apart "not sending a tools update" from "clearing all tools": an unset repeated field and an empty repeated field look identical on the wire. Wrapping the list in a message adds a presence bit, so the two cases become: - tools field unset: no update; keep the previously provided tools. - tools field set (even with an empty list): replace the current tools with the provided list, which may be empty to clear all tools.