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

# MiroThinker

Run MiroThinker's web search and page reading on SpecStream by changing two addresses and two keys in `apps/miroflow-agent/.env`. MiroThinker's Serper and Jina clients stay as they are. Each search costs $1 per 1,000, and each page $0.80 per 1,000.

[SpecStream for MiroThinkerAgent frameworks & builders](https://specstream.ai/integrations/mirothinker.md)

## What you need

-   MiroThinker cloned, with `uv sync` run in `apps/miroflow-agent`, and a model to drive it: your own MiroThinker server, or a Claude or GPT model as its README shows.
-   A SpecStream key. [Get your key](https://specstream.ai/workspace/search?route=serper&utm_source=mirothinker&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 lines in .env

    MiroThinker's `google_search` posts each query to `SERPER_BASE_URL` plus `/search`, with the key in the `X-API-KEY` header. SpecStream answers Serper's calls at its own address, reads the key from the same header and replies in Serper's shape: `organic[]` with `title`, `link`, `snippet` and `position`.

    In `apps/miroflow-agent/.env`, replace the two Serper lines. Give the address without `/search`: MiroThinker adds it.

    apps/miroflow-agent/.env

    ```bash
    SERPER_API_KEY=YOUR_SPECSTREAM_KEY
    SERPER_BASE_URL="https://api.specstream.ai/serper"
    ```

2.  2

    ## 2. Set the page reading lines

    `scrape_and_extract_info` reads a page by calling `JINA_BASE_URL`, a slash and the page's address, with `JINA_API_KEY` as a Bearer token. SpecStream answers that call in Jina Reader's text form, so the tool hands the page's text to your summary model as before.

    Replace the two Jina lines with the same key:

    apps/miroflow-agent/.env

    ```bash
    JINA_API_KEY=YOUR_SPECSTREAM_KEY
    JINA_BASE_URL="https://api.specstream.ai/jina"
    ```

3.  3

    ## 3. Run a task

    `src/config/settings.py` loads `.env` when the agent starts and passes both addresses to every tool server that uses them. Run the default task from `apps/miroflow-agent`, with the preset and model you use:

    Terminal

    ```bash
    cd apps/miroflow-agent
    uv run python main.py llm=qwen-3 agent=mirothinker_1.7_keep5_max200 llm.base_url=http://localhost:61002/v1
    ```

4.  4

    ## 4. Check the calls

    The default task asks for the title of today's arxiv paper in computer science, so the agent has to search and read live pages. Each search and each page read is in the request log of your SpecStream workspace, with the Serper or Jina route as its endpoint and the price it cost.

## Which tools move

Every preset that lists these servers uses the new addresses, from `mirothinker_1.7_keep5_max200` to `multi_agent`. Nothing in `conf/agent/` changes.

-   `search_and_scrape_webpage`: `google_search` runs on SpecStream's Search API.
-   `jina_scrape_llm_summary`: `scrape_and_extract_info` reads pages through SpecStream's Extract API.
-   `tool-google-search`: its `google_search` and `scrape_website` both move.
-   `tool-sogou-search`: `scrape_website` reads pages through SpecStream. Its search stays on Tencent Cloud.

## What stays as it was

Only the addresses and the keys change. MiroThinker's retries, its filter on Hugging Face dataset and space links, its second try of a quoted query without the quotes, and its summary model all work as before.

The arguments the agent sets reach the search: `num` and `page`, `hl` and `gl` as the language and country, and `tbs` values such as `qdr:w` as the time window. When a page read fails, `scrape_and_extract_info` fetches the page itself, as it does with Jina.

## Why SpecStream for a research agent

MiroThinker's answers on BrowseComp and GAIA depend on what each search returns. SpecStream's Search API reads each answer from the live web at the moment of the call. It scores 97.9 F-score on all 1,000 SimpleQA Verified questions and 64.0 item F1 on all 200 WideSearch tasks. Scores and method are on the [benchmarks page](https://specstream.ai/benchmarks.md).

One key pays for searches and pages, so a long run has one balance and one request log. Over [MCP](https://specstream.ai/docs/mcp.md), the same account also asks for structured records, with a source URL and read time on every value.

## What a run costs

Each `google_search` is one Search API call on the fast tier: $1 per 1,000 searches of up to 10 results, a fifth of the default search's $5. MiroThinker asks for 10 results unless the agent sets `num`. Each started block of 10 more results costs in the same proportion, so a call for 50 results is $0.0058. A search that returns no results costs nothing.

Each page read is one Extract API page at $0.80 per 1,000 pages, and a page with no text is not charged. Calls come out of your balance with no quote and no approval. Give the key a spending limit before a benchmark run: it is the most the run can spend. Rates are on [pricing](https://specstream.ai/pricing.md), and [billing](https://specstream.ai/docs/billing.md) covers the rest.

## Limits and errors

-   With `SERPER_API_KEY` empty, `google_search` answers `SERPER_API_KEY environment variable not set` and sends nothing.
-   With `JINA_API_KEY` empty, the Jina call is skipped and `scrape_and_extract_info` fetches the page itself.
-   A missing or wrong key is refused with `401`, and nothing is charged.
-   When the account has used its calls for the minute, SpecStream answers `429` with `Retry-After`, and nothing is charged. MiroThinker's Serper client tries a failed call three times, waiting 4 to 10 seconds between tries.

## Undo

Set `SERPER_BASE_URL` back to `https://google.serper.dev` with a Serper key, and `JINA_BASE_URL` back to `https://r.jina.ai` with a Jina key. Revoke the SpecStream key on the Search API screen of your workspace. The Serper and Jina moves for other tools are on [Serper](https://specstream.ai/migrate/serper.md) and [Jina](https://specstream.ai/migrate/jina.md). Questions go to [support@specstream.ai](mailto:support@specstream.ai).

## More

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