web_search tool. Turn it on with an empty key field and searches go to Keenable’s public endpoint, no account needed.
→ The Keenable provider in CowAgent
Keenable ships with CowAgent 2.1.8 and later. Install CowAgent with the quick start, or bring an existing install up to date with
cow update (upgrade guide).Turn it on
1
Open the search settings
In the web console (
http://localhost:9899 by default), open Config, switch to the Models tab, and find the Web Search card.2
Add Keenable
Click Add provider and pick Keenable. Leave API Key empty and click Save. The card now lists Keenable · anonymous.
3
Ask the agent
Ask something that needs the web. The agent calls its
web_search tool, which answers from Keenable when no other search provider is set up.config.json (~/CowAgent/config.json for a script install, ~/.cow/config.json for the desktop app). To set it by hand, add this block and run cow restart:
Which provider answers
The search strategy defaults toauto, which uses the first configured provider in this order: Bocha, Baidu Qianfan, Zhipu, LinkAI, AnySearch, Serply, Tavily, SearXNG, Keenable. Keenable comes last, so a provider you already set up keeps answering; with two or more configured, the agent can still pick Keenable for a single call. To always search with Keenable, set Strategy to Pinned and Provider to Keenable in the same card and click Save, or in config.json:
What the tool returns
Each call returns up to 50 results (10 by default), each with atitle, url, snippet, and datePublished. Snippets run about 300 characters, or about 1,000 when the agent asks for summaries. The tool’s freshness filter (oneDay, oneWeek, oneMonth, oneYear, or a range such as 2025-01-01..2025-02-01) limits results by publish date.
Use your API key
Paste your key (keen_<your_key>, from the console) into API Key in the same dialog, or set tools.web_search.keenable_api_key in config.json. When that value is empty, CowAgent reads the KEENABLE_API_KEY environment variable instead. With a key, Keenable counts as configured without keenable_anonymous.
Without a key, searches run on the shared public tier at lower rate limits. A key moves them to the authenticated endpoint and your organization’s limits, and removes the hourly cap.