Two settings live on config.llm, and independently on config.llm.fallback: how hard the model thinks before it replies, and which of its provider’s own tools it may run mid-turn. Both are per model, because both are irregular across vendors — the values one model accepts are a hard error on another. Neither exists on a realtime speech-to-speech model.

reasoning_effort

Every language model entry in the catalog carries reasoning_efforts: the list of thinking settings that exact model was measured to accept, ordered fastest first. Leaving reasoning_effort unset means the first value in that list. An empty list means the model has no such setting, and sending one is a save error.
On a voice or video agent, give the model the least thinking it will accept. Every second of reasoning is a second of silence on a live call, and a caller who hears nothing assumes the line has dropped. Raise it only when you have decided the answer is worth the pause.
A text agent has no such pressure — nobody is listening to silence — so spend thinking there whenever the task benefits from it. The same is true of agent tasks, which nobody is waiting on in real time.

Do not reason about the names

The effort names do not order the same way at every vendor, so read the catalog’s order and ignore what the words sound like:
  • OpenAI rejects minimal outright. Its floor is none.
  • minimal is not the floor at xAI. On grok-4.3 it was measured burning more thinking tokens than low on a trivial prompt, so none is the only setting there that truly stops it.
  • grok-4.5 cannot stop thinking at all. It rejects none with a 400; minimal is its floor, and even at the bottom of its range it spends thinking tokens before the first word of a trivial answer. grok-4.3 is the safer xAI model for a voice pipeline.
  • Gemini has no none. Its floor is minimal, which measures zero thinking tokens on all four entries — the none of that family under another name.
These lists are probed against the live APIs, not transcribed from vendor documentation, and they disagree with that documentation on several models.

The matrix

Naming an effort a model does not offer is refused with the list it does offer. Naming one on a model with no such setting is refused too. In the dashboard the control is a Thinking select beside the model, in this order, and it disappears entirely on a model with fewer than two values.
The post-call analysis model takes its own reasoning_effort and is checked the same way. It never inherits the live model’s, because analysis runs after the caller has hung up. See call analysis.

builtin_tools

These are tools the model provider runs on its own servers during the agent’s turn: a web search, an X search, a Python sandbox, a document store the provider hosts. The provider searches or executes and folds the result into its own reply — Talqing never sees the call. They are not Talqing tools. There is nothing to create, publish, attach or version, no operation tree, and nothing runs on our side. Each entry is {type, config}, and the only valid types and config keys are the ones the chosen model’s catalog entry lists.
Two things to know before you switch one on.The provider bills every call, and Talqing’s cost estimate does not include it. The per-minute figure in the editor prices tokens, speech and the platform fee. A search is charged separately by the provider, on your own key.The search or code run happens before the agent speaks. On a voice call that is a few seconds of dead air. Write the prompt so the agent says it is looking something up before it goes quiet.

Setting them

An empty config is valid and means the provider’s own defaults. In the dashboard each tool is a switch inside the Models card, under the model that offers it, with its options in a band underneath.

What each model offers

Which tools exist is a property of the model, not of the agent, so changing the model drops any tool the new one does not offer. Check the catalog before switching. Domain and handle filters come in pairs, and the provider rejects a request carrying both — so setting allowed_domains and excluded_domains together, or the two X handle lists together, is a save error rather than a failure on a live call. The dashboard disables the second field as soon as the first has a value. OpenAI’s code_interpreter needs a container, and the only one Talqing can offer is auto-provisioned: a container id would have to be created in your own OpenAI account first. memory_limit writes inside that container.
file_search at OpenAI and xAI’s file_search (labelled Collections search) are not Talqing knowledge bases. The store lives in your own provider account, and you create and fill it there. For a knowledge base Talqing builds and the agent queries through a tool, see knowledge.

What each one costs

Charged by the provider on your own key, on top of tokens, and absent from Talqing’s cost estimate.

Rules

The fallback carries its own

llm.fallback.builtin_tools is a separate list, validated against the fallback’s own catalog entry. Nothing is copied down from the primary, because the same tool name is a different object at each vendor — xAI’s code interpreter takes no fields and OpenAI’s requires a container. A fallback with fewer tools, or none, is fine: it keeps the call and loses the search, which is the right way round. The same is true of reasoning_effort and priority. See model fallbacks.

Next

Models

Every model with its thinking settings, provider tools and price.

Prompting

Telling the agent to say it is looking something up.

Tools

Tools you build and Talqing runs, which is a different thing entirely.