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

# Neo Chat

Point Neo Chat's web search at SpecStream with three lines in the server's `.env`. Neo Chat keeps its own Firecrawl search code, and every search from a chat runs on SpecStream's Search API at $1 per 1,000 searches.

[SpecStream for Neo ChatAI assistants](https://specstream.ai/integrations/neo-chat.md)

## What you need

-   A Neo Chat deployment whose server environment you can set. This guide follows the source of Neo Chat 2.7.0.
-   A SpecStream key. [Get your key](https://specstream.ai/workspace/search?route=firecrawl&utm_source=neo-chat&utm_medium=howto) on the Search API screen of your SpecStream workspace. New accounts start with $10 of credit, no card.

1.  1

    ## 1. Set the search defaults

    In the environment Neo Chat's server reads (`.env` next to `docker-compose.yml`, or `.env.local` when you run from source), set the provider to `firecrawl`, your SpecStream key, and SpecStream's address with no path, in place of `YOUR_SPECSTREAM_KEY`:

    .env

    ```bash
    DEFAULT_SEARCH_PROVIDER="firecrawl"
    DEFAULT_SEARCH_API_KEY="YOUR_SPECSTREAM_KEY"
    DEFAULT_SEARCH_BASE_URL="https://api.specstream.ai"
    ```

2.  2

    ## 2. Restart Neo Chat

    Neo Chat reads these variables when its server starts. With Docker Compose, run `docker compose up -d` again. From source, stop the server and start it again.

3.  3

    ## 3. Check the search service

    Open **Settings**, then **Search Service**. **Default Service** now appears, with the line "Ready: the server default search service is available." Browsers that were on Firecrawl with no key of their own switch to it on their own. Anyone who picked another provider selects **Default Service** once.

    **Deployment Health** in the same settings shows "Search is available through the server default."

4.  4

    ## 4. Ask with search on

    In a chat, turn search on with the search button in the message box, and ask about something recent:

    In a Neo Chat chat

    ```text
    What changed in the latest PostgreSQL release?
    ```

## Why the Firecrawl setting and not Tavily

Neo Chat also lists Tavily, Exa and SearXNG, and SpecStream answers all three APIs. In Neo Chat they do not reach it. Each one builds its address as `new URL("/search", baseUrl)`, and a path that starts with `/` replaces the path of the base URL: `https://api.specstream.ai/tavily` becomes `https://api.specstream.ai/search`, which is not a SpecStream route.

Neo Chat's Firecrawl search calls `/v2/search` at the root of the host. SpecStream answers Firecrawl's v2 search at that path, because Firecrawl's own SDKs call it there too. So the base URL is `https://api.specstream.ai`, with nothing after it.

## One key per browser instead

To leave the server unchanged, each person can set it in the app. In **Settings**, **Search Service**, open **Firecrawl** and select **Enable**. Put a SpecStream key in **API Key** and `https://api.specstream.ai` in **Base URL**. With a key set, Neo Chat sends the search through its own server route, so the browser never calls SpecStream directly.

## What comes back

-   Neo Chat posts a Firecrawl search with `limit` set to **Result Limit** (5 by default), `sources` set to web and images, and `scrapeOptions` that ask for markdown.
-   SpecStream answers in Firecrawl's shape: `data.web[]` with `url`, `title`, `description` and `markdown`, which holds a passage read from the page. Neo Chat cites each result by its URL.
-   **Time range** is sent as Firecrawl's `tbs`, and SpecStream applies it.
-   A call answers the first source it names, so `data.images` stays empty, and research reports get no images from search.

## What each search costs

Each search is one call on the Search API's fast tier: $1 per 1,000 searches of up to 10 results. It comes out of your balance, with no quote and no approval. A search that returns nothing costs nothing, and every call, charged or not, is in your account's request log. The Search API scores 97.9 F-score on all 1,000 SimpleQA Verified questions; scores and method are on the [benchmarks page](https://specstream.ai/benchmarks.md).

## Limits and errors

-   When the account has used its calls for the minute, SpecStream answers `429` with `Retry-After`, and Neo Chat passes the wait on with its error.
-   "Firecrawl search failed" with a `401` behind it means the key was refused. Check `DEFAULT_SEARCH_API_KEY`, or the **API Key** field, and restart after a change to `.env`.
-   No **Default Service** in **Search Service**: the server did not read the variables. Check the file name and that the server was restarted.

## Add SpecStream's MCP tools too

Neo Chat takes remote MCP servers as plugins. Open **Plugins**, then **Custom MCP**, and choose **Add Custom MCP Server**. Set **Server Name** to `SpecStream`, **MCP Server URL** to `https://api.specstream.ai/mcp`, and paste a SpecStream API key in **Bearer Token (optional)**. Create the key in [Agents & API](https://specstream.ai/workspace/agents?tab=keys&utm_source=neo-chat) with a spending limit.

The agent can then call `search_web` at $5 per 1,000 searches, `read_pages` at $0.80 per 1,000 pages, and the tools that build lists of records, which quote a price and run only after it is approved. See the [MCP server](https://specstream.ai/docs/mcp.md).

## Go back

Empty `DEFAULT_SEARCH_PROVIDER` and restart. Browsers on **Default Service** move back to Firecrawl's public search, called from each browser. Questions: [support@specstream.ai](mailto:support@specstream.ai).

## More

[SpecStream for Neo Chat](https://specstream.ai/integrations/neo-chat.md) covers what it does in Neo Chat 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).
