mcpField
E
exa-search

exa-search

github.com/tdiminoProductivity4149 installsUpdated 1w ago
Repository

About exa-search

A search skill for users of the Exa AI search API, with scripts for web search, content extraction, similar-page discovery, and research. Filtering and structured results support information retrieval and research workflows.

Key features

  1. 01Neural web search
  2. 02URL content extraction and summaries
  3. 03Similar-page discovery
  4. 04AI research with citations
  5. 05Async pro research and structured output

Use cases

  1. 01Filter web results by domain and date
  2. 02Extract selected pages with bounded content
  3. 03Find research papers and related pages
  4. 04Build cited research or RAG context

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/tdimino/claude-code-minoan --skill exa-search

After installing, type/exa-searchin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

codex-agent-guide.md
README.md
references/
exa-scripts-reference.md
scripts/
exa_contents.py
exa_research_async.py
exa_research.py
exa_search.py
exa_similar.py
test_exa.py

Details

From the project README

Exa Search Skill

5 specialized scripts for Exa AI search API—neural search, content extraction, similar pages, research with citations, and async pro research.

Prerequisite: EXA_API_KEY environment variable. Get key at https://dashboard.exa.ai

Token-Efficient Search

Inspired by Anthropic's dynamic filtering—always filter before reasoning. ~24% fewer tokens, ~11% better accuracy.

The Principle: Search Cheaply → Filter → Extract Selectively → Reason

DO:

# Step 1: Search with --no-text (titles/URLs only — cheapest)
python3 ~/.claude/skills/exa-search/scripts/exa_search.py "query" -n 20 --no-text

# Step 2: Evaluate titles, pick best 3-5 URLs

# Step 3: Extract only those URLs with bounded content
python3 ~/.claude/skills/exa-search/scripts/exa_contents.py URL1 URL2 --highlights --max-chars 3000

DON'T: Search with full text for 50 results, then reason over all of it.

Use API-Level Filters First (Free Filtering)

These reduce results at the API level before you ever see them:

  • --must-include "term" — results must contain this string
  • --must-exclude "term" — removes irrelevant results
  • --domains site1.com site2.com — restrict to authoritative sources
  • --category "research paper" — eliminate irrelevant content types
  • --after 2025-01-01 / --before — temporal filtering
Use Summaries Over Full Text

When you need the gist, not raw content:

# AI-distilled summaries — much smaller than full text
python3 ~/.claude/skills/exa-search/scripts/exa_search.py "query" --summary "Key findings" -n 5
Use Bounded Context for RAG
# Capped context string — prevents unbounded token usage
python3 ~/.claude/skills/exa-search/scripts/exa_search.py "query" --context --context-chars 5000
Post-Process with filter_web_results.py

Pipe Exa JSON output through the Firecrawl filter script for additional reduction:

python3 ~/.claude/skills/exa-search/scripts/exa_search.py "query" --json | \
  python3 ~/.claude/skills/firecrawl/scripts/filter_web_results.py \
  --fields "title,url,text" --max-chars 3000
Cost Tiers — Match to Task
TypeLatencyCost/1kWhen
--instant<150msCheapestReal-time lookups, autocomplete
--fast~500msLowQuick checks, confirmations
auto (default)--MediumGeneral search
--deep4-12s$12Comprehensive research
--deep-reasoning12-50s$15Maximum depth + synthesis
Structured Deep Search (Exa Deep)

Deep and deep-reasoning searches support structured JSON output via outputSchema. The API returns parsed content in output.content with per-field grounding citations and confidence scores.

Quick ExamplePurpose
... --deep --text-output "Short answer"Simple text answer
... --deep-reasoning --schema-preset companyStructured company research
... --deep --output-schema '{"type":"object","properties":{"answer":{"type":"string"}}}'Custom schema
... --deep --schema-file ~/schemas/analysis.jsonSchema from file

Presets: company, paper-survey, competitor-analysis, person, news-digest

Output includes field-level grounding: per-field citations with [H]igh/[M]edium/[L]ow confidence.


Available Scripts

1. exa_search.py — Neural Web Search
python3 ~/.claude/skills/exa-search/scripts/exa_search.py "query" [options]
Quick ExamplePurpose
... exa_search.py "AI frameworks"Basic search
... exa_search.py "transformers" --category "research paper" -n 20Academic papers
... exa_search.py "query" --deep --additional-queries "alt query"Deep search
... exa_search.py "query" --domains docs.python.orgDomain-filtered
... exa_search.py "query" --after 2025-01-01 --category newsRecent news
... exa_search.py "query" --context --context-chars 10000RAG context
... exa_search.py "query" --instant -n 5Sub-150ms lookup
... exa_search.py "Top AI startups" --deep-reasoning --schema-preset companyStructured company research
... exa_search.py "Who is CEO of Stripe?" --deep --text-output "Short answer"Quick factual answer

Categories: company, research paper, news, pdf, github, personal site, people, financial report

2. exa_contents.py — URL Content Extraction
python3 ~/.claude/skills/exa-search/scripts/exa_contents.py URL [URL2...] [options]
Quick ExamplePurpose
... exa_contents.py "https://arxiv.org/abs/2307.06435"Extract paper
... exa_contents.py URL --summary "Key methods" --highlightsSummarized extraction
... exa_contents.py URL --livecrawl alwaysFresh content
... exa_contents.py URL --max-chars 5000Bounded extraction
3. exa_similar.py — Find Similar Pages
python3 ~/.claude/skills/exa-search/scripts/exa_similar.py URL [options]
Quick ExamplePurpose
... exa_similar.py "https://stripe.com" --category company --exclude-sourceFind competitors
... exa_similar.py "https://arxiv.org/abs/..." -n 15Related papers
... exa_similar.py URL --summary "How different?"Comparison summaries
4. exa_research.py — AI-Powered Research
python3 ~/.claude/skills/exa-search/scripts/exa_research.py "question" [options]
Quick ExamplePurpose
... exa_research.py "React vs Vue differences?" --sourcesResearch with citations
... exa_research.py "query" --streamReal-time streaming
... exa_research.py "query" --domains docs.python.orgAuthoritative sources
... exa_research.py "query" --markdownMarkdown with citations
... exa_research.py "query" --answer-onlyPipe-friendly output
5. exa_research_async.py — Async Pro Research
python3 ~/.claude/skills/exa-search/scripts/exa_research_async.py "question" [options]
Quick ExamplePurpose
... exa_research_async.py "Compare AI frameworks" --pro --waitPro model
... exa_research_async.py "Quick overview" --fastFast model
... exa_research_async.py "query" --schema '{...}'Structured output
... exa_research_async.py status r_abc123Check job
... exa_research_async.py listList jobs

Script Selection Guide

TaskBest Script
Web search with filtersexa_search.py
Research papersexa_search.py --category "research paper"
Company/startup infoexa_search.py --category company
GitHub repos/codeexa_search.py --category github
Extract known URL contentexa_contents.py
Find competitorsexa_similar.py --exclude-source
Quick answers with citationsexa_research.py --sources
Complex structured researchexa_research_async.py --pro
Real-time searchexa_search.py --instant
RAG context buildingexa_search.py --context
Structured research with groundingexa_search.py --deep-reasoning --schema-preset company
Quick factual answerexa_search.py --deep --text-output "Short answer"

Exa vs Firecrawl vs Native Claude Tools

NeedBest ToolWhy
Semantic/neural searchExa exa_search.pyAI-powered relevance
Find research papersExa --category "research paper"Academic index
Quick research answerExa exa_research.pyCitations + synthesis
Find similar pagesExa exa_similar.pySemantic similarity
Single page → markdownFirecrawl scrape --only-main-contentCleanest output
Crawl entire siteFirecrawl crawl --wait --progressLink following
Autonomous data findingFirecrawl agentNo URLs needed
Search + scrape combinedFirecrawl search --scrapeOne operation
Claude API agent buildingNative web_search_20260209Built-in dynamic filtering
Twitter/X contentjina URLOnly tool that works

Common Workflows

Research a Topic
python3 ~/.claude/skills/exa-search/scripts/exa_research.py "How does RAG work?" --sources --markdown
Literature Review
# Find papers, then find similar to best hit
python3 ~/.claude/skills/exa-search/scripts/exa_search.py "transformer optimization" --category "research paper" -n 20 --summary "Key contributions"
python3 ~/.claude/skills/exa-search/scripts/exa_similar.py "https://arxiv.org/abs/1706.03762" --category "research paper" -n 15
Documentation Research
python3 ~/.claude/skills/exa-search/scripts/exa_search.py "React useEffect cleanup" --domains react.dev developer.mozilla.org --context
Build RAG Context
python3 ~/.claude/skills/exa-search/scripts/exa_search.py "Python async patterns" --context --context-chars 15000 --domains docs.python.org

Reference Documentation

FileContents
references/exa-scripts-reference.mdFull parameter reference for all 5 scripts, cost table, MCP comparison, test suite

Test Suite

python3 ~/.claude/skills/exa-search/scripts/test_exa.py --quick       # Quick validation
python3 ~/.claude/skills/exa-search/scripts/test_exa.py               # Full suite
python3 ~/.claude/skills/exa-search/scripts/test_exa.py --endpoint search  # Specific endpoint

Comments

Markdown supported