supportedThermostatModes isn't supposed to be JSON_OBJECT?

This may also not help with your original question, at in terms of the "what works" clause, but in the end it may be what the devices expect, rightly or wrongly....