| name | company-research |
| description | 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. Triggers on "research company", "competitors of", "companies in", "market map". |
| context | fork |
MCP server note (this workspace): Exa tools come from the exa-search MCP server — mcp__exa-search__web_search_advanced_exa and mcp__exa-search__deep_search_exa. Load them via ToolSearch if not already available.
Company Research
Tool Restriction (Critical)
This skill calls web_search_advanced_exa. For deep multi-angle synthesis (query expansion + cited answer), hand off to the separate deep_search_exa tool — that is a different tool, not a mode of this one. Note that type: "deep" is a param of web_search_advanced_exa (a search depth), distinct from the standalone deep_search_exa tool. Don't reach for unrelated Exa tools from here.
Token Isolation (Critical)
Never run Exa searches in the main agent context for bulk work. Always spawn a Task agent:
- Task agent runs the Exa search internally
- Task agent processes results using LLM intelligence
- Task agent returns only distilled output (compact JSON or brief markdown)
- Main context stays clean regardless of search volume
For a single small lookup (one query, < 10 results), running inline is fine.
Dynamic Tuning
No hardcoded numResults. Tune to user intent:
- "a few" → 10–20
- "comprehensive" → 50–100
- User specifies a number → match it
- Ambiguous → ask: "How many companies would you like?"
Query Variation
Exa returns different results for different phrasings. For coverage:
- Generate 2–3 query variations
- Run them in parallel
- Merge and deduplicate
Categories
Pick category based on what you need:
company → homepages, rich metadata (headcount, location, funding, revenue)
news → press coverage, announcements
people → public LinkedIn profiles
- omit /
type: "auto" → general web results, broader context
Start with category: "company" for discovery, then drill down with other categories.
Category-Specific Filter Restrictions
When using category: "company", these parameters cause 400 errors:
includeDomains / excludeDomains
startPublishedDate / endPublishedDate
startCrawlDate / endCrawlDate
When searching without a category (or with news), domain and date filters work fine.
type is orthogonal to category: the 400 restrictions key off the category, not the search type.
Universal: includeText / excludeText only support single-item arrays. Multi-item arrays cause 400 errors across all categories.
LinkedIn
Public LinkedIn via Exa: category: "people", no other filters. Auth-gated LinkedIn → fall back to Claude in Chrome.
Examples
Discovery
web_search_advanced_exa
{
"query": "AI infrastructure startups San Francisco",
"category": "company",
"numResults": 20,
"type": "auto"
}
Deep dive on one company
web_search_advanced_exa
{
"query": "Anthropic funding rounds valuation 2024",
"type": "deep",
"numResults": 10,
"includeDomains": ["techcrunch.com", "crunchbase.com", "bloomberg.com"]
}
News coverage
web_search_advanced_exa
{
"query": "Anthropic AI safety",
"category": "news",
"numResults": 15,
"startPublishedDate": "2024-01-01"
}
LinkedIn profiles
web_search_advanced_exa
{
"query": "VP Engineering AI infrastructure",
"category": "people",
"numResults": 20
}
Output Format
Return:
- Results — structured list, one company per row
- Sources — URLs with a one-line relevance note
- Notes — uncertainty or conflicts
Hand-off: to persist distilled findings into raise state, route through the round CLI — round investors update / round outreach draft — as proposals only. Never write round.db directly, never pass --yes, never reference local.db. This skill stays read-only research; persistence is a hand-off.