
TonyDua/dsh-web-search-exa
52Last commit Aug 14, 2026
dsh-web-search-exa DSH plugin
A drop-in WebSearchProvider for dsh's ctx.web seam. It uses Exa's free anonymous MCP by default (no API key required) and automatically switches to the REST API when an EXA_API_KEY is configured. Supports coexistence with the official Exa provider via a configurable providerId.
How to install the dsh-web-search-exa DSH plugin
dsh plugin --profile web add @tonydua/dsh-web-search-exaCopying does not run this command. Review the repository and version before installing the dsh-web-search-exa DSH plugin.
dsh-web-search-exa DSH plugin data source
dsh-web-search-exa DSH plugin snapshot date: Aug 16, 2026
discovered
What the dsh-web-search-exa DSH plugin can do
- No API key required for basic search (anonymous MCP)
- Automatic upgrade to REST API when key is configured
- Drop-in integration with dsh ctx.web seam
- Configurable providerId to coexist with official Exa provider
- Supports search type, result count, highlights per result
- MIT licensed, ESM, bundled types
Where the dsh-web-search-exa DSH plugin fits
- Quickly add web search to a dsh agent without any setup
- Use Exa search in a dsh profile without exposing an API key
- Run both official and anonymous Exa providers simultaneously for different profiles
- Switch between anonymous and authenticated search based on environment
Who the dsh-web-search-exa DSH plugin is for
- dsh users who want instant web search capability without an API key
- Developers evaluating Exa search before committing to a paid plan
- dsh profile authors who need flexible search provider configuration
dsh-web-search-exa DSH plugin limitations
- Anonymous MCP is rate-limited by Exa (HTTP 429)
- Web UI settings card not yet available; configuration must be done via cordis.patch.yml or environment variables
- Requires Node >= 18
- Coexistence with official package requires explicit providerId configuration
dsh-web-search-exa DSH plugin: from the repository README
Quoted from the TonyDua/dsh-web-search-exa README, the upstream source of the dsh-web-search-exa DSH plugin. Copyright remains with the original authors.
**English** | [简体中文](README.zh.md) [](https://www.npmjs.com/package/@tonydua/dsh-web-search-exa) [](https://www.npmjs.com/package/@tonydua/dsh-web-search-exa) [](LICENSE) [](https://github.com/TonyDua/dsh-web-search-exa) [](https://github.com/TonyDua/dsh-web-search-exa) [](package.json) > Zero-config [Exa](https://exa.ai) web search for [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) (dsh): > **no API key required** — a `WebSearchProvider` for the `ctx.web` seam with an > anonymous MCP fallback plus a keyed REST path. Built with [deepseek-v4-flash](https://api-docs.deepseek.com) inside DeepSeek Harness (dsh). ## Features - 🆓 **Zero-config, keyless by default** — searches route through Exa's hosted MCP
Read the full READMERepository license: MIT
dsh-web-search-exa DSH plugin questions
Do I need an Exa API key to use this plugin?
No. Without a key, the provider uses Exa's free anonymous hosted MCP. If you configure an API key, it automatically switches to the REST API for higher limits.
I got HTTP 429 rate limited. What should I do?
That's Exa's anonymous-MCP rate limit. Set the EXA_API_KEY environment variable or configure the apiKey field, and the provider will switch to the REST path automatically.
Can I run this plugin alongside the official @deepseek-ai/dsh-web-search-exa?
Yes. Give this package a distinct providerId (e.g., exa-anon) in its config and select it explicitly. See the Coexistence section in the README.
Why don't I see a settings entry in the Web UI for this plugin?
This version registers the settings namespace server-side only; a UI card is planned for the next version. For now, configure through cordis.patch.yml or environment variables.
How do I install the plugin?
Run `dsh plugin --profile web add @tonydua/dsh-web-search-exa` and restart dsh web. No API key is needed for basic functionality.