Serica is one ~16MB static binary. `cargo install serica-search`, run `serica`, and then you have two tools at your disposal, accessible either via REST or MCP.
`GET /api/v1/search?q=...` - duckduckgo results as clean JSON (pretty much the only engine i found that reliably worked with HTML scraping. This limitation is brought on because i opted not go utilize headless browsers, which could in theory work with JS and google by proxy, but that has overhead.
`GET /api/v1/extract?url=...` - extracts the main text from (mostly) any article URL into Markdown, ads and nav stripped (trafilatura-based). Known limitations here are SPA / JS heavy sites frequently break. Thats the tradeoff with not using headless browsers. Implementing a fallback would have inflated the projects scope, so i opted to avoid that.
No keys, no database, (mostly) no bloat. Redis caching exists but is compile-time. Off by default.
SSRF hardening (redirect re-validation on every hop) is also present.