Add web search to your AI agent

SCOUTS-AI gives AI agents a no-key, no-CAPTCHA web search tool. One MCP server, one HTTP endpoint and the same JSON shape everywhere. Pick your host, copy the config and start searching.

Shared contract

1. Claude Desktop (MCP)

Add the MCP server to claude_desktop_config.json:

{
  "mcpServers": {
    "scouts-ai": {
      "command": "scouts-ai-mcp"
    }
  }
}

Test prompt: “Search the web for the latest MCP server registry changes and cite sources.”

2. Cursor (MCP)

Open Cursor → Settings → MCP and add a new global MCP server. Command is the same as Claude Desktop.

{
  "mcpServers": {
    "scouts-ai": {
      "command": "scouts-ai-mcp"
    }
  }
}

Use it for code research, library lookups and changelog checks. Test prompt: “Look up the current TypeScript ESM package.json contract for MCP plugins.”

3. Cline (MCP)

Cline reads the same MCP config. Point its MCP server list to:

{
  "scouts-ai": {
    "command": "scouts-ai-mcp"
  }
}

Test prompt: “Search docs for InetAddress.ofLiteral in Java 25.”

4. Continue (MCP or HTTP)

If your Continue build supports MCP, register the same server. Otherwise point it at the HTTP endpoint:

GET https://scouts-ai.com/api/search?q={query}&lang=en&page=1

5. Open WebUI (MCP)

Open WebUI accepts MCP servers under Settings → Tools. Set command to scouts-ai-mcp and pick a stable name like scouts-ai.

{
  "scouts-ai": {
    "command": "scouts-ai-mcp"
  }
}

Pair it with a local model for private agent search. The tool shows up in chat as web_search.

6. OpenClaw (plugin)

Install the OpenClaw plugin:

openclaw plugins install clawhub:@scouts-ai/openclaw-search

Or from a local checkout:

git clone https://github.com/scouts-ai/scouts-ai-openclaw-plugin.git
cd scouts-ai-openclaw-plugin
pnpm install
pnpm build
openclaw plugins install --link .

Optional config in ~/.openclaw/openclaw.json:

{
  "plugins": {
    "entries": {
      "scouts-ai-search": {
        "enabled": true,
        "config": {
          "baseUrl": "https://scouts-ai.com",
          "defaultLang": "en",
          "timeoutMs": 5000,
          "maxQueryLength": 512,
          "maxPage": 10
        }
      }
    }
  }
}

Tool: scouts_ai_web_search. Enable in tools.allow if your host filters tools by name.

6b. OpenClaw (skill)

Prefer zero-runtime, zero-install setup? Use the SCOUTS-AI Search skill on ClawHub. The skill is a single SKILL.md that teaches any OpenClaw host to call GET /api/search with curl — no plugin, no API key, no MCP server. The host's exec tool runs the request, the skill enforces status checks, temp-dir cleanup (umask 077 + trap … rm -rf) and 429 / 5xx / 4xx handling.

openclaw skills install scouts-ai-skill

Or from a local checkout (no ClawHub account needed):

git clone https://github.com/scouts-ai/scouts-ai-openclaw-skill.git
cd scouts-ai-openclaw-skill
openclaw skills install . --as scouts-ai-search

Start a new session so the agent sees the refreshed skill list (/new). The skill exposes the same contract as the plugin: GET https://scouts-ai.com/api/search?q=…&lang=…&page=…, returns the same JSON shape, and respects Retry-After on 429.

7. Hermes (MCP or HTTP wrapper)

Hermes agents that support MCP can register the official server:

{
  "mcpServers": {
    "scouts-ai": {
      "command": "scouts-ai-mcp"
    }
  }
}

Hermes builds without MCP support can wrap the HTTP endpoint. Example wrapper exposing a web_search tool to a Hermes agent runtime:

import httpx

def web_search(query: str, lang: str = "en", page: int = 1) -> dict:
    """Search the public web via SCOUTS-AI and return compact JSON."""
    r = httpx.get(
        "https://scouts-ai.com/api/search",
        params={"q": query, "lang": lang, "page": page},
        timeout=10.0,
    )
    r.raise_for_status()
    return r.json()

Hook the wrapper into your Hermes tool registry under the name web_search. The exact registration call depends on your Hermes build — check your host’s tool/plugin docs.

8. LangChain (Python tool)

import requests
from langchain_core.tools import tool

@tool
def scouts_ai_web_search(query: str, lang: str = "en", page: int = 1) -> dict:
    """Search the public web via SCOUTS-AI and return compact JSON."""
    r = requests.get(
        "https://scouts-ai.com/api/search",
        params={"q": query, "lang": lang, "page": page},
        timeout=10,
    )
    r.raise_for_status()
    return r.json()

9. LlamaIndex (tool)

import requests
from llama_index.core.tools import FunctionTool

def scouts_ai_web_search(query: str, lang: str = "en", page: int = 1) -> dict:
    r = requests.get(
        "https://scouts-ai.com/api/search",
        params={"q": query, "lang": lang, "page": page},
        timeout=10,
    )
    r.raise_for_status()
    return r.json()

tool = FunctionTool.from_defaults(
    fn=scouts_ai_web_search,
    name="scouts_ai_web_search",
    description="Search the public web via SCOUTS-AI.",
)

10. Dify (HTTP tool)

In Dify, create a new custom tool and add an HTTP request step with this configuration:

Method:  GET
URL:     https://scouts-ai.com/api/search
Headers: (none required)
Query:
  q:    {{ input.query }}
  lang: {{ input.lang | default("en") }}
  page: {{ input.page | default(1) }}

Output variable: json. Map {{ json.results }} to your workflow as a list of {title, url, content}.

11. Flowise (Custom tool node)

In a Flowise agent flow, drop a Custom Tool node and paste:

import requests

def scouts_ai_web_search(query: str, lang: str = "en", page: int = 1) -> dict:
    r = requests.get(
        "https://scouts-ai.com/api/search",
        params={"q": query, "lang": lang, "page": page},
        timeout=10,
    )
    r.raise_for_status()
    return r.json()

Name the tool scouts_ai_web_search and describe it as “Search the public web via SCOUTS-AI.”

12. n8n (HTTP Request node)

Add an HTTP Request node to your n8n workflow:

Method:        GET
URL:           https://scouts-ai.com/api/search
Authentication: None
Query Parameters:
  Name: q     Value: {{ $json.query }}
  Name: lang  Value: {{ $json.lang ?? "en" }}
  Name: page  Value: {{ $json.page ?? 1 }}
Response:      JSON
Options → Timeout: 10000

Use the returned results array in the next n8n node (Agent, Set, Email, Slack, etc.).

Troubleshooting

FAQ

Do I need an API key or a CAPTCHA?

No. SCOUTS-AI is no-key. Clients always receive JSON, never a challenge page. Respect the per-IP rate limit and Retry-After.

What tool name should I expect from MCP?

The official scouts-ai-mcp package exposes one tool named web_search.

What tool name does the OpenClaw plugin expose?

The plugin registers the web search provider id scouts-ai-search and an agent tool named scouts_ai_web_search.

What's the difference between the OpenClaw plugin and the skill?

The skill (openclaw skills install scouts-ai-skill) is a SKILL.md the agent reads — no plugin runtime, no install beyond the skill itself; the host's exec tool calls curl. The plugin (openclaw plugins install clawhub:@scouts-ai/openclaw-search) is a TypeScript package that registers a native web-search provider with id scouts-ai-search and the tool scouts_ai_web_search. Use the skill when you want zero install footprint or you don't control the host; use the plugin when you want native provider discovery and configurable defaults (defaultLang, timeoutMs, maxPage).

Can agents crawl the API?

No. Use the API only for user-requested searches. Do not crawl /api/search to build a derivative index.

Is there a paid tier?

No. SCOUTS-AI is best-effort with no SLA. See the terms.