tools-update-cron: sync 2026-07-15 — 23 skill(s) updated
This commit is contained in:
@@ -1,8 +1,11 @@
|
||||
---
|
||||
name: searxng-smart-search
|
||||
description: "Smart SearXNG MCP search with auto-category routing, score filtering, and time-range defaults."
|
||||
version: 1.1.0
|
||||
version: 1.3.0
|
||||
author: Hermes Agent
|
||||
metadata:
|
||||
hermes:
|
||||
related_skills: [core-search, better-search, deep-research]
|
||||
---
|
||||
|
||||
# SearXNG Smart Search
|
||||
@@ -39,20 +42,40 @@ After search, use `mcp_searxng_web_url_read` on top 1-2 results for full content
|
||||
|
||||
Run `mcp_searxng_searxng_instance_info` once per session to confirm engines are healthy. Flag any `unresponsive_engines` in results. Full engine inventory and known-broken engines documented in `references/searxng-instance.md`.
|
||||
|
||||
**PITFALL — Default engines may all be broken:** SearXNG uses server-side defaults (google, duckduckgo, brave, startpage). If all are broken, every search returns zero results with no error. Diagnose by hitting the SearXNG API directly:
|
||||
**PITFALL — Default engines may all be broken:** SearXNG uses server-side defaults. If all are broken, every search returns zero results with no error. Diagnose by hitting the SearXNG API directly:
|
||||
|
||||
```bash
|
||||
# Check which engines actually work
|
||||
curl -s "http://10.0.0.8:8888/search?q=test&format=json&engines=bing,google,duckduckgo,brave,startpage" | python3 -c "import sys,json; d=json.load(sys.stdin); print(f'Results: {len(d.get(\"results\",[]))}'); print(f'Unresponsive: {d.get(\"unresponsive_engines\",[])}')"
|
||||
curl -s "http://localhost:8888/search?q=test&format=json&engines=bing,google,duckduckgo,brave,startpage" | python3 -c "import sys,json; d=json.load(sys.stdin); print(f'Results: {len(d.get(\"results\",[]))}'); print(f'Unresponsive: {d.get(\"unresponsive_engines\",[])}')"
|
||||
```
|
||||
|
||||
If only Bing works, pass `engines=bing` in every `mcp_searxng_searxng_web_search` call until the server-side defaults are fixed. The MCP tool does NOT specify engines by default — it relies entirely on SearXNG's server-side defaults.
|
||||
|
||||
### `engines=` Parameter — Engine Diversity
|
||||
|
||||
The `mcp_searxng_searxng_web_search` tool accepts an `engines` parameter (comma-separated engine names). This is the primary bias-reduction mechanism — different search engines have different indexes and ranking algorithms. Use it to get genuinely different results:
|
||||
|
||||
```bash
|
||||
# Mainstream Western indexes
|
||||
engines=bing,google
|
||||
|
||||
# Independent crawlers (different indexes, different ranking)
|
||||
engines=mojeek,wiby
|
||||
|
||||
# Privacy-focused
|
||||
engines=duckduckgo,startpage
|
||||
```
|
||||
|
||||
**Engine health varies.** On the local Docker instance (localhost:8888, 279 engines), commonly broken engines include: brave (rate-limited), qwant (access denied), yahoo (HTTP error), sogou (CAPTCHA), fastbot/fireball (suspended). These show as `unresponsive_engines` in results — SearXNG handles them gracefully. Check `searxng_instance_info` periodically for current health.
|
||||
|
||||
**Known working general-search engines (2026-07-15):** bing, google, duckduckgo, startpage, mojeek, wiby, yandex, mwmbl, yacy, yep, naver, baidu, seznam, gmx, crowdview, gabanza, searchmysite, tusksearch, vuhuv, searchch, reloado, resulthunter, boardreader, bpb, dogpile, quark, 360search, presearch.
|
||||
|
||||
## Reference files
|
||||
|
||||
- `references/instance-config.md` — full SearXNG instance snapshot (engines, categories, plugins, locales)
|
||||
- `references/mcp-server-config.md` — MCP server setup, tool list, verification commands
|
||||
- `references/searxng-instance.md` — engine inventory and known-broken engines
|
||||
- `references/searxng-docker-setup.md` — Docker infrastructure, engine health, MCP bridge config, management commands
|
||||
- `references/telegram-bot-api-2026.md` — Telegram Bot API features relevant to Hermes integration (overlaps with `telegram-integration/references/bot-api-2026.md` — curator will consolidate)
|
||||
|
||||
## Disabling the built-in `web` toolset (SearXNG-only mode)
|
||||
@@ -84,8 +107,8 @@ platform_toolsets:
|
||||
web:
|
||||
backend: searxng
|
||||
search_backend: searxng
|
||||
extract_backend: firecrawl # SearXNG is search-only; pair with an extract provider
|
||||
searxng_url: http://10.0.0.8:8888
|
||||
extract_backend: searxng # Use SearXNG for page extraction too (consistent with MCP tools)
|
||||
searxng_url: http://localhost:8888
|
||||
```
|
||||
|
||||
With both `disabled_toolsets` and `platform_toolsets` updated, the `web_search` and `web_extract` tools are completely unavailable. The agent must use `mcp_searxng_searxng_web_search` and `mcp_searxng_web_url_read` for all web access.
|
||||
@@ -100,19 +123,19 @@ The built-in `web_search` tool and the MCP SearXNG tools read `SEARXNG_URL` from
|
||||
|
||||
| Tool | Reads from | Config location |
|
||||
|------|-----------|----------------|
|
||||
| Built-in `web_search` | `os.environ` → `~/.hermes/.env` | `SEARXNG_URL=http://10.0.0.8:8888` in `.env` |
|
||||
| Built-in `web_search` | `os.environ` → `~/.hermes/.env` | `SEARXNG_URL=http://localhost:8888` in `.env` |
|
||||
| MCP `searxng__*` tools | MCP subprocess env | `mcp_servers.searxng.env.SEARXNG_URL` in `config.yaml` |
|
||||
|
||||
**Critical pitfall — `config.yaml` `web.searxng_url` does NOT feed the built-in tool:** The built-in `web_search` tool's availability check (`_has_env("SEARXNG_URL")` in `tools/web_tools.py`) calls `get_env_value()` which reads `os.environ` first, then `~/.hermes/.env`. It does NOT read `web.searxng_url` from `config.yaml`. If `SEARXNG_URL` is only in `config.yaml` and not in `.env`, the built-in `web_search` returns empty results with no error — the tool silently falls through to "no provider configured."
|
||||
|
||||
**Diagnostic:** `web_search` returning empty `{"data": {"web": []}}` with no error message = `SEARXNG_URL` missing from `.env`. The MCP tools working fine at the same time confirms the instance is healthy — the gap is only in the built-in tool's env source.
|
||||
|
||||
**Fix:** Add `SEARXNG_URL=http://10.0.0.8:8888` to `~/.hermes/.env` AND all profile `.env` files. The MCP server config in `config.yaml` already passes `SEARXNG_URL` via its `env` block:
|
||||
**Fix:** Add `SEARXNG_URL=http://localhost:8888` to `~/.hermes/.env` AND all profile `.env` files. The MCP server config in `config.yaml` already passes `SEARXNG_URL` via its `env` block:
|
||||
```yaml
|
||||
mcp_servers:
|
||||
searxng:
|
||||
env:
|
||||
SEARXNG_URL: http://10.0.0.8:8888
|
||||
SEARXNG_URL: http://localhost:8888
|
||||
```
|
||||
But this only covers the MCP subprocess — the main Hermes process still needs it in `.env` for the built-in tool.
|
||||
|
||||
@@ -120,7 +143,7 @@ But this only covers the MCP subprocess — the main Hermes process still needs
|
||||
|
||||
**Bulk `.env` update:** When adding `SEARXNG_URL` to `.env`, update ALL profile `.env` files (base + all 15 profiles). Use `hermes-config-bulk-update` skill pattern — same 16-location rule applies to `.env` as to `config.yaml`. Check with: `for p in ~/.hermes/profiles/*/; do grep -l SEARXNG_URL "$p/.env" 2>/dev/null || echo "MISSING: $(basename $p)"; done`
|
||||
|
||||
- DuckDuckGo and Startpage engines are broken (CAPTCHA/crash) — ignore their failures
|
||||
- DuckDuckGo and Startpage are working on the local Docker instance (localhost:8888). Brave and Qwant are rate-limited. Check `searxng_instance_info` for current health.
|
||||
- `time_range` only works with `news` and `general` categories
|
||||
- `min_score` above 0.5 often returns zero results
|
||||
- `categories` must be comma-separated, no spaces: `it,science` not `it, science`
|
||||
|
||||
Reference in New Issue
Block a user