# `Mead.Router.AskUser`
[🔗](https://github.com/albertosca/mead/blob/main/lib/mead/router/ask_user.ex#L1)

The built-in `ask_user` tool: lets the model put a short multiple-choice question to the person
and use the answer.

It is offered only to a turn that has an interaction and at least one other tool (see
`Mead.Router`), is answered by the router itself and never reaches `Mead.MCP.Hub`. Its name has
no `__`, which is what an MCP tool always has in the model's view (`server__tool`), so a server
cannot shadow it. The policy never gates it: it changes nothing outside the conversation.

# `name`

```elixir
@spec name() :: String.t()
```

# `tool`

```elixir
@spec tool() :: %{name: String.t(), description: String.t(), input_schema: map()}
```

# `validate`

```elixir
@spec validate(term()) ::
  {:ok, %{prompt: String.t(), options: [%{id: String.t(), label: String.t()}]}}
  | {:error, String.t()}
```

Checks the arguments the model gave; extra fields are ignored.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
