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 fastcategory: "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.
- Call
agent_runwith a natural-languagequeryand, when you want repeatable structure, anoutputSchema(bound arrays withmaxItems). - If it returns
status: "running"with arunId, callagent_runagain with only thatrunIduntiloutputReadyis true. - Read
output.textoroutput.structured, plusoutput.groundingcitations, from theagent_runresult.
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, announcementspeople→ 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 insteadcategory: "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:
- Results (structured list; one company per row)
- Sources (URLs; 1-line relevance each — use
output.groundingfrom Agent runs) - 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


