Skip to content

feat: add Exa AI-powered search tool#266

Open
tgonzalezc5 wants to merge 1 commit intocoreyhaines31:mainfrom
tgonzalezc5:feat/exa-search-tool
Open

feat: add Exa AI-powered search tool#266
tgonzalezc5 wants to merge 1 commit intocoreyhaines31:mainfrom
tgonzalezc5:feat/exa-search-tool

Conversation

@tgonzalezc5
Copy link
Copy Markdown

Summary

Adds Exa — an AI-powered web search API built for LLMs and agents — as a new tool integration. Exa returns high-quality results via neural/semantic or keyword-like search, with on-demand content retrieval (full text, highlights, summaries) in a single request. It's a strong fit for content research, competitor discovery, link prospecting, news monitoring, and audience research workflows that marketing agents run.

What's added

  • CLI (tools/clis/exa.js) — zero-dependency Node.js wrapper matching the existing CLI pattern (native fetch, env-var auth, JSON output, --dry-run with masked credentials). Supports:
    • search/search with type (neural / fast / auto / deep-lite / deep / deep-reasoning / instant), category, domain + text filters, published/crawl date ranges, userLocation, and composable contents (text/highlights/summary can be requested together)
    • find-similar/findSimilar to discover pages similar to a given URL
    • contents/contents to fetch text/highlights/summary for one or more known URLs
  • Integration guide (tools/integrations/exa.md) — auth, endpoints, common agent operations (competitor content discovery, find-similar, category-filtered news search, contents fetch), parameter reference, and linked skills
  • Registry update (tools/REGISTRY.md) — new "AI Search" category + MCP-enabled list entry
  • CLI README (tools/clis/README.md) — adds EXA_API_KEY env var and CLI listing

Usage

# Web search with highlights and truncated page text
EXA_API_KEY=... node tools/clis/exa.js search \
  --query "B2B SaaS onboarding teardowns" --num 10 \
  --text --max-chars 1000 --highlights

# Find pages similar to a competitor's pricing page
node tools/clis/exa.js find-similar \
  --url https://stripe.com/pricing --num 20 --summary \
  --summary-query "What pricing model and price points does this page use?"

# News in a category, filtered by date and location
node tools/clis/exa.js search \
  --query "DTC beauty brand raising Series A" --category news \
  --start-published 2024-06-01T00:00:00Z --user-location US

# Preview any request without hitting the API
node tools/clis/exa.js search --query test --dry-run

Files changed

  • tools/clis/exa.js (new) — 130-line CLI wrapper
  • tools/integrations/exa.md (new) — integration guide
  • tools/REGISTRY.md — adds Exa row, new "AI Search" category section, MCP-enabled entry
  • tools/clis/README.md — env var + CLI listing

Test plan

  • Node syntax check passes (node --check tools/clis/exa.js)
  • search builds correct /search body with filters, categories, and mixed contents fields (text + highlights + summary together) — verified via --dry-run
  • find-similar builds correct /findSimilar body
  • contents places text/highlights/summary at top level alongside urls (matches Exa API schema)
  • Missing EXA_API_KEY exits with JSON error
  • Missing required args (--query, --url, --urls) returns structured JSON error
  • --dry-run masks the API key as *** (matches PR fix: harden CLI tools against credential leakage #253 credential-hardening pattern)
  • x-exa-integration: marketingskills tracking header is sent on every request

Adds Exa as an AI search integration for content research, competitor
discovery, link prospecting, news monitoring, and audience research.

- CLI (tools/clis/exa.js): zero-dep Node.js wrapper for /search,
  /findSimilar, and /contents with neural/auto/fast/deep search types,
  category + domain + text + date filtering, and composable content
  retrieval (text, highlights, summary) in a single request
- Integration guide (tools/integrations/exa.md): auth, endpoints,
  common agent operations, parameters, and linked skills
- Registry entry under new 'AI Search' category + MCP-enabled list
- Uses EXA_API_KEY env var with --dry-run support and masked credentials
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant