Skip to content

feat: add Exa AI-powered search tool#3077

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

feat: add Exa AI-powered search tool#3077
tgonzalezc5 wants to merge 1 commit intokortix-ai:mainfrom
tgonzalezc5:feat/exa-search-tool

Conversation

@tgonzalezc5
Copy link
Copy Markdown

@tgonzalezc5 tgonzalezc5 commented Apr 16, 2026

Summary

  • New exa_search tool that provides web search via the Exa search API, complementing the existing Tavily and Serper integrations
  • Supports neural/semantic search, category filtering (company, news, research paper, etc.), domain filtering, text filtering, date ranges, and batch queries via |||
  • Returns results in the same structured JSON format as the existing web_search tool (title, URL, snippet, published date, author)
  • Follows the Kortix proxy pattern: uses EXA_API_URL + KORTIX_TOKEN when routed through the proxy, or EXA_API_KEY for direct API access

Usage example

query: "latest advances in neural search ||| transformer architectures 2024"
num_results: 5
search_type: "auto"
content_mode: "highlights"
category: "research paper"
include_domains: "arxiv.org,nature.com"

Files changed

File Change
core/kortix-master/opencode/tools/exa_search.ts New Exa search tool
core/kortix-master/tests/unit/exa-search.test.ts Unit tests (19 tests)
packages/shared/src/tools/display-names.ts Display names for exa_search
packages/shared/src/tools/icon-keys.ts Icon key mapping for exa_search
core/docker/.env.example EXA_API_KEY and EXA_API_URL entries
core/kortix-master/seed-env.json EXA_API_KEY placeholder

Test plan

  • Unit tests pass (bun test tests/unit/exa-search.test.ts - 19/19 pass)
  • Snippet fallback logic: highlights > summary > text > empty string
  • Batch query parsing and formatting
  • API error and network error handling
  • Domain parsing (comma-separated, whitespace trimming, empty filtering)
  • Response formatting matches existing web_search output structure
  • Manual test with live EXA_API_KEY in sandbox environment

Note

Medium Risk
Adds a new external-API tool path with env-driven auth/proxy behavior; issues would primarily affect web-search functionality and runtime configuration rather than core platform security.

Overview
Introduces a new exa_search OpenCode tool that queries the Exa Search API (with optional EXA_API_URL proxy routing) and returns structured JSON results, including support for batch queries, search/content modes, and domain/text/date/category filters.

Wires the integration into configuration and UX by adding EXA_API_KEY/EXA_API_URL placeholders to .env.example and seed-env.json, adding display names and icon mappings for exa_search, and adding unit tests that cover snippet/formatting helpers and basic fetch error handling.

Reviewed by Cursor Bugbot for commit 48ade57. Bugbot is set up for automated code reviews on this repo. Configure here.

Add a new exa_search tool that provides web search via the Exa API,
complementing the existing Tavily and Serper integrations. Supports
neural/semantic search, category filtering, domain filtering, text
filtering, date ranges, and batch queries.

- New tool: core/kortix-master/opencode/tools/exa_search.ts
- Unit tests: core/kortix-master/tests/unit/exa-search.test.ts
- Display names and icon keys for exa_search
- EXA_API_KEY in .env.example and seed-env.json
- Kortix proxy pattern support (EXA_API_URL + KORTIX_TOKEN)
Copy link
Copy Markdown
Contributor

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Your free trial has ended. If you'd like to continue receiving code reviews, you can add a payment method here.

@vercel
Copy link
Copy Markdown

vercel bot commented Apr 16, 2026

@tgonzalezc5 is attempting to deploy a commit to the Kortix AI Corp Team on Vercel.

A member of the Team first needs to authorize it.

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