
exa-agent
Use Exa Agent for multi-step web research, list-building, enrichment, structured output, run continuation, and coverage validation. Exa Agent can access additional data providers: fiber, financialdatasets, similarweb, baselayer, affiliate, particle, and jinko.
- Installs
- 173
- Last 24h
- —
- Trending rank
- —
- Security
- Not audited
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/exa-labs/exa-mcp-server --skill exa-agent- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads exa-agent automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
SKILL.md
The instructions your agent reads when the skill is triggered.
Exa Agent Research
You are operating Exa Agent through MCP. Exa Agent is a tool that allows you to run multi-step web research, list-building, enrichment, structured output, run continuation, and coverage validation.
Required tools
agent_run
Exa Connect providers
When a run needs premium partner data alongside Exa web search, pass dataSources to agent_run.
Use only the currently usable self-serve providers:
fiber: B2B company, people, jobs, and contact enrichmentfinancial_datasets: ticker-based news for US public companiessimilarweb: website traffic estimates, rankings, and competitor discoverybaselayer: US business verification, officers, registrations, and KYBaffiliate: product catalog search, pricing, brands, and merchant linksparticle: podcast transcript search with speaker attribution and timestampsjinko: travel destination discovery ranked by fare
Do not suggest request-only providers unless the user explicitly says their Exa account already has them enabled.
Decision tree
Choose the work surface before acting:
-
Known input rows plus repeated same-shape enrichment at scale
- Write a deterministic script using Exa APIs directly.
- Use bounded concurrency, exponential backoff, checkpoints, and a stable output file.
- Read the output file and synthesize from it.
- Do not burn context manually looping over hundreds of identical tool calls.
-
Open-ended universe definition, list-building, people/company discovery, multi-hop research, structured research, or follow-up over previous work
- Use Exa Agent.
- Define the objective and
outputSchemabefore creating the run.
Before creating a run
Always write down:
- Objective: what the run is meant to answer.
- Universe: what entities qualify.
- Segments: geographies, industries, personas, dates, asset classes, or other partitions.
- Coverage target: desired count, maximum count, and what "good enough" means.
- Output fields: columns needed in the final answer.
- Evidence requirements: URLs, source titles, dates, and confidence.
- Exclusions: prior results or disallowed entities.
If the user uses relative time like "recent", "last 6 months", or "post-IPO", calculate exact dates from today's date first.
Schema rules
Use outputSchema for list-building, enrichment, finance/company research, and repeatable workflows.
Rules:
- Use a top-level object.
- Put list rows in a named array field.
- Add
maxItemsto arrays when possible. - Include source/evidence fields, not just conclusions.
- Include stable identifiers: company name, website/domain, person LinkedIn URL, ticker, CIK, etc.
- Include confidence or rationale fields for fuzzy judgments.
- Keep required fields limited to what must exist.
- Use
format: "uri",format: "email", orformat: "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_run",
"arguments": {
"query": "Find 10 fast-growing B2B SaaS companies and return estimated monthly website visits from Similarweb.",
"dataSources": [
{ "provider": "similarweb" }
],
"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"]
}
}
}
Exa Agent workflow
-
Run the agent
- Call
agent_run. - Omit
effortto use the tool'slowdefault. Chooseautoor a higher effort only when the user asks for more depth or the task clearly requires it. - Include
outputSchemafor structured work. - Use
input.datafor known rows. - Use
input.exclusionfor entities already returned or disallowed. - Add
dataSourcesonly when one of the self-serve Exa Connect providers is clearly useful. - Name the provider-specific data you want in both the query and the schema so Agent uses the provider instead of falling back to web search.
- Save the returned
idwhen a later continuation may usepreviousRunId. - If the response has
status: "running", callagent_runagain with thatrunIduntiloutputReadyis true. This continuation is available for retained runs that outlive one MCP call. - Zero Data Retention (ZDR) teams: new runs always stream, and output is only available on that live stream (not via
runIdresumption). The MCP call window is ~750 seconds; if a ZDR run cannot finish in one call, retry with lower effort or split the task.previousRunIdis not available on ZDR.
- Call
-
Read the result
- Wait until
outputReadyis true (or status is failed/cancelled). - Read both
output.structuredandoutput.grounding. - Do not assume results are exhaustive just because the run completed.
- Wait until
-
Validate coverage
- Check row count against target.
- Check segment coverage.
- Deduplicate entities.
- Inspect evidence quality.
- Identify gaps.
-
Continue if needed
- Use
agent_runwithpreviousRunIdfor follow-up/refinement. - Use
input.exclusionto avoid resurfacing prior results. - Segment large universes into multiple runs if one run is too broad.
- Use
-
Final answer
- State what was done.
- Present structured results.
- State coverage and limitations.
- Say "best-effort discovery" unless exhaustiveness was explicitly scoped and validated.
Continuation patterns
Use previousRunId when:
- narrowing a list
- filling missing fields
- asking for another segment
- validating a prior set
- requesting "more like these"
Do not use previousRunId when:
- the prior run failed or is still running
- the new task is unrelated
- you need clean independent coverage for another segment
For independent segments, create separate runs and aggregate results yourself.
Exhaustiveness and coverage language
Never claim exhaustive coverage unless all are true:
- The universe is bounded and well-defined.
- Search/discovery strategy covers the main segments.
- The output count and gaps were checked.
- Duplicates were resolved.
- Evidence was inspected.
- Any remaining unknowns are disclosed.
Preferred language when not fully validated:
- "best-effort discovery"
- "high-confidence initial universe"
- "not exhaustive"
- "coverage appears strongest in X and weaker in Y"
Avoid:
- "all companies"
- "complete list"
- "exhaustive"
- "definitive"
unless validation supports it.
Batch Script Mode
If the task requires many parallel Exa calls of the same shape, especially batch enrichment over known companies/people:
- Write a script instead of issuing many MCP calls manually.
- The script must:
- read deterministic inputs from a file
- use bounded concurrency
- use exponential backoff for 429/5xx
- checkpoint partial progress
- write deterministic JSON/CSV/TSV output
- preserve raw API errors per row
- Run the script.
- Read the output file.
- Synthesize from the output.
Use Exa Agent instead of Batch Script Mode when the hard part is discovery, reasoning, multi-hop research, or deciding what to search next.
Failure handling
If a run fails to start:
- Surface the HTTP error and fix schema/auth/input.
- Do not silently fall back to generic web search for Exa Agent-shaped work.
If the run fails:
- Explain the failure from the returned terminal status.
- Create a corrected follow-up/new run only if the correction is clear.
If the run objective/schema is wrong, abort the streaming call. The server will attempt to cancel the upstream run; you will then need to create a new run with the corrected objective/schema.
If output is sparse:
- Continue with
previousRunId. - Add exclusions for prior results.
- Segment the universe.
- Tighten or clarify schema fields.
FAQ
What does the exa-agent skill do?
Use Exa Agent for multi-step web research, list-building, enrichment, structured output, run continuation, and coverage validation. Exa Agent can access additional data providers: fiber, financialdatasets, similarweb, baselayer, affiliate, particle, and jinko.
How do I install exa-agent?
Run npx skills add https://github.com/exa-labs/exa-mcp-server --skill exa-agent in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/exa-agent/ (personal) or .claude/skills/exa-agent/ (project).
Which AI agents can use exa-agent?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is exa-agent safe to install?
No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.
Who maintains exa-agent?
It is published by exa-labs in exa-labs/exa-mcp-server. It has 173 recorded installs.
More from exa-labs/exa-mcp-server
search
exa-labs/exa-mcp-server
Deep research powered by Exa. Use for lead generation, literature reviews, deep dives, competitive analysis, or any query where one search falls short, including phrases like 'research this', 'find everything about', 'find me all', or 'deep dive on'.
company-research
exa-labs/exa-mcp-server
Company research using Exa search. Finds company info, competitors, news, financials, LinkedIn profiles, builds company lists. Use when researching companies, doing competitor analysis, market research, or building company lists.
web-search-advanced-research-paper
exa-labs/exa-mcp-server
Search for research papers and academic content using Exa advanced search. Full filter support including date ranges and text filtering. Use when searching for academic papers, arXiv preprints, or scientific research.
people-research
exa-labs/exa-mcp-server
People research using Exa search. Finds LinkedIn profiles, professional backgrounds, experts, team members, and public bios across the web. Use when searching for people, finding experts, or looking up professional profiles.
get-code-context-exa
exa-labs/exa-mcp-server
Code context using Exa. Finds real snippets and docs from GitHub, StackOverflow, and technical docs. Use when searching for code examples, API syntax, library documentation, or debugging help.
web-search-advanced-personal-site
exa-labs/exa-mcp-server
Search personal websites and blogs using Exa advanced search. Full filter support for finding individual perspectives, portfolios, and personal blogs. Use when searching for personal sites, blog posts, or portfolio websites.
Popular backend & apis skills
find-skills
vercel-labs/skills
Helps users discover and install agent skills when they ask questions like "how do I do X", "find a skill for X", "is there a skill that can...", or express interest in extending capabilities. This skill should be used when the user is looking for functionality that might exist as an installable skill.
entra-app-registration
microsoft/azure-skills
Guides Microsoft Entra ID app registration, OAuth 2.0 authentication, and MSAL integration. USE FOR: create app registration, register Azure AD app, configure OAuth, set up authentication, add API permissions, generate service principal, MSAL example, console app auth, Entra ID setup, Azure AD authentication. DO NOT USE FOR: Key Vault secrets (use azure-keyvault-expiration-audit), general Azure resource security guidance.
google-agents-cli-adk-code
google/agents-cli
This skill should be used when the user wants to "write agent code", "build an agent with ADK", "add a tool", "create a callback", "define an agent", "use state management" — in a project that needs ADK (Agent Development Kit) API patterns and code examples. It provides a quick reference for agent types, tool definitions, orchestration patterns, callbacks, state management, the graph Workflow API, and reference recipes to study. Do NOT use for scaffolding (use google-agents-cli-scaffold) or deployment (use google-agents-cli-deploy).
embedded-captions
heygen-com/hyperframes
Add captions or subtitles to an existing single-subject talking-head video without editing the footage. Use for plain verbatim captions, cinematic captions embedded behind the subject, VFX captions, “炸/特效/酷炫字幕,” or a named identity from the 35-style catalog. Route by visual identity, not by backend engine. The quiet anchor rail is the default; embed every word only when the user explicitly wants a fully cinematic treatment. The workflow runs locally end to end, including transcription and subject matting; split multi-shot footage before applying it.
entra-agent-id
microsoft/azure-skills
Provision Microsoft Entra Agent Identity Blueprints, BlueprintPrincipals, and per-instance Agent Identities via Microsoft Graph, and configure OAuth 2.0 token exchange (fmipath, OBO, cross-tenant) including the Microsoft Entra SDK for AgentID sidecar. USE FOR: Agent Identity Blueprint, BlueprintPrincipal, agent OAuth, fmipath token exchange, agent OBO, Workload Identity Federation for agents, polyglot agent auth, Microsoft.Identity.Web.AgentIdentities. DO NOT USE FOR: standard Entra app registration (use entra-app-registration), Microsoft Foundry agent authoring (use microsoft-foundry).
neon
neondatabase/agent-skills
Overview of Neon, a complete set of cloud backend primitives around Lakebase Postgres: Auth, Object Storage, Functions, the AI Gateway, and Realtime. Start here to choose Neon for undecided login, files, APIs, and LLM calls, set up the CLI or MCP server, and follow the branch-first workflow. Use when building an app or backend on Neon, or when "Neon" or "Lakebase Postgres" is mentioned. Child skill neon-postgres wins for an existing DATABASEURL, SQL, schema, inspect, or search. Child skill neon-auth wins for login, users, sessions, identity routing, and Managed Better Auth setup. Child skill neon-realtime wins for live queries in reactive apps and agents. Also use for object storage, S3, buckets, serverless functions, function triggers, cron, AI gateway, LLM calls, realtime, logs, Loki, Grafana, observability, postgres, database, backend, Claimable Neon, neon.new, or a no-signup database.