> SpecStream is the live web data engine for teams and agents. This is the Markdown copy of https://specstream.ai/docs/integrations/zeroclaw. Every page, with what SpecStream does and costs: https://specstream.ai/llms.txt

# ZeroClaw

Set ZeroClaw's web search provider to SearXNG with SpecStream's address, and `web_search_tool` searches the live web through the SpecStream Search API. There is no SearXNG server to run and no code to change.

[SpecStream for ZeroClawAI assistants](https://specstream.ai/integrations/zeroclaw.md)

## What you need

-   ZeroClaw, with its config at `~/.zeroclaw/config.toml`.
-   A SpecStream API key. New accounts start with $10 of credit, no card. [Create an account](https://specstream.ai/signup?utm_source=zeroclaw).

1.  1

    ## 1. Get a SpecStream key

    [Get your key](https://specstream.ai/workspace/search?route=searxng&utm_source=zeroclaw&utm_medium=howto) on the Search API screen of your SpecStream workspace.

2.  2

    ## 2. Point the SearXNG provider at SpecStream

    ZeroClaw's SearXNG provider sends no key, so the key goes in the address. Under `[web_search]` in `config.toml`, set `search_provider` to `searxng` and `searxng_instance_url` to this address, with your key in place of `YOUR_SPECSTREAM_KEY`. Leave `/search` off the end, because ZeroClaw adds it to every request.

    `max_results` takes 1 to 10 and is 5 when you leave it out. A search costs the same up to 10 results, so 10 gives the agent more to read at no extra cost.

    ~/.zeroclaw/config.toml

    ```toml
    [web_search]
    enabled = true
    search_provider = "searxng"
    searxng_instance_url = "https://api.specstream.ai/searxng/YOUR_SPECSTREAM_KEY"
    max_results = 10
    ```

3.  3

    ## 3. Or keep the key out of the file

    `searxng_instance_url` is not stored as a secret, so in `config.toml` the key sits in plain text. ZeroClaw reads any setting from a `ZEROCLAW_` variable, with `__` between the parts of its path. Set the address in the environment ZeroClaw starts from, and keep only `search_provider = "searxng"` in the file:

    Environment

    ```bash
    export ZEROCLAW_web_search__searxng_instance_url="https://api.specstream.ai/searxng/YOUR_SPECSTREAM_KEY"
    ```

4.  4

    ## 4. Restart ZeroClaw and ask

    ZeroClaw picks the provider when it builds the tool, so restart the agent or the daemon after the change. Then ask a question that needs the web. `web_search_tool` returns each result's title, URL and snippet, read from SpecStream's reply.

## What ZeroClaw sends

Each search is `GET https://api.specstream.ai/searxng/<key>/search` with `q`, `format=json` and `pageno=1`. The Search API answers in SearXNG's JSON shape, and ZeroClaw reads `results[].title`, `url` and `content` and keeps the first `max_results`. `publishedDate` is null on most results.

If `searxng_instance_url` is empty, the tool answers `SearXNG instance URL not configured`. If `search_provider` holds a name ZeroClaw does not know, it logs a warning and searches DuckDuckGo instead. It accepts `searxng`, `searx`, `searx-ng` and `searx_ng`.

## Why not run SearXNG yourself

SearXNG is a server you install, keep running and set to answer in JSON. With the SpecStream address there is no server to host, and the results come from the most accurate web search API on SimpleQA Verified and WideSearch. The scores and the method are on [the benchmarks page](https://specstream.ai/benchmarks.md).

## Page reading and structured data over MCP

ZeroClaw is also an MCP client, and SpecStream's MCP server gives the agent more than search. Add it with the `http` transport and your key in `headers`, which ZeroClaw stores as secrets. An agent connects only to the servers its `mcp_bundles` grant, so add the bundle to your agent's alias, `assistant` in this example, next to the bundles it already has. Then restart the session.

-   `specstream__search_web` answers a question from the live web with up to 10 results, each with its URL.
-   `specstream__read_pages` returns the main text of up to 20 pages or documents (PDF, Word, Excel) a call, read live.
-   `specstream__compile` and `specstream__quote_capacity_work` read a request for many records and price it. Both cost nothing.
-   `specstream__authorize_capacity_work` starts a Deep Search run only with the maximum you approved, and `specstream__list_find_rows` reads the rows, each value with its source URL and read time.

## Approvals

MCP tool calls go through the agent's risk profile. To let searches and page reads run without a prompt, add `specstream__search_web` and `specstream__read_pages` to `auto_approve` in `risk_profiles.<alias>`, and leave `specstream__authorize_capacity_work` out so a paid run still asks first.

## Cost

Each search through the SearXNG address is one Search API call on the fast tier, which costs a fifth of the default search's $5 per 1,000 searches of up to 10 results. ZeroClaw names no result count, so every search is billed at the base price, and a search that returns no results costs nothing. Over MCP, each page `read_pages` reads is $0.80 per 1,000 pages, and a page with no text is not charged. All of it comes out of your balance with no quote and no approval. New accounts start with $10 of credit, no card.

## Turn it off

Set `search_provider` back to `duckduckgo`, ZeroClaw's default, and restart. Remove the `specstream` server from your bundles to end MCP access. To end the key's access everywhere, revoke it under **Agents & API** in your SpecStream workspace. Questions go to [support@specstream.ai](mailto:support@specstream.ai).

## More

[SpecStream for ZeroClaw](https://specstream.ai/integrations/zeroclaw.md) covers what it does in ZeroClaw on one page. Every other tool has its guide in [Connect your tools](https://specstream.ai/docs/integrations.md). You see the most a request can cost before it starts, and the matches are paid from your balance. [Billing](https://specstream.ai/docs/billing.md) has the details. For help, email [support@specstream.ai](mailto:support@specstream.ai).
