Install Exa Search
Pick your agent. Every command is ready to paste.
npx skills add mxyhi/ok-skills --skill exa-searchThe open skills CLI detects your agents (Claude Code, Cursor, Codex and 70+ more) and installs to the right folder. Add -g to install globally.
01
Install it
Run the command above, or upload the folder in Claude.
02
Ask naturally
Describe the task. Your agent loads exa-search when the request matches its description.
03
Name it if needed
If it does not trigger, say “use the exa-search skill”. In Codex, type $exa-search.
Exa MCP Search
Use this skill when online search, page fetch, code/docs lookup, company research, people research, or Exa MCP parameter checks are needed.
Current Source Of Truth
- Hosted MCP endpoint:
https://mcp.exa.ai/mcp - Official source:
exa-labs/exa-mcp-server@15ffb50519e719dc791cdc750ce5ed1934c0a1ed - Current npm package checked:
exa-mcp-server@3.4.1; verified tarball SHA-25662379fab5750cbc8334f096ff986ab1b7152488afffab5b0e275995310b6e978 - Tool schemas can change. Before adding new parameters, verify with
tools/listthrough a normal HTTP client.
Direct MCP HTTP is the required invocation model for this skill. curl is fine, but keep the session and SSE parsing in small shell helpers instead of repeating low-level flags at every call site.
Tool Choice
| Need | Prefer | Notes |
|---|---|---|
| General current web search | web_search_exa |
Simple search. Only query and numResults. |
| Filtered search, dates, domains, categories, summaries, highlights, subpages | web_search_advanced_exa |
Enable explicitly in tools=. Use this for company/people/papers/news filters. |
| Read known URLs fully | web_fetch_exa |
Use after search when highlights are insufficient. |
| Code examples/docs | web_search_exa |
get_code_context_exa still exists but is deprecated. |
| Company research | web_search_advanced_exa with category:"company" |
company_research_exa still exists but is deprecated. |
| People/profiles | web_search_advanced_exa with category:"people" |
people_search_exa still exists but is deprecated. |
Core Parameters
web_search_exa
queryrequired: semantically rich natural-language query. Can includecategory:companyorcategory:people.numResultsoptional: default10.- No
type,livecrawl,contextMaxCharacters, ortokensNumon current hosted schema.
{"query":"latest AI safety research June 2026","numResults":10}
web_search_advanced_exa
queryrequired.- Common optional filters:
numResults,type(auto|fast|instant),category,includeDomains,excludeDomains,startPublishedDate,endPublishedDate,startCrawlDate,endCrawlDate,includeText,excludeText,userLocation,moderation,additionalQueries. - Content controls:
textMaxCharacters,contextMaxCharacters,enableSummary,summaryQuery,enableHighlights,highlightsMaxCharacters,highlightsQuery,maxAgeHours,livecrawlTimeout,subpages,subpageTarget. - Deprecated highlight controls:
highlightsNumSentences,highlightsPerUrl; preferhighlightsMaxCharacters. - Categories include
company,publication,news,pdf,github,personal site,people,financial report.
{
"query":"Anthropic funding valuation 2026",
"category":"news",
"includeDomains":["techcrunch.com","bloomberg.com"],
"startPublishedDate":"2026-01-01",
"numResults":10,
"type":"auto",
"enableHighlights":true
}
web_fetch_exa
urlsrequired: array of URLs. Batch multiple URLs in one call.maxCharactersoptional: default3000.
{"urls":["https://docs.exa.ai/reference"],"maxCharacters":5000}
Deprecated But Still Available
get_code_context_exa: useweb_search_exainstead. Current schema isquery,numResults; oldtokensNumis obsolete.company_research_exa: useweb_search_advanced_exawithcategory:"company"instead. Schema iscompanyName,numResults; default3.people_search_exa: useweb_search_advanced_exawithcategory:"people"instead.crawling_exa: useweb_fetch_exainstead.deep_search_exa: useweb_search_advanced_exainstead; current hosted MCP requires OAuth or an API key when this tool is requested.deep_researcher_start/deep_researcher_check: deprecated; use Exa Research API directly when needed.
Curl Pattern
- POST
initialize; keep returnedMcp-Session-Idresponse header. - POST
notifications/initializedwith that header. - POST
tools/listortools/callwith that header. - If response is
text/event-stream, parse JSON fromdata:lines.
Minimal Curl Helper
EXA_URL="https://mcp.exa.ai/mcp?tools=web_search_exa,web_search_advanced_exa,web_fetch_exa"
EXA_SESSION_ID=""
exa_rpc() {
local payload="$1"
local session_header=()
local response
if [ -n "$EXA_SESSION_ID" ]; then
session_header=(-H "Mcp-Session-Id: $EXA_SESSION_ID")
fi
response="$(curl -isS "$EXA_URL" \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
"${session_header[@]}" \
--data "$payload")"
if [ -z "$EXA_SESSION_ID" ]; then
EXA_SESSION_ID="$(printf '%s\n' "$response" | awk 'tolower($0) ~ /^mcp-session-id:/ { sub(/^[^:]+:[[:space:]]*/, ""); gsub(/\r/, ""); print; exit }')"
fi
printf '%s\n' "$response" | sed -n 's/^data: //p'
}
exa_init() {
exa_rpc '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"exa-curl","version":"0.1.0"}}}' >/dev/null
exa_rpc '{"jsonrpc":"2.0","method":"notifications/initialized"}' >/dev/null
}
exa_call() {
local tool_name="$1"
local arguments_json="$2"
jq -nc --arg name "$tool_name" --argjson arguments "$arguments_json" \
'{jsonrpc:"2.0",id:2,method:"tools/call",params:{name:$name,arguments:$arguments}}' |
while IFS= read -r payload; do exa_rpc "$payload"; done
}
exa_init
exa_call web_search_exa '{"query":"latest AI safety research","numResults":5}'
Tool output format differs: web_search_exa returns formatted text, web_search_advanced_exa returns JSON text, and web_fetch_exa returns fetched page text.
Research Practice
- For simple lookup, run one targeted
web_search_exacall. - For dated/current questions, calculate exact date ranges first and pass
startPublishedDate/endPublishedDatethroughweb_search_advanced_exa. - For source-heavy tasks, fetch only the best URLs with
web_fetch_exa; do not dump raw results into the final answer. - For company/people/paper/news workflows, prefer
web_search_advanced_exacategories rather than deprecated specialized tools. - Mention source uncertainty when Exa returns sparse, conflicting, or old results.
References
- Tool fields:
references/exa-tools.md
Tips for Exa Search
- • Start a fresh session after installing so your agent picks up the new skill.
- • It bundles reference files. The agent reads them only when needed, so they cost no context until then.
- • It is part of a pack with 30 skills. Install only the ones you need with --skill to keep triggers precise.
- • If two skills overlap, mention the one you want by name.
Questions about Exa Search
What does the Exa Search skill do?
Use Exa MCP for current web, code/docs, company, people, and page-fetch research. Prefer current hosted tool schemas and note deprecated tools.
How do I install Exa Search?
Run "npx skills add mxyhi/ok-skills --skill exa-search" in your project. The skills CLI installs it for Claude Code, Cursor, Codex and 70+ other agents. In Claude on the web, upload the skill folder as a ZIP under Customize > Skills.
Does Exa Search work in Cursor and Codex?
Yes. Exa Search uses the open SKILL.md format, so it works in Claude Code, Claude, Cursor, OpenAI Codex, Gemini CLI, GitHub Copilot and other agents that support agent skills.
Is Exa Search free?
Exa Search is open source on GitHub under the Apache-2.0 license. It is free to install; check the license before commercial use.
Who made Exa Search?
Exa Search is published by mxyhi in the mxyhi/ok-skills repository, together with 29 other skills.

