Install
$ agentstack add skill-rowanaldean-exa-skills-exa-search ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ● Network access Used
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
About
Exa Token-Efficient Search
Use this skill to perform web searches, company research, and people discovery using the Exa API via curl, while strictly minimizing token usage to keep context sizes manageable.
Search Approach
Always use type: "auto" for general queries and extract token-efficient highlights instead of full text.
1. General Web Search
curl -X POST 'https://api.exa.ai/search' \
-H "x-api-key: $EXA_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"query": "YOUR_SPECIFIC_QUERY",
"type": "auto",
"num_results": 10,
"contents": {
"highlights": { "max_characters": 4000 }
}
}'
2. People Search
Find individuals by role, expertise, or what they work on.
- Rule: Use SINGULAR form (e.g., "software engineer", not "software engineers").
- Rule: No date or text filters are supported.
curl -X POST 'https://api.exa.ai/search' \
-H "x-api-key: $EXA_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"query": "software engineer working on distributed systems",
"category": "people",
"num_results": 10,
"contents": {
"highlights": { "max_characters": 4000 }
}
}'
3. Company Search
Find companies by industry or criteria.
curl -X POST 'https://api.exa.ai/search' \
-H "x-api-key: $EXA_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"query": "AI startup in healthcare",
"category": "company",
"num_results": 10,
"contents": {
"highlights": { "max_characters": 4000 }
}
}'
4. Fetch Known URLs
Use /contents to extract highlights when you already have specific URLs.
curl -X POST 'https://api.exa.ai/contents' \
-H "x-api-key: $EXA_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"urls": ["https://example.com/article"],
"highlights": { "max_characters": 4000 }
}'
Query Tuning & Variations
- Dynamic Tuning: Adjust
num_resultsbased on the user's intent. Use 10-20 for a quick look, and 50-100 for comprehensive deep dives. - Query Variation: Exa returns different results for different phrasings. For thorough research, generate 2-3 query variations and run them in parallel to maximize coverage.
Token Isolation Strategy (Critical)
For heavy web search operations that pull in large amounts of data, never run Exa searches directly in the main context.
- Spawn a sub-agent / teammate to act as a worker.
- Have the teammate run the Exa search and review the raw JSON.
- The teammate should process the results internally and return only a distilled output (e.g., a compact markdown list) to the main context.
Gotchas
- Nesting of
highlights: On the/searchendpoint,highlightsMUST be nested insidecontents("contents": {"highlights": {...}}). On the/contentsendpoint,highlightsis a top-level key. - Token warnings: Never use
"text": {"max_characters": ...}unless full contiguous text is explicitly required, as it severely increases token cost. Default tohighlights. - Deprecated parameters: Never use
useAutoprompt,stream,tokensNum,includeUrls,excludeUrls,numSentences, orhighlightsPerUrl. - Domain filtering: Use
includeDomainsorexcludeDomainsas arrays of strings. Note that forcategory: "people",includeDomainsONLY accepts LinkedIn domains. - Filter Crash Restrictions (400 Errors):
- When using
category: "company", the API will throw a 400 error if you useincludeDomains,excludeDomains,startPublishedDate,endPublishedDate,startCrawlDate, orendCrawlDate. Leave these out for company searches! - Universal Array Restriction: The parameters
includeTextandexcludeTextONLY support single-item arrays. Passing multiple items into these arrays will cause a 400 error across all search categories. - Freshness Control: If you need real-time data or want to bypass the cache, add
"maxAgeHours": 0to your JSON payload. Do not use the deprecatedlivecrawlparameter.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: RowanAldean
- Source: RowanAldean/exa-skills
- License: Unlicense
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.