in #53 we introduced some patterns for handling check errors in the UI (the form). we should adopt this pattern code-base-wise. otherwise, for tool use, validation fails when the LLM omits fields, plus we have to do a lot of work to mark fields optional and do weird .partial schema parsing.