Add web_search() and scrape_url() tools backed by self-hosted SearXNG
and Crawl4AI services — no paid API key required.
Changes:
- src/config.py: add timmy_search_backend, search_url, crawl_url settings
- src/timmy/tools/search.py: new module with web_search() and scrape_url()
tools; both degrade gracefully when backend is unavailable or disabled
- src/timmy/tools/_registry.py: register search tools in full toolkit and
tool catalog (available in orchestrator + echo)
- src/timmy/tools/file_tools.py: add web_search + scrape_url to echo (research) toolkit
- src/timmy/tools/__init__.py: export web_search, scrape_url
- docker-compose.yml: add searxng and crawl4ai services (profile: search)
- docker/searxng/settings.yml: SearXNG base config
- tests/timmy/test_tools_search.py: 21 unit tests with mocked HTTP
- AGENTS.md: document Search Capability section
Fixes#1282
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>