company-research · exa-labs — Claude Code skill: what it does, how to install
Researches companies, competitors, financials, and news via Exa search. Gathers structured market data directly in the coding agent session.
npx skills add exa-labs/agent-skills --skill company-research -a claude-codeWhat company-research does
The skill routes requests between two tools based on task complexity. Deep company research, competitor breakdowns, and target lists run through agent_run. This agent automatically breaks down queries, executes multiple search passes, and structures the findings using an outputSchema. When a run takes longer than the MCP timeout, it polls the task using runId until completion.
Quick lookups rely on web_search_advanced_exa across categories like company, news, or people. Filter restrictions are strict here. Attempting to add published date filters or domain exclusions to the company category triggers a 400 error, so temporal constraints must stay in the query text.
Raw search outputs never get dumped into main context to protect token budgets. The agent falls back to a browser session only when pages require JavaScript rendering or authentication.
What it helps with
- compile a list of startups with funding stages and URLs
- extract key executives and professional profile links
- track recent company press coverage and product news
- run competitor analysis with structured JSON schemas
Example prompts for the agent
- Find 25 AI infrastructure startups in San Francisco with their websites and funding stages.
- Research Anthropic: funding history, valuation, executives, competitors, and news.
- Check recent news about AI safety published this year.
How to install company-research
1Skills CLI (Vercel)
npx skills add exa-labs/agent-skills --skill company-research -a claude-code2Manually: put the files in place
~/.claude/skills/company-research/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/company-research/
1Skills CLI (Vercel)
npx skills add exa-labs/agent-skills --skill company-research -a codex2Manually: put the files in place
.agents/skills/company-research/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add exa-labs/agent-skills --skill company-research -a cursor2Manually: put the files in place
.cursor/skills/company-research/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install exa-labs/agent-skills company-research2Manually: put the files in place
.github/skills/company-research/SKILL.md1Skills CLI (Vercel)
npx skills add exa-labs/agent-skills --skill company-research -a gemini-cli2Platform CLI
gemini skills install https://github.com/exa-labs/agent-skills --path skills/company-researchManually: put the files in place
.devin/skills/company-research/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add exa-labs/agent-skills --skill company-research -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about company-research
How to install company-research in Claude Code?
Run npx skills add exa-labs/agent-skills --skill company-research -a claude-code in your terminal. This downloads and links the skill configuration for Claude Code.
What is the difference between agent_run and web_search_advanced_exa?
The agent_run function handles multi-step research, competitor analysis, and structured lists. Fast single queries like news checks or homepage lookups use web_search_advanced_exa.
Why does Exa return a 400 error during company searches?
The company category does not support native date or domain exclusion filters. You must specify constraints such as founding year directly in the natural-language query.
Source text
SKILL.md · MIT
---
name: company-research
description: Company research using Exa. Finds company info, competitors, news, financials, LinkedIn profiles, builds company lists. Use when researching companies, doing competitor analysis, market research, or building company lists.
context: fork
---
# Company Research
## Tool Selection (Critical)
Two Exa surfaces, two jobs:
- **Exa Agent** (`agent_run`) — the default for company research. Use it for deep dives, competitor analysis, multi-angle research (product + funding + news + people), and building company lists. One Agent run handles query decomposition, multi-step searching, and synthesis internally — do not orchestrate many manual searches for work an Agent run covers.
- **`web_search_advanced_exa`** — quick, low-latency lookups: a fast `category: "company"` discovery pass, a single news check, or finding a homepage.
Do NOT use other Exa tools.
## Deep Dives and Lists: Exa Agent
Agent runs may stream to completion in one call. If a run outlives the MCP call window, continue waiting with its returned run ID.
1. Call `agent_run` with a natural-language `query` and, when you want repeatable structure, an `outputSchema` (bound arrays with `maxItems`).
2. If it returns `status: "running"` with a `runId`, call `agent_run` again with only that `runId` until `outputReady` is true.
3. Read `output.text` or `output.structured`, plus `output.grounding` citations, from the `agent_run` result.
Useful inputs: `systemPrompt` (source preferences, dedup rules), `input.exclusion` (companies to avoid), `previousRunId` (a new follow-up run based on a completed run), `effort` (`"low"` default; `"auto"` or `"high"` for more depth).
### Example: company deep dive
```
agent_run {
"query": "Research Anthropic: product lines, funding history and valuation, key executives, main competitors, and notable news from the last 6 months.",
"effort": "auto",
"outputSchema": {
"type": "object",
"properties": {
"overview": { "type": "string" },
"funding": { "type": "array", "maxItems": 10, "items": { "type": "object", "properties": { "round": { "type": "string" }, "amount": { "type": "string" }, "date": { "type": "string" } }, "required": ["round"] } },
"competitors": { "type": "array", "maxItems": 10, "items": { "type": "string" } },
"key_people": { "type": "array", "maxItems": 10, "items": { "type": "object", "properties": { "name": { "type": "string" }, "title": { "type": "string" } }, "required": ["name", "title"] } }
},
"required": ["overview", "competitors"]
}
}
```
### Example: build a company list
```
agent_run {
"query": "Find 25 AI infrastructure startups headquartered in San Francisco. For each, include what they build and their latest funding stage.",
"effort": "auto",
"outputSchema": {
"type": "object",
"properties": {
"companies": {
"type": "array",
"maxItems": 25,
"items": {
"type": "object",
"properties": {
"name": { "type": "string" },
"website": { "type": "string", "format": "uri" },
"description": { "type": "string", "description": "in 12 words or less" },
"funding_stage": { "type": "string" }
},
"required": ["name", "website", "description"]
}
}
},
"required": ["companies"]
}
}
```
## Quick Lookups: Advanced Search
Use `web_search_advanced_exa` when a single fast search answers the question. Tune `numResults` to intent (a few → 10-20; comprehensive → 50-100; specified → match it).
### Categories
- `company` → homepages, rich metadata (headcount, location, funding, revenue)
- `news` → press coverage, announcements
- `people` → public professional profiles
- No category (`type: "auto"`) → general web results, broader context
Default to `type: "auto"`. Prefer `highlights` for content extraction; do not stack text + highlights + summary in one call.
### Category-Specific Filter Restrictions
Unsupported category/filter combinations return 400 errors:
- `category: "company"` does not support published-date or crawl-date filters, `excludeDomains`, or exact-text filters; express constraints like "founded after 2020" in the query instead
- `category: "people"` does not support published-date, crawl-date, domain, or exact-text filters; put all filtering in the natural-language query
- Without a category (or with `news`), domain and date filters work fine
### Examples
Discovery pass:
```
web_search_advanced_exa {
"query": "AI infrastructure startups San Francisco",
"category": "company",
"numResults": 20,
"type": "auto"
}
```
News check:
```
web_search_advanced_exa {
"query": "Anthropic AI safety",
"category": "news",
"numResults": 15,
"startPublishedDate": "2025-01-01"
}
```
Key people:
```
web_search_advanced_exa {
"query": "VP Engineering AI infrastructure",
"category": "people",
"numResults": 20
}
```
## Token Isolation
Never dump raw search results into main context. Spawn Task agents for Advanced Search calls; for Agent runs, go straight from `output.structured` to the final answer.
## Browser Fallback
Fall back to Claude in Chrome only when content is auth-gated or requires JavaScript rendering.
## Output Format
Return:
1) Results (structured list; one company per row)
2) Sources (URLs; 1-line relevance each — use `output.grounding` from Agent runs)
3) Notes (uncertainty/conflicts)
## References
- Exa Agent guide: https://exa.ai/docs/agent/quickstart
- Company Search reference: https://exa.ai/docs/search/data/companies-people
- Exa MCP setup: https://exa.ai/docs/get-started/exa-mcp
- Full docs for LLMs: https://exa.ai/docs/llms.txt
© exa-labs · MIT · exa-labs/agent-skills
Similar skills
All skills for Agent setup: memory, context, orchestration →company-research by other authors comes first.