search-boost
Point search-boost's Tavily engine at https://api.specstream.ai/tavily with engines.tavily.baseUrl, put your SpecStream key in the Tavily slot, and fused_search gets Tavily-shaped results from SpecStream's Search API. One command, no code change, and your free pool stays as it is.
What you need
- search-boost 0.2.3 or newer, where custom base URLs arrived, and Node.js 22.13 or newer.
- A SpecStream key. Get your key on the Search API screen of your SpecStream workspace. New accounts start with $10 of credit, no card.
- 1
1. Set the Tavily key and base address
search-boost takes an API base, not a full search endpoint, and adds
/searchto it. Sohttps://api.specstream.ai/tavilysends every Tavily call tohttps://api.specstream.ai/tavily/search, SpecStream's Tavily route. Put your key in place ofYOUR_SPECSTREAM_KEY:Terminal - 2
2. Or write it in keys.json
The same settings live in
~/.search-boost/config/keys.json, or underSEARCH_BOOST_HOMEif you set it. Keep the other keys in the file as they are:~/.search-boost/config/keys.json - 3
3. Check the effective base
--showprints the masked key and the base address search-boost will use. In the terminal UI the same is under Search engine configuration, where Set / replace Base URL edits it.Terminal - 4
4. Search with Tavily
Ask your agent something from this week. To send a search to Tavily alone, call
fused_searchwithengines:fused_search arguments
Which searches reach SpecStream
With a key stored, search-boost's default layer is api unless you set it, and a fused_search with no engine_pool then runs the free pool and Tavily together. engine_pool: "api" runs only the keyed engines, and engines: ["tavily"] runs only Tavily. To fix the layer, run search-boost config layer --layer api.
The key in keys.json wins over TAVILY_API_KEY. The environment variable is used only when the file holds no Tavily key.
What search-boost sends, and what comes back
| search-boost sends | SpecStream |
|---|---|
POST {baseUrl}/search | https://api.specstream.ai/tavily/search |
api_key in the body | Read as your SpecStream key |
max_results, 8 at the default medium complexity | Up to 10 results is one search; each started block of 10 more adds to the price |
search_depth: basic, or advanced at complexity: "complex" | basic runs on the fast tier; advanced runs the default search |
include_domains and exclude_domains, up to 5 each | Results only from, or never from, those sites |
time_range from recency | Results from that window |
Reads results[].title, url, content and published_date | Tavily's shape. published_date is there when SpecStream knows the date |
What each search costs
A basic Tavily call is one Search API call on the fast tier: $1 per 1,000 searches of up to 10 results. An advanced call, which search-boost sends at complexity: "complex", is the default search at $5 per 1,000.
medium complexity sends up to 2 query variants and complex up to 3, each one a Tavily call, so a medium fused_search costs at most $0.002 through Tavily. Free pool engines cost nothing from SpecStream. Searches come out of your balance, with no quote and no approval.
Brave on the same key
SpecStream also answers Brave's search API. search-boost adds /web/search to the Brave base, so set it to https://api.specstream.ai/res/v1, with the same key in the Brave slot: search-boost config keys --set brave=YOUR_SPECSTREAM_KEY --base-url brave=https://api.specstream.ai/res/v1. search-boost sends the key in X-Subscription-Token, where SpecStream reads it. With both on SpecStream, a fused_search sends a call to each, and each call is charged.
If Tavily fails
tavily http 401: SpecStream got no valid key. Check the Tavily slot, and that the key can search. Keys made on the Search API screen can search.tavily http 404: the base ends in/search. search-boost adds it, so set the base tohttps://api.specstream.ai/tavily.Base URL must be an absolute HTTP(S) URL without credentials, query or fragment: the address holds?key=or a user name. The key goes in the Tavily slot, not the address.tavily http 429: search is busy. It is not charged, and the other engines' results still come back.
Where the key is kept
search-boost writes keys.json with mode 0600 and prints the key masked in --show, status and doctor. To end the key's access, revoke it under API keys in Agents & API in your workspace, and make a new one. More on the Tavily address: switch from Tavily.
Go back
Run search-boost config keys --reset-base-url tavily and set your Tavily key again with --set tavily=. Questions go to [email protected].
More
SpecStream for search-boost covers what it does in search-boost on one page. Every other tool has its guide in Connect your tools. You see the most a request can cost before it starts, and the matches are paid from your balance. Billing has the details. For help, email [email protected].