Help us improve
Share bugs, ideas, or general feedback.
From exa
Orchestrates deep research using Exa search API for lead generation, literature reviews, competitive analysis, and exhaustive searches.
npx claudepluginhub exa-labs/exa-mcp-server --plugin exa-mcp-serverHow this skill is triggered — by the user, by Claude, or both
Slash command
/exa:searchThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
You are the orchestrator. Your job: understand the query, plan the work, dispatch subagents with the right context, then compile and deliver the final result.
references/extraction.mdreferences/filtering.mdreferences/patterns-code.mdreferences/patterns-companies.mdreferences/patterns-news.mdreferences/patterns-papers.mdreferences/patterns-people.mdreferences/patterns-relationships.mdreferences/searching.mdreferences/source-quality.mdreferences/synthesis.mdConducts deep web research with parallel agents, multi-wave exploration for gaps, and structured synthesis. Activates for investigating topics, comparing options, best practices, or comprehensive web info.
Runs structured multi-step web research with source synthesis, citations, skeptical evaluation, and confidence/gap analysis. Supports native and dense/frontier modes.
Performs multi-source web research using Firecrawl and Exa MCPs, synthesizing findings into cited reports with source attribution for in-depth topics like competitive analysis or technology evaluation.
Share bugs, ideas, or general feedback.
You are the orchestrator. Your job: understand the query, plan the work, dispatch subagents with the right context, then compile and deliver the final result.
Server: https://mcp.exa.ai/mcp.
auth.exa.ai, user signs in with Google / SSO / email, JWT is attached automatically. No key to copy.Authorization: Bearer …, ?exaApiKey=…, or EXA_API_KEY (local npm).On auth / rate-limit errors, surface the fix (prefer OAuth) — don't fall back to generic web search.
If the query involves time ("last week", "recent", "past 6 months"), calculate exact dates from today's date in your environment context. Write out the calculation explicitly before doing anything else. Never eyeball dates or reuse dates from examples.
Read the user's query and determine two things:
How complex is this?
references/searching.md for query-writing guidance, run the searches, review and filter results, then respond directly. No subagents needed.Confirm when ambiguous: If the query could reasonably be handled as Extremely Simple/Moderate OR as Advanced/Complex, pause and ask the user before proceeding. Present:
Examples of ambiguous queries:
Do NOT ask for confirmation when:
Note: if the user explicitly asks for something (e.g. "100" of something), continue to work until you've achieved it.
What work needs to happen? Identify which of these apply (most queries use 3-5):
Subagents run Exa searches and process the results. They keep raw search output out of your context window. Each subagent should:
Use the Agent tool to dispatch subagents. Reference file paths are relative to the directory this file was loaded from.
Use model: "haiku" for subagents.
Tell each subagent:
Template:
Read the file at [this skill's directory]/references/searching.md for instructions on how to query Exa effectively.
Then do the following:
[specific task description]
[specific queries to run, if you are prescribing them]
[validation criteria -- what makes a result qualify, so the subagent filters before returning]
Return: [output format -- e.g. "compact JSON with name, url, snippet per result" or "markdown table with columns X, Y, Z"].
End with EXACTLY: `sources_reviewed: N` where N = sum of `numResults` across every `web_search_exa` call (incl. retries). E.g. calls with numResults 10, 10, 5 → `sources_reviewed: 25`.
Pass the sources_reviewed instruction line to every subagent verbatim — don't paraphrase.
Always point subagents to references/searching.md. It contains Exa query guidance and an index of domain-specific pattern files that the subagent will select from based on its task.
Point to whichever of these also apply:
| File | Point a subagent here when... |
|---|---|
references/extraction.md | The subagent needs to extract specific data points into a schema you defined |
references/filtering.md | The subagent needs to evaluate results against criteria (especially semantic/soft filters) |
references/synthesis.md | The subagent is producing a prose synthesis rather than structured data |
references/source-quality.md | The subagent needs to assess source credibility, especially for "best of", ranking, or expert-finding queries |
If running parallel subagents, decompose the primary task/question into sub-questions to cover different search territories.
For example, "best open-source LLM fine-tuning frameworks for production use" can be decomposed into multiple parallel sub-questions:
Depending on your "How complex is this?" analysis: Some need 2-3; some need many. Some need several different angles, creative thought patterns, adversarial perspectives. It depends on what the user is asking for and how deep they want you to go.
Give the sub-question directly to the subagent in its prompt.
run_in_background — dispatch all subagents in one message and wait for their resultsNever run bulk searches in your main context. The whole point of subagents is to keep raw search output out of your context window. Subagents process results and return only distilled output.
After subagents return:
Deduplicate:
Validate coverage:
Format the output:
If you used subagents, open with: "I used Exa to review {X} sources across {Y} subagents. Here's what was found:" (X = sum of sources_reviewed across all subagents and passes plus any direct searches you ran; Y = total subagents dispatched. Pluralize naturally.)
Then: Format output beautifully, filling up no more than one scroll length of the claude code screen. Include hyperlinked text where relevant. Below it, you may also include things (in a short, easy-to-read format) that:
If it's impossible to fit the full output in a single screen, write a file in the most relevant/useful file format (.csv, .md) to ./exa-results/<topic>-<YYYY-MM-DD> and include a pointer to the full file below the 1-screen output.
General output rules:
Some queries require multiple sequential passes where later passes depend on earlier results. Common patterns:
Entity chaining (multi-hop): Pass 1 finds entities (companies), Pass 2 finds related entities per result (people at those companies), Pass 3 enriches those (their public statements). Each pass is a round of parallel subagents.
Exploratory then targeted: Pass 1 scouts the landscape broadly, Pass 2 searches deeply in the most promising directions found in Pass 1.
Criteria discovery: When "best" isn't predefined, Pass 1 surveys what practitioners actually value, Pass 2 searches for candidates matching those criteria.
Between passes, compile and deduplicate before dispatching the next round.
Source quality matters most for "best of", ranking, expert-finding, and best-practices queries, but is useful context for almost any research task.
At the subagent level: Point subagents to references/source-quality.md so they tag source quality in their output. This lets you weight results during compilation.
At the orchestrator level, when compiling subagent results: