Websearch
Routes any web task to the best-fitting search provider (Exa, Tavily, Perplexity, Firecrawl, Valyu). Use when the user asks to "search the web", "look up online", "find information", "research", "deep research", "scrape a page", "extract content from a URL", "crawl a website", "find papers", "find companies", "find people", "fact-check", "get a cited answer", "monitor a page", or asks meta-questions like "which search tool should I use", "what web search do we have", "compare search providers", or when multiple web providers could serve the same request and one must be chosen.From its SKILL.md
npx -y skills add Elnora-AI/elnora-websearch-tools --skill websearchAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
5.6 KB, ~1.3k tokens by cl100k_base, as published. Nobody here has run it
Web Search Router
Five providers, one decision. This skill picks the provider; the provider's own skill or CLI does the work. Load the provider's skill after routing — it has the exact syntax.
Routing table
| Task intent | Provider | Use |
|---|---|---|
| Semantic/neural search — find by meaning, not keywords | Exa | exa-search skill |
| Find pages similar to a URL; entity discovery (companies, people, papers, code) | Exa | exa-search / build-with-exa skills |
| Get contents/text of result URLs from an Exa search | Exa | exa-contents skill |
| General web search, news, quick lookups | Tavily | tvly search (tavily-search skill) |
| Extract clean content from 1-20 known URLs | Tavily | tvly extract (tavily-extract skill) |
| Crawl or map a site's structure | Tavily | tvly crawl / tvly map skills |
| Synthesized, citation-grounded answer; comparative reasoning; "just answer the question" | Perplexity | bundled Perplexity skills (this plugin, Sonar API) |
| Deep-research report, multi-source synthesis | Perplexity (sonar-deep-research) or Tavily research; Valyu when a file deliverable is wanted | respective skill |
| Heavy scraping: JS rendering, anti-bot, screenshots, page interaction, change monitoring | Firecrawl | firecrawl CLI + skill family |
| Whole-site crawl into LLM-ready markdown | Firecrawl | firecrawl crawl |
| Academic literature (arXiv, PubMed, bioRxiv), clinical trials, patents | Valyu | valyu search (valyu-cli skill) |
| Financial/SEC filings, M&A due diligence, GTM/ICP account research | Valyu | valyu-cli skill |
| Research with deliverables (CSV/XLSX/PPTX/DOCX/PDF) | Valyu | valyu deepresearch create (valyu-cli skill) |
Availability check and fallbacks
Before routing, verify the chosen provider is usable (cheap checks, never print key values):
[ -n "$EXA_API_KEY" ] || grep -qs '^EXA_API_KEY=' ~/.config/elnora-websearch/.env # same pattern per provider
command -v tvly >/dev/null; command -v firecrawl >/dev/null; command -v valyu >/dev/null
Keys live in ~/.config/elnora-websearch/.env (%USERPROFILE%\.config\elnora-websearch\.env on Windows); process env wins over the file. If the first-choice provider isn't configured, fall back in this order:
- Semantic search (Exa missing) → Tavily search → Perplexity search-grounded answer
- General search / extract (Tavily missing) → Tavily works keyless at fair-use volume, so try it anyway → Firecrawl (also has a keyless mode) → Exa
- Cited answer (Perplexity missing) → Exa answer-style search + you synthesize → Tavily
- Scrape/crawl (Firecrawl missing) → Tavily extract/crawl → Firecrawl keyless for low volume
- Academic/financial (Valyu missing) → Exa (papers, filings via neural search) → Perplexity deep research
If nothing is configured at all: Tavily and Firecrawl still work keyless for basic search/extract; for anything more, point the user at /websearch-setup.
Choosing between providers
Exa finds things by meaning (best discovery); Tavily is the pragmatic all-rounder with the strongest recurring free tier and first-party extract/crawl/map; Perplexity doesn't return links, it returns an answer with citations (best when the user wants a conclusion, not a reading list); Firecrawl turns hostile or JS-heavy pages into clean markdown and handles crawling, interaction, and monitoring; Valyu covers corpora the open web doesn't (SEC filings, clinical trials, patents, licensed academic content) and produces file deliverables. Prefer the cheapest adequate tool: a keyless Tavily search beats spending Valyu credits on a general question; one Firecrawl scrape beats a full crawl.
| Provider | Free tier | Card? | Keyless mode |
|---|---|---|---|
| Exa | $10 credits on signup (~1,000 searches); +$7/month with payment method on file | No | No |
| Tavily | 1,000 credits/month, recurring | No | Yes (search + extract, fair-use) |
| Perplexity | None — prepaid credits; nothing charged until you buy | Yes | No |
| Firecrawl | 1,000 credits/month, recurring | No | Yes (search/scrape, low volume) |
| Valyu | $10 credits on signup ($20 with work email) | No | No |
Conflict arbitration
Firecrawl's umbrella skill claims all web tasks ("replaces WebFetch and WebSearch"). In this multi-provider bundle, this router is the arbiter: when several providers could serve a request, route by the table above, preferring the cheapest adequate tool — do not let Firecrawl's self-description win by default. Firecrawl gets the job when the task actually needs its strengths (JS rendering, anti-bot, site crawling, interaction, monitoring). Never suggest firecrawl setup defaults unless the user explicitly wants Firecrawl to own every web operation.
Not set up yet?
If no provider is configured, run /websearch-setup — it walks through key signup (four of five free tiers need no credit card), installs each vendor's official CLI and skills, and verifies with smoke tests. /websearch-status shows current health; /websearch-update keeps everything on the latest official releases.
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.
Gives 0 of the 12 instructions most web research skills give in ~1.3k tokens
Counted across 292 of the 300 authors here whose files we hold, read 2026-09-06
- Use web_search_exa for current information and broad discoveryin 22 of 292, across 8 files
- Cite every claim with a sourcein 21 of 292, across 18 files
- Configure the Exa MCP server with an API keyin 18 of 292, across 5 files
- Use get_code_context_exa for code examples and API docsin 16 of 292, across 6 files
- Verify exact tool names before depending on themin 13 of 292, across 4 files
- Narrow results with site:, quoted phrase, and intitle: operatorsin 13 of 292, across 4 files
- Adjust tokensNum lower for snippets, higher for full contextin 13 of 292, across 4 files
- Break the topic into 3-5 research sub-questionsin 13 of 292
- Confirm current Exa docs and exposed tool surface before usein 11 of 292, across 2 files
- Get user confirmation after Phase 1in 10 of 292, across 9 files
- Prefer primary sources when availablein 10 of 292
- Verify extracted metadata against original sourcesin 9 of 292, across 5 files
Said here and by no other author read
- Verify the chosen provider is available before routing
- Route by the task-intent routing table
- Load the chosen provider's skill after routing
- Fall back in the documented order when a provider is missing
- Prefer the cheapest adequate tool
- Treat this router as arbiter when providers overlap
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.