Agent Skills for Exa web search — without an MCP server.
A collection of standalone Agent Skills that give any SKILL.md-compatible coding agent (Claude Code, Codex, Cursor, OpenCode, Gemini CLI, …) first-class access to Exa's semantic search, content fetch, and answer APIs. Each skill calls the Exa REST API through a small, zero-dependency Python script — the only thing you need is an EXA_API_KEY.
Why not just the MCP server? MCP is great, but it adds a process to run, a connection to manage, and a tool surface to wire up. These skills need nothing but Python 3.8+ and a key — they're portable, inspectable, and work the same whether your agent supports MCP or not.
| Skill | Use it for | Default category |
|---|---|---|
| exa-native-base | The foundation — query-writing, the shared client, subagent orchestration. Read first. | — |
| exa-web-search | General web search — the search_web analog. Start here for open-ended lookups. |
(any) |
| exa-company-research | Companies, competitors, funding, market maps | company |
| exa-people-research | People by role / company / location (LinkedIn-weighted) | linkedin profile |
| exa-lead-generation | Prospect lists: companies → decision-makers → enrichment | company |
| exa-research-paper-search | Academic papers, surveys, arXiv preprints | research paper |
| exa-code-context | Code examples, API usage, docs, GitHub repos, error fixes | (web) / github |
| exa-financial-report-search | SEC filings (10-K/10-Q/S-1), earnings, annual reports | financial report |
| exa-personal-site-search | Personal blogs, portfolios, homepages | personal site |
| exa-x-search | X / Twitter posts (limited coverage — see the skill's notes) | (x.com/twitter.com) |
# 1. Clone
git clone https://github.com/CodeAlive-AI/exa-skills.git
cd exa-skills
# 2. Set your key (get one at https://dashboard.exa.ai/api-keys)
export EXA_API_KEY=your-key
# …or: cp .env.example .env && edit .env
# 3. Run any skill's script directly
python exa-company-research/scripts/company_research.py "AI infrastructure startups" -n 10
python exa-research-paper-search/scripts/research_paper_search.py "retrieval augmented generation survey"
python exa-native-base/scripts/exa.py answer "Who founded Exa?"Every search prints a clean Markdown list ending with sources_reviewed: N. Add --json for raw output, --text to include page contents, -h to see all flags.
Each exa-* folder is a standard Agent Skill (SKILL.md + scripts/). Your agent reads the SKILL.md, then runs the script.
📦 Full per-agent install guide → INSTALL.md (Claude Code, Codex, Cursor, OpenCode, Gemini CLI — plus a note on closed builders like Orchids, which can't install skills).
Just want general web search? exa-web-search is self-contained — copy that one folder and you're done:
git clone --depth 1 https://github.com/CodeAlive-AI/exa-skills /tmp/exa-skills
cp -r /tmp/exa-skills/exa-web-search ~/.claude/skills/exa-web-search # Claude Code, user-level
export EXA_API_KEY=your-keyWant the whole collection (specialized skills + the exa-native-base foundation):
- Claude Code / Codex / OpenCode / Cursor / Gemini CLI: make this repo discoverable as skills (clone it into your agent's skills directory, or symlink the
exa-*folders). Keep the folder structure intact — the specialized skills' scripts locate the shared client (_shared/exa_client.py) by walking up to the repo root. - Set
EXA_API_KEYin your environment (recommended) so it's available wherever the agent runs scripts. - Start the agent on a research task ("research competitors to Acme", "find recent papers on X", "who leads engineering at Y") and it will pick the matching skill.
exa-skills/
├── _shared/exa_client.py # the engine: Exa REST client + CLI (stdlib only)
├── exa-native-base/ # foundation skill: philosophy, references, generic CLI
│ ├── SKILL.md
│ ├── scripts/exa.py # generic: search / contents / answer / similar
│ └── references/ # searching, filtering, extraction, synthesis, source-quality, full SDK spec
├── exa-company-research/
│ ├── SKILL.md # when-to-use + domain query patterns
│ └── scripts/company_research.py # ~20-line preset over the engine
├── … one folder per skill …
└── tests/smoke.py # offline checks + optional live smoke test
_shared/exa_client.pywraps Exa's/search,/contents,/answer, and/findSimilarendpoints. It auto-loads a.envfrom the repo root, gives friendly errors for missing/invalid keys and rate limits, and supports categories, domain/date/text filters, and client-side domain enforcement.- Each skill is a thin preset (default category + curated query patterns) plus a
SKILL.mdthat teaches the agent how to use it well — including token isolation (run bulk searches in subagents, not your main context).
- Valid
categoryvalues:company,research paper,news,pdf,github,personal site,linkedin profile,financial report. - The old
tweetcategory was retired —exa-x-searchfilters to x.com/twitter.com instead, and is honest that coverage is now limited. typevalues areauto(default),fast,deep,deep-reasoning,instant.
Python 3.8+ and an Exa API key. No third-party packages. (The Exa Python SDK, exa-py, is optional and not used.)
Query patterns and research-orchestration guidance are adapted from Exa Labs' open-source search skill (MIT). This project reimplements those ideas as standalone, script-based skills that need no MCP server. Not affiliated with or endorsed by Exa Labs.
MIT © CodeAlive
Maintained by CodeAlive — semantic code search and AI-powered answers across your codebase.