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

# agentUniverse

agentUniverse's BingSearchTool calls Bing Web Search v7 at `https://api.bing.microsoft.com/v7.0/search`, which Microsoft retired on August 11, 2025. Set `bing_search_url` to SpecStream's Bing address and the same tool searches the live web again, with no change to your agents or your code.

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

## What you need

-   An agentUniverse app. This guide was tested with agentUniverse 0.0.19.1 on Python 3.12.
-   A SpecStream account. New accounts get $10 of credit, no card. [Create one](https://specstream.ai/signup?utm_source=agentuniverse).

1.  1

    ## 1. Create an API key

    In your SpecStream workspace, open [Agents & API](https://specstream.ai/workspace/agents?tab=keys&utm_source=agentuniverse), choose **API keys**, then **Create API key**, and set a total spending limit. Copy the key from the next screen. SpecStream shows it once.

2.  2

    ## 2. Set it as BING\_SUBSCRIPTION\_KEY

    BingSearchTool reads its key from `BING_SUBSCRIPTION_KEY` and sends it in the `Ocp-Apim-Subscription-Key` header, where SpecStream's Bing address takes it. Set it in the environment your app runs in, or in your app's `config/custom_key.toml` under `[KEY_LIST]`:

    config/custom\_key.toml

    ```toml
    [KEY_LIST]
    BING_SUBSCRIPTION_KEY='YOUR_SPECSTREAM_API_KEY'
    ```

3.  3

    ## 3. Point the tool at SpecStream

    agentUniverse sets every key of a tool's YAML on the tool, so `bing_search_url` in the YAML replaces Microsoft's address. Save this file in the tool folder your `config.toml` lists under `[CORE_PACKAGE]`, such as `intelligence/agentic/tool/`:

    intelligence/agentic/tool/bing\_search\_tool.yaml

    ```yaml
    name: 'bing_search_tool'
    description: |
      Search the live web. The input is the question to search for.
    tool_type: 'api'
    input_keys: ['input']
    bing_search_url: 'https://api.specstream.ai/v7.0/search'
    metadata:
      type: 'TOOL'
      module: 'agentuniverse.agent.action.tool.common_tool.bing_search_tool'
      class: 'BingSearchTool'
    ```

4.  4

    ## 4. Give the tool to an agent

    In the agent's YAML, list the tool by its name under `action`, in place of `mock_search_tool` or the search tool it used before:

    intelligence/agentic/agent/agent\_instance/demo\_agent.yaml

    ```yaml
    action:
      tool: ['bing_search_tool']
    ```

5.  5

    ## 5. Run one search

    Start the app and call the tool by name, to check the key and the address before an agent uses it. It prints the snippets of the top five results, joined in one string. On November 12, 2026, with agentUniverse 0.0.19.1, this call read `bing_search_url` from the YAML and answered in 1.08 seconds:

    check\_search.py

    ```python
    from agentuniverse.base.agentuniverse import AgentUniverse
    from agentuniverse.agent.action.tool.tool_manager import ToolManager
    
    AgentUniverse().start(config_path='config/config.toml')
    tool = ToolManager().get_instance_obj('bing_search_tool')
    print(tool.run(input='latest stable release of Python'))
    ```

## Or set the address in code

BingSearchTool is a Pydantic model, so a tool you build in code takes the address as an argument, with no YAML and no app start. On November 12, 2026, this call answered in 2.05 seconds with the snippets of five results:

## Two ways it fails

-   With no `BING_SUBSCRIPTION_KEY`, BingSearchTool does not raise an error. It returns MockSearchTool's fixed sample text, a Chinese news piece about Berkshire Hathaway and BYD, and the agent answers from that. If every search answers with the same text, the key is not set.
-   With the key set and the address left at `https://api.bing.microsoft.com/v7.0/search`, the call goes to Microsoft's retired API and returns no results. Set `bing_search_url` as above.

## What the tool sends and gets back

BingSearchTool runs LangChain's `BingSearchAPIWrapper` with `k=5`. Each call is one `GET /v7.0/search`, and SpecStream answers in Bing's shape:

| BingSearchTool | SpecStream |
| --- | --- |
| `bing_subscription_key` | Your SpecStream API key, in `Ocp-Apim-Subscription-Key` |
| `bing_search_url` | `https://api.specstream.ai/v7.0/search` |
| The query | `q`, in everyday words, any language |
| `count`, 5 from `k=5` | Five results |
| Each result's `snippet` | `webPages.value[].snippet`, with `name` and `url` |

## Cost

Searches through the Bing address run on the fast tier: $1 per 1,000 searches of up to 10 results, from your balance, with no quote and no approval. BingSearchTool asks for five results, so each call is one search at that price. A search that returns nothing costs nothing.

New accounts start with $10 of credit, no card. Each call is listed on the Search API screen of your workspace with its query and price. [Balance and billing](https://specstream.ai/docs/billing.md) has the details.

## Search quality

SpecStream's Search API 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).

## Other Bing clients

The same address answers any client written for Bing Web Search v7, and Microsoft's SDKs work with only their endpoint set to `https://api.specstream.ai`. [Moving off Bing Web Search v7](https://specstream.ai/migrate/bing-web-search-v7.md) has the other settings, and the [Search API page](https://specstream.ai/search-api.md) has the native API.

## Remove

Delete the `bing_search_url` line or the tool file, and unset `BING_SUBSCRIPTION_KEY`. To stop the key working everywhere, revoke it in **Agents & API**. Other ways to build with SpecStream are in [agent frameworks](https://specstream.ai/docs/frameworks.md). Questions go to [support@specstream.ai](mailto:support@specstream.ai).

## More

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