Ask the user to select several options
ask_multi_selectAsk the user to choose one or more options from a list and wait for the answer. Returns the selected labels for use in your workflow.
Instructions
Ask the user to select one or more options from a list and wait for the answer. Use this when the user should pick a subset — which platforms to target, which checks to enable, which modules to include. Set min/max when the count genuinely matters; leave them out otherwise. Returns the selected labels in selected and comma-joined in answer.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| max | No | Maximum number of selections allowed. Defaults to the number of options. | |
| min | No | Minimum number of selections required. Defaults to 1. | |
| options | Yes | The candidate items. The user may select more than one. | |
| question | Yes | The question whose answer is a subset of the listed options. Say explicitly whether the choices are independent. | |
| timeout_ms | No | Optional override, in milliseconds, for how long to wait for the user. Defaults to the server setting (HIM_TIMEOUT_MS, 300000). |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| via | Yes | Channel that produced the outcome. | |
| tool | Yes | Name of the tool that produced this result. | |
| answer | Yes | The answer as a string: chosen label, "yes"/"no", or the typed text. | |
| status | Yes | Outcome. Only `answered` carries a usable answer. `needs_user_input` means you must ask the user yourself, in chat, using the question and options in `message`. | |
| message | Yes | Human-readable summary, including options when the question is still unanswered. | |
| fallback | Yes | Configured fallback mode (HIM_FALLBACK). | |
| form_url | Yes | Loopback form URL, when the http fallback served this question. | |
| question | Yes | The question as it was asked. | |
| selected | Yes | Selected labels; exactly one for ask_choice, N for ask_multi_select. | |
| confirmed | Yes | ask_confirm only: true for yes, false for no. | |
| free_text | Yes | Optional free-text note supplied alongside a choice. | |
| next_step | Yes | What you should do next. Follow it. | |
| elapsed_ms | Yes | Wall-clock time spent waiting for the user, in milliseconds. | |
| client_elicitation | Yes | Whether the connected client declared MCP form-elicitation support during initialize. | |
| auto_reject_suspected | Yes | True when a decline came back so fast that the client probably auto-rejected rather than asking the user. |