# Conversation

> Ask the user to choose, and search the web.

Source: https://kcq.nebutra.com/docs/agent/tools/conversation


<Callout>
  Generated from the pinned chart source (

  [`1aa5e22`](https://github.com/TsekaLuk/KLineChartQuant/blob/1aa5e22c61313a34d08878ad895e604e0d4a85e9/packages/core/src/foundation/agent/chartToolRegistry.ts)

  ). Descriptions are the exact text the model receives.
</Callout>

web_search [#web_search]

<ToolMeta label="Web search" safety="read-only" safetyLabel="Read-only" mode="Runs in parallel" origin="Agent runtime" source="https://github.com/TsekaLuk/KLineChartQuant/blob/1aa5e22c61313a34d08878ad895e604e0d4a85e9/packages/agent-runtime/src/search/impl/web-search-tool.ts#L8" sourceLabel="Source" />

Search the public web for current information. Results include titles, URLs, and snippets; cite the returned URLs when using them. If Web search is not configured, tell the user to add an Exa API key in Agent settings and do not invent search results.

**Parameters**

| Name               | Type                 | Required | Constraints                                            | Description |
| ------------------ | -------------------- | -------- | ------------------------------------------------------ | ----------- |
| <code>query</code> | <code>string</code>  | Yes      | min length <code>1</code>; max length <code>500</code> |             |
| <code>limit</code> | <code>integer</code> | —        | ≥ <code>1</code>; ≤ <code>10</code>                    |             |

**Minimal input** · Required fields only; placeholders are derived from the schema.

```json
{
  "query": "<query>"
}
```

<ToolSchema name="web_search" label="JSON Schema" />

ask_user [#ask_user]

<ToolMeta label="Ask question" safety="read-only" safetyLabel="Read-only" mode="Runs in order" origin="Agent runtime" source="https://github.com/TsekaLuk/KLineChartQuant/blob/1aa5e22c61313a34d08878ad895e604e0d4a85e9/packages/agent-runtime/src/tools/ask-user-tool.ts#L7" sourceLabel="Source" />

Ask the user a clarifying question in the Agent panel and wait for the answer before continuing. This is required whenever a tool result reports status "ambiguous": turn every candidate into one option, where value is the candidate's unique routing identifier (for example its id, or source + exchange + assetClass), label is its display name, and description explains its source, exchange, and assetClass routing fields. Every value must be unique; labels may repeat. Never answer on the user's behalf and never retry with a guessed candidate.

**Parameters**

| Name                                | Type                   | Required | Constraints                                             | Description |
| ----------------------------------- | ---------------------- | -------- | ------------------------------------------------------- | ----------- |
| <code>question</code>               | <code>string</code>    | Yes      | min length <code>1</code>; max length <code>2000</code> |             |
| <code>multiSelect</code>            | <code>boolean</code>   | —        | —                                                       |             |
| <code>options</code>                | <code>object\[]</code> | Yes      | min items <code>1</code>; max items <code>8</code>      |             |
| <code>options\[].value</code>       | <code>string</code>    | Yes      | min length <code>1</code>; max length <code>200</code>  |             |
| <code>options\[].label</code>       | <code>string</code>    | Yes      | min length <code>1</code>; max length <code>200</code>  |             |
| <code>options\[].description</code> | <code>string</code>    | —        | min length <code>1</code>; max length <code>500</code>  |             |

**Minimal input** · Required fields only; placeholders are derived from the schema.

```json
{
  "question": "<question>",
  "options": [
    {
      "value": "<value>",
      "label": "<label>"
    }
  ]
}
```

<ToolSchema name="ask_user" label="JSON Schema" />
