Send a structured form
send_ui_handoffCreate one HUI 0.1 form. The person answers with native controls or the signed link. No HTML, CSS, or JavaScript. Call validate_ui first. HUI 0.1 is a JSON document. No HTML, CSS, or JavaScript. kinds: markdown, heading, callout, text, number, choice, multichoice, approval, rating, slider, toggle, date, time, section, group, disclosure, columns. inputs need id matching ^[a-z][a-z0-9_]{0,40}$. visibleIf and requiredIf use == != < > in && || ! plus field ids, strings, numbers, true, false, null, and lists. options may be an array of {value, label} or {"$bind":"/pointer"} into data. Do not send colors, fonts, or pixel sizes. tone is default, accent, or warning. emphasis is true or false. A flat children array is allowed. steps is the other layout, at most 6. Call validate_ui before send_ui_handoff when you are unsure. The result is answers keyed by field id, plus summary_text. This sends something to a person and cannot be silently undone. Sending again creates a second handoff. An agent key does not receive answer_url.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| ui | Yes | HUI 0.1 document: { hui: "0.1", steps or children }. | |
| due | No | YYYY-MM-DD or an ISO timestamp. | |
| tags | No | ||
| title | Yes | ||
| source | No | Optional session context stored with the handoff and shown on the iPad. | |
| lenient | No | When true, unknown properties are warnings and are dropped. Defaults to false, which rejects them. | |
| routing | No | Same as send_handoff. A UI answer completes the handoff. | |
| from_agent | Yes | Name of the agent sending the handoff. | |
| recipients | No | People who should receive this handoff, besides the signed-in account. Same shape as send_handoff. | |
| await_answer | No | Set true to wait for the human's answer. When this client declares the MCP Tasks extension, the call returns a task and the client delivers the same JSON as get_handoff_result once they submit. Omit it, or pass false, to get the handoff id immediately and keep working. Clients that do not declare Tasks ignore this flag and return the handoff id, same as today. | |
| callback_url | No | Public https URL notified when the handoff is submitted. The body includes answers, summary_text, and answered_by. | |
| instructions | No |