# Web Research Tools Stack

Configured Jul 7, 2026 for IT Pro Partner infrastructure.

## Active Tools

| Tool | Type | Cost | Credits | Used for |
|------|------|------|---------|----------|
| **Firecrawl** | Web search + content extraction | Free tier | 1,000/mo | Quick web lookups, web_search and web_extract tools |
| **ScrapingAnt** | JS rendering via headless Chrome | Free tier | 10,000 free (no card) | JS-heavy sites, government pages, Texas Legislature, LinkedIn public pages |
| **SearXNG** | Self-hosted meta search (Docker) | $0 (runs on Core) | Unlimited | Private search, fallback when other tools unavailable |

## Configuration

### Firecrawl
- API key saved in `.env`: `FIRECRAWL_API_KEY=fc-4f9...63c1`
- Hermes config: `web.backend: firecrawl`, `web.use_gateway: true`
- Activate on next session /reset after adding key
- Free tier: 1,000 credits/mo, upgrade to 5K credits planned when needed
- Usage tracking: cron job `firecrawl-usage-check` runs daily at 9 AM, no_agent

### ScrapingAnt
- API key saved in `.env`: `SCRAPINGANT_API_KEY=8ab7...af6`
- Used via direct API calls from terminal (`curl` to scrapingant.com/v2/general with browser=true)
- 10,000 free credits/mo, no credit card required
- $19/mo for 100K credits (recommended upgrade when free tier runs out)

### SearXNG
- Deployed as Docker container on Core at port 8888 (localhost only)
- Accessed via `curl "http://127.0.0.1:8888/search?q=...&format=json"`
- JSON API returns structured results with titles, URLs, snippets
- Self-hosted, unlimited, no API key needed
- Auto-starts with Docker (compose file at ~/docker/searxng/)

## Multi-Profile Setup

When a second Hermes profile (e.g. Anita's `anita` profile) needs web tools:
1. Copy API keys to the profile's `.env` file
2. Enable web backend in the profile's `config.yaml`
3. Restart the profile's gateway to pick up changes
4. The user needs to /reset their session to see the new tools

## Why Both Firecrawl and SearXNG?

SearXNG handles unlimited search (finding the right article/result at no cost). Firecrawl handles content extraction (converting specific page URLs to clean markdown). Without SearXNG, Firecrawl would handle both search + extraction but burn credits on searches that SearXNG can do for free.
