Search provider
Six providers, each returning titles and snippets. Each needs one API key, and every one has a free tier.
Keys are stored in your OS keychain, and each provider keeps its own. Switching providers does not wipe a key you already entered. Test search runs a sample query and reports how many results came back, so you find a bad key here rather than mid-conversation.
OpenRouter’s built-in search
Shown only when your assistant provider is OpenRouter. On by default for that provider. OpenRouter runs the search itself in its:online mode, billed to your OpenRouter credits, with no separate search API key needed.
Turn it off to use your own search provider instead.
It also steps aside on a turn that carries an image, because OpenRouter’s server-side search cannot be paired with an inline screenshot. Those turns use the normal tool path like every other provider.
How the model decides to search
Turning web search on gives the model aweb_search tool. The model calls it while writing its reply, passing its own query. A turn runs at most three model rounds, so the assistant can search, read what came back, and search once more before it answers with what it has.
A get_current_datetime tool is always available regardless of web search. Models have no clock, so this is how “what is today’s date” and “how long until X” stay correct, and how a relative phrase becomes a concrete date before a search query is built.
The system prompt also tells the model not to claim it cannot access the internet. Without that, a model would refuse on the turns where it decided not to search, the worst possible answer when the tool was available.