skillZs
★ LIVE SKILL TAGS ★
>>> LIVE SKILLS INDEX <<<
* OPEN SOURCE *
NO LOGIN, NO TRACKING
※ REAL INSTALL DATA ※
← back to all skills
mxyhi/ok-skills126 installs

exa-search

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 this agent skill?

npx skills add https://github.com/mxyhi/ok-skills --skill exa-search
view source ↗

Is this agent skill safe to install?

  • Gen Agent Trust Hubwarn

    The skill utilizes npx to execute an external utility (mcporter) and recommends passing sensitive API keys via URL query parameters, which is an insecure practice. It also retrieves content from the web, creating a potential surface for indirect prompt injection.

  • Socketpass

    No alerts

  • Snykfail

    Risk: HIGH · 2 issues

  • Runlayerpass

    1/2 files flagged

What does this agent skill do?

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-256 62379fab5750cbc8334f096ff986ab1b7152488afffab5b0e275995310b6e978
  • Tool schemas can change. Before adding new parameters, verify with tools/list through 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

NeedPreferNotes
General current web searchweb_search_exaSimple search. Only query and numResults.
Filtered search, dates, domains, categories, summaries, highlights, subpagesweb_search_advanced_exaEnable explicitly in tools=. Use this for company/people/papers/news filters.
Read known URLs fullyweb_fetch_exaUse after search when highlights are insufficient.
Code examples/docsweb_search_exaget_code_context_exa still exists but is deprecated.
Company researchweb_search_advanced_exa with category:"company"company_research_exa still exists but is deprecated.
People/profilesweb_search_advanced_exa with category:"people"people_search_exa still exists but is deprecated.

Core Parameters

web_search_exa

  • query required: semantically rich natural-language query. Can include category:company or category:people.
  • numResults optional: default 10.
  • No type, livecrawl, contextMaxCharacters, or tokensNum on current hosted schema.
{"query":"latest AI safety research June 2026","numResults":10}

web_search_advanced_exa

  • query required.
  • 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; prefer highlightsMaxCharacters.
  • 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

  • urls required: array of URLs. Batch multiple URLs in one call.
  • maxCharacters optional: default 3000.
{"urls":["https://docs.exa.ai/reference"],"maxCharacters":5000}

Deprecated But Still Available

  • get_code_context_exa: use web_search_exa instead. Current schema is query, numResults; old tokensNum is obsolete.
  • company_research_exa: use web_search_advanced_exa with category:"company" instead. Schema is companyName, numResults; default 3.
  • people_search_exa: use web_search_advanced_exa with category:"people" instead.
  • crawling_exa: use web_fetch_exa instead.
  • deep_search_exa: use web_search_advanced_exa instead; 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

  1. POST initialize; keep returned Mcp-Session-Id response header.
  2. POST notifications/initialized with that header.
  3. POST tools/list or tools/call with that header.
  4. If response is text/event-stream, parse JSON from data: 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_exa call.
  • For dated/current questions, calculate exact date ranges first and pass startPublishedDate / endPublishedDate through web_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_exa categories rather than deprecated specialized tools.
  • Mention source uncertainty when Exa returns sparse, conflicting, or old results.

References

  • Tool fields: references/exa-tools.md

Add the canonical catalog link to the repository README so users can inspect current installs and available audits. The publishing guide covers the complete discovery path.

<a href="https://skillzs.dev/skills/mxyhi/ok-skills/exa-search">View exa-search on skillZs</a>