# exa-search

> A Claude Code skill from Affaan M's everything-claude-code repo that wraps the Exa MCP server for neural web search — web_search_exa for current info / news / company / people, get_code_context_exa for code examples and API docs from GitHub / Stack Overflow / docs sites. Drift-prone since Exa tool names and category labels change.

**Use case**: Use Exa's neural search for web / code / company / people research instead of generic web search

**Canonical URL**: https://agentcookbooks.com/skills/exa-search/

**Topics**: claude-code, skills, mcp

**Trigger phrases**: "search for current AI developments", "find Rust error handling code examples", "research a company via Exa"

**Source**: [Affaan M](https://github.com/affaan-m/everything-claude-code/tree/main/skills/exa-search)

**License**: MIT

---

## What it does

`exa-search` is the Exa-neural-search wrapper skill in [Affaan M's everything-claude-code](https://github.com/affaan-m/everything-claude-code) — see [skills/exa-search](https://github.com/affaan-m/everything-claude-code/tree/main/skills/exa-search). It surfaces two Exa MCP tools: `web_search_exa` for general web search with parameters for `numResults` (default 8), `type` (default `auto`), `livecrawl` (default `fallback`), and optional `category` (`company`, `research paper`, etc.); `get_code_context_exa` for code examples and API docs from GitHub, Stack Overflow, and documentation sites with a `tokensNum` parameter (1000–50000, default 5000) controlling depth.

The skill is explicit that it's drift-prone — Exa MCP tool names, parameters, and account limits change. The current setup documents the tools exposed in this version, but the operator should verify the current Exa server's tool surface before depending on specific names in production work. Usage patterns: quick lookups (`numResults: 3`), code research (`tokensNum: 3000` for focused snippets, 5000+ for comprehensive context), company / people research with `category: "company"` or `site:linkedin.com/in` operators, technical deep-dives that combine a general web search with a focused `get_code_context_exa` pass.

Related-skills pointers: `deep-research` is the full research workflow that combines Exa with firecrawl, `market-research` is the business-decision variant. `exa-search` is the thin wrapper — it's the right pick when the operator needs Exa specifically rather than a multi-source research synthesis.

## When to use it

- Operator needs current web information or news beyond the model's training cutoff
- Searching for code examples, API documentation, or technical references — `get_code_context_exa` is shaped specifically for this
- Researching companies, competitors, market players via `category: "company"`
- Finding professional profiles or people in a specific domain via `site:` operators
- Background research for any development task — the lighter pattern when full `deep-research` is overkill
- Operator says "search for", "look up", "find", "what's the latest on"

When *not* to reach for it:

- Multi-source research with synthesis and citations — that's `deep-research`
- Customer research for marketing — that's `customer-research`
- Internal company knowledge — Exa is web-shaped
- Pure factual lookup that doesn't need web access — answer directly

## Install

From [affaan-m/everything-claude-code](https://github.com/affaan-m/everything-claude-code) at `skills/exa-search/`. Drop the folder into `~/.claude/skills/exa-search/`. The runtime requires the Exa MCP server configured in `~/.claude.json` — the upstream shows the pattern:

```json
"exa-web-search": {
  "command": "npx",
  "args": ["-y", "exa-mcp-server"],
  "env": { "EXA_API_KEY": "YOUR_EXA_API_KEY_HERE" }
}
```

Get an API key at exa.ai. The skill is explicit that current Exa exposes `web_search_exa` and `get_code_context_exa` as the two tools — if the server exposes more, verify the names against the current docs before relying on them.

## What a session looks like

1. **Operator names the search intent.** "What are the current best practices for Rust async error handling?"
2. **Skill picks the tool.** "Best practices" + "Rust async error handling" = code research → `get_code_context_exa` with `tokensNum: 3000` for focused snippets.
3. **Result inspection.** Comes back with snippets from docs.rs, GitHub repos, Stack Overflow. Inline references with URLs.
4. **Follow-up search for context.** If the snippets reference a specific crate (e.g. `thiserror` or `anyhow`), a follow-up `web_search_exa(query: "thiserror vs anyhow current trade-offs", numResults: 5)` adds the discussion layer.
5. **Synthesize.** Skill assembles the answer from both passes, with inline source links so the operator can verify.
6. **For company / people research.** `web_search_exa(query: "<company> funding valuation 2026", numResults: 3, category: "company")` or `site:linkedin.com/in <role> <company>` for professional profiles.

The discipline that makes it work: tool-fit. `web_search_exa` for breadth and current info, `get_code_context_exa` for depth on code. Using `web_search_exa` for code questions or `get_code_context_exa` for general info wastes the neural search's strengths in both directions.

## Receipts

_TODO — to be filled in from a real session. Once the skill has been used against real Exa queries, this section will capture: how often the `auto` type setting picked the right search mode vs. needing explicit override, which `tokensNum` value (1000 / 3000 / 5000) actually surfaced the right depth for the operator's typical code-research questions, whether the `category: "company"` parameter still returned company-shaped results or had drifted, and which Exa tool name had changed since the skill was authored (the upstream flags this as drift-prone)._

## Source and attribution

From [Affaan M's everything-claude-code](https://github.com/affaan-m/everything-claude-code/tree/main/skills/exa-search) — an MIT-licensed skill collection covering harness construction, agent ops, video, payments, and platform-specific patterns.

License: MIT.

Quoting the drift warning verbatim: *"Exa MCP tool names, parameters, and account limits can change. Confirm the exposed tool surface and current Exa docs before relying on a specific search mode."* That's the operator's discipline — don't commit prompts that depend on specific Exa tool names without verifying them against the current server first.