Exa
Web research via the free Exa MCP endpoint. All commands go through {baseDir}/scripts/exa.sh. No API key required.
Concurrency: Multiple parallel calls are safe — the script serializes them automatically via a file lock so only one request hits the API at a time. Others queue up and execute in order. Set timeout to 60 seconds on all exa bash calls since queued requests may wait for earlier ones to finish.
Commands
Search
General web search for any topic.
{baseDir}/scripts/exa.sh search "NixOS flake best practices 2025"
{baseDir}/scripts/exa.sh search "home-manager modules" 15
Advanced Search
Full filter control: categories, date ranges, domains, highlights, summaries.
{baseDir}/scripts/exa.sh search-advanced '{"query": "transformer attention efficiency", "category": "research paper", "startPublishedDate": "2024-01-01", "numResults": 15}'
Parameters:
query(required) — search querynumResults— 1-100 (default: 10)type—auto(default),fast,neuralcategory—company,research paper,news,pdf,github,personal site,people,financial reportincludeDomains/excludeDomains— domain filtersstartPublishedDate/endPublishedDate— ISO 8601 date filtersstartCrawlDate/endCrawlDate— crawl date filtersincludeText/excludeText— text filters (single-item arrays only)additionalQueries— query variations for broader coverageenableSummary/summaryQuery— generate summariesenableHighlights/highlightsQuery/highlightsNumSentences/highlightsPerUrlsubpages/subpageTarget— crawl subpages (1-10)textMaxCharacters/contextMaxCharacters
Category filter restrictions:
company: no domain or date filterspeople: no date/text/excludeDomains filters, only LinkedIn for includeDomains
More examples:
# News with domain filter
{baseDir}/scripts/exa.sh search-advanced '{"query": "NixOS release", "category": "news", "includeDomains": ["nixos.org"], "numResults": 10}'
# GitHub repos
{baseDir}/scripts/exa.sh search-advanced '{"query": "home-manager flake modules", "category": "github", "numResults": 10}'
# With summaries and highlights
{baseDir}/scripts/exa.sh search-advanced '{"query": "Rust async runtime", "category": "personal site", "enableSummary": true, "enableHighlights": true, "numResults": 10}'
Code Context
Find code examples, API docs, library usage from GitHub, Stack Overflow, and docs.
{baseDir}/scripts/exa.sh code-context "Nix builtins.readDir filter by file type"
{baseDir}/scripts/exa.sh code-context "React useState hook examples" 12
Query tips: include the programming language/framework and be specific.
Crawl
Extract full page content from known URLs. Supports batching.
{baseDir}/scripts/exa.sh crawl '["https://nixos.wiki/wiki/Flakes"]'
{baseDir}/scripts/exa.sh crawl '["https://example.com", "https://example.org"]' 5000
Research Workflow
- Start with
searchorsearch-advancedfor discovery - Use
code-contextfor programming-specific queries - Follow up with
crawlon promising URLs for full content - Use
additionalQueriesor multiple searches with varied phrasing for coverage
{baseDir} = this skill's directory. Always resolve to the absolute path before executing.