Skip to content

Add native Exa web search provider - #3299

Open
kesku wants to merge 1 commit into
sipeed:mainfrom
kesku:feat/exa-web-search-provider
Open

Add native Exa web search provider#3299
kesku wants to merge 1 commit into
sipeed:mainfrom
kesku:feat/exa-web-search-provider

Conversation

@kesku

@kesku kesku commented Jul 26, 2026

Copy link
Copy Markdown

📝 Description

Adds Exa as a native tools.web / web_search provider. Requests use Exa's POST /search API with type: "auto" and contents.highlights, authenticate via the X-Api-Key header, and support the existing d/w/m/y range filters via startPublishedDate. Includes config, .security.yml key loading, provider selection, UI settings, tests, and documentation.

Enable with tools.web.exa.enabled and an API key, or select explicitly with tools.web.provider = "exa".

🗣️ Type of Change

  • 🐞 Bug fix (non-breaking change which fixes an issue)
  • ✨ New feature (non-breaking change which adds functionality)
  • 📖 Documentation update
  • ⚡ Code refactoring (no functional changes, no api changes)

🤖 AI Code Generation

  • 🤖 Fully AI-generated (100% AI, 0% Human)
  • 🛠️ Mostly AI-generated (AI draft, Human verified/modified)
  • 👨‍💻 Mostly Human-written (Human lead, AI assisted or none)

🔗 Related Issue

#2676 (this said the MCP can be used, but now Exa will have native support in PicoClaw!)

📚 Technical Context (Skip for Docs)

  • Reference URL: https://docs.exa.ai/reference/search
  • Reasoning: Exa is integrated through PicoClaw's existing SearchProvider registry in pkg/tools/integration/web.go, using raw net/http (no new Go module dependency). Keys rotate through the shared APIKeyPool.

🧪 Test Environment

  • Hardware: PC
  • OS: Linux
  • Model/Provider: OpenAI GPT-5.5
  • Channels: CLI

📸 Evidence (Optional)

Click to view Logs/Screenshots

Validation performed:

go vet -tags=goolm,stdjson ./pkg/tools/... ./pkg/config/... ./web/backend/...
go test -tags=goolm,stdjson ./pkg/tools/integration/... ./pkg/config/... ./web/backend/... -count=1
golangci-lint run --build-tags=goolm,stdjson ./pkg/tools/... ./pkg/config/... ./web/backend/...
./scripts/lint-docs.sh

Local runtime verification:

Tool call: web_search({"count":3,"query":"site:docs.exa.ai/reference/search Exa Search API documentation"})
Tool execution started ... tool=web_search
Results for: site:docs.exa.ai/reference/search Exa Search API documentation (via Exa)

☑️ Checklist

  • My code/docs follow the style of this project.
  • I have performed a self-review of my own changes.
  • I have updated the documentation accordingly.

@CLAassistant

CLAassistant commented Jul 26, 2026

Copy link
Copy Markdown

CLA assistant check
All committers have signed the CLA.

@kesku
kesku force-pushed the feat/exa-web-search-provider branch from 10b8792 to 3175091 Compare July 26, 2026 20:23
@github-actions

Copy link
Copy Markdown

This PR has had no activity for 7 days and has been marked as stale. If you are still working on it, please push an update or leave a comment; otherwise it will be closed automatically in 7 days.

@kesku

kesku commented Aug 12, 2026

Copy link
Copy Markdown
Author

This PR is still valid!

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.

2 participants