← Back to PRs

#8717: feat(web-search): add Seltz as search provider

by WilliamEspegren open 2026-02-04 09:41 View on GitHub →
docs agents stale
![seltz_demo](https://github.com/user-attachments/assets/14777d24-9770-46f5-a1a7-ff97c23325ca) ## Summary - Add Seltz (seltz.ai) as a web search provider alongside Brave and Perplexity - Seltz provides context-engineered web content optimized for AI reasoning - Configurable via `tools.web.search.provider: "seltz"` and `SELTZ_API_KEY` env var ## Test plan - [x] Unit tests for Seltz API key resolution (config + env fallback) - [x] Unit tests for `runSeltzSearch` response parsing - [x] Manual integration test against live Seltz API - [x] `pnpm check` passes (types, lint, format) Joined the discord and jumped into a voice channel to ask wether they thought adding a new search provider was a good idea, and they said yes (here are some of the support from discord): <img width="1020" height="153" alt="discord_request" src="https://github.com/user-attachments/assets/557abd64-a89e-4042-a8aa-db1f56cbc983" /> <img width="314" height="112" alt="discord_support_new_search_integration" src="https://github.com/user-attachments/assets/0073889e-943a-483b-9f3b-f0f6f2c194ba" /> <!-- greptile_comment --> <h2>Greptile Overview</h2> <h3>Greptile Summary</h3> This PR adds **Seltz** as an additional `web_search` provider alongside Brave (default) and Perplexity. The implementation extends provider selection/config validation, adds Seltz-specific API key resolution (`tools.web.search.seltz.apiKey` with `SELTZ_API_KEY` fallback), and implements `runSeltzSearch` to call Seltz’s API and map returned documents into the existing `web_search` result shape (title/url/description + caching). Overall it fits the existing pattern used for Perplexity: provider-specific config parsing + key resolution + provider branch inside `runWebSearch`, plus docs/tests updates to cover configuration and response mapping. <h3>Confidence Score: 3/5</h3> - This PR is reasonably safe to merge, but has a couple of integration correctness risks around Seltz auth and caching. - Core wiring (schema/config/tests) is consistent with existing providers, but the Seltz API call currently only passes the key in the JSON body and not via headers, which may not match the service’s expected auth mechanism and can cause runtime failures. Cache key omissions for non-Brave providers could also yield incorrect cached responses if model/baseUrl changes. - src/agents/tools/web-search.ts <!-- greptile_other_comments_section --> <!-- /greptile_comment -->

Most Similar PRs