From exa
Conducts multi-step web research, list-building, enrichment, and structured output using Exa Agent. Useful for open-ended research tasks with defined objectives and output schemas.
How this skill is triggered — by the user, by Claude, or both
Slash command
/exa:agentThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
You are operating Exa Agent through MCP. Exa Agent is async and run-ID based: create a run, monitor status/events, retrieve output, and continue with follow-up runs when needed.
You are operating Exa Agent through MCP. Exa Agent is async and run-ID based: create a run, monitor status/events, retrieve output, and continue with follow-up runs when needed.
agent_create_runagent_wait_for_runagent_get_run_outputagent_cancel_runWhen a run needs premium partner data alongside Exa web search, pass dataSources to agent_create_run.
Use only the currently usable self-serve providers:
fiber_ai: B2B company, people, jobs, and contact enrichmentfinancial_datasets: ticker-based news for US public companiessimilar_web: website traffic estimates, rankings, and competitor discoverybaselayer: US business verification, officers, registrations, and KYBaffiliate: product catalog search, pricing, brands, and merchant linksparticle_news: podcast transcript search with speaker attribution and timestampsjinko: travel destination discovery ranked by fareDo not suggest request-only providers unless the user explicitly says their Exa account already has them enabled.
Choose the work surface before acting:
Known input rows plus repeated same-shape enrichment at scale
Open-ended universe definition, list-building, people/company discovery, multi-hop research, structured research, or follow-up over previous work
outputSchema before creating the run.Always write down:
If the user uses relative time like "recent", "last 6 months", or "post-IPO", calculate exact dates from today's date first.
Use outputSchema for list-building, enrichment, finance/company research, and repeatable workflows.
Rules:
maxItems to arrays when possible.format: "uri", format: "email", or format: "phone" when needed.Example company-list schema:
{
"type": "object",
"properties": {
"companies": {
"type": "array",
"maxItems": 50,
"items": {
"type": "object",
"properties": {
"company_name": { "type": "string" },
"website": { "type": "string", "format": "uri" },
"segment": { "type": "string" },
"why_it_qualifies": { "type": "string" },
"evidence_url": { "type": "string", "format": "uri" },
"confidence": { "type": "string", "enum": ["low", "medium", "high"] }
},
"required": ["company_name", "website", "why_it_qualifies", "evidence_url"]
}
},
"coverage_notes": { "type": "string" },
"known_gaps": {
"type": "array",
"items": { "type": "string" }
}
},
"required": ["companies", "coverage_notes"]
}
Example with Exa Connect:
{
"tool": "agent_create_run",
"arguments": {
"query": "Find 10 fast-growing B2B SaaS companies and return estimated monthly website visits from Similarweb.",
"dataSources": [
{ "provider": "similar_web" }
],
"outputSchema": {
"type": "object",
"properties": {
"companies": {
"type": "array",
"maxItems": 10,
"items": {
"type": "object",
"properties": {
"name": { "type": "string" },
"domain": { "type": "string" },
"monthlyVisits": {
"type": "number",
"description": "Estimated monthly visits from Similarweb"
}
},
"required": ["name", "domain", "monthlyVisits"]
}
}
},
"required": ["companies"]
}
}
}
Create the run
agent_create_run.effort: "auto" unless the user requests speed/depth.outputSchema for structured work.input.data for known rows.input.exclusion for entities already returned or disallowed.dataSources only when one of the self-serve Exa Connect providers is clearly useful.Save the run ID
agent_run_... ID in your working notes.Monitor
agent_wait_for_run with a bounded timeout.agent_wait_for_run as the default status surface.Retrieve output
completed, call agent_get_run_output.output.structured and output.grounding.Validate coverage
Continue if needed
agent_create_run with previousRunId for follow-up/refinement.input.exclusion to avoid resurfacing prior results.Final answer
Use previousRunId when:
Do not use previousRunId when:
For independent segments, create separate runs and aggregate results yourself.
Never claim exhaustive coverage unless all are true:
Preferred language when not fully validated:
Avoid:
unless validation supports it.
If the task requires many parallel Exa calls of the same shape, especially batch enrichment over known companies/people:
Use Exa Agent instead of Batch Script Mode when the hard part is discovery, reasoning, multi-hop research, or deciding what to search next.
If create fails:
If wait times out:
agent_wait_for_run again.If the run fails:
If the run objective/schema is wrong:
agent_cancel_run.If output is sparse:
previousRunId.npx claudepluginhub exa-labs/exa-mcp-server --plugin exa-mcp-serverOrchestrates deep research using Exa search API for lead generation, literature reviews, competitive analysis, and exhaustive searches.
Runs Extruct API tasks via CLI for company discovery, enrichment, and contact finding. Includes Deep Search, semantic search, lookalike search, and table operations.
Conducts AI-powered deep research via Parallel AI APIs: chat Q&A, reports, entity discovery (companies/people), data enrichment. For web research, competitive analysis, market research, finding companies, data tasks.