dsh-all-search

August 28, 2026 · View on GitHub

dsh-all-search AnySearch web search for DeepSeek Harness

dsh-all-search

Adds an AnySearch web-search provider to DeepSeek Harness, registered into ctx.web. AnySearch is a single MCP gateway that aggregates exa / tavily / firecrawl / context7 behind one API key.

When api_key is set, queries go to that gateway. When it is absent, the same anysearch provider stays available and searches via Firecrawl POST /v1/search with no Authorization header (keyless). Set optional firecrawl_api_key to send Authorization: Bearer and use your own quota. NAT/CI runners that share an egress IP share that keyless daily credit pool.

With firecrawl_api_key and an AnySearch key, developer-intent queries (repo / issue / PR / commit / skill) are answered by the Firecrawl Developer Index first -- a semantic artifact index over READMEs, issues, PRs, OpenAPI specs and skills -- falling back to AnySearch when it fails or returns nothing.

Port of pi-all-search.

English · 中文

Why

dsh ships Exa / Perplexity / DeepSeek search. This plugin adds AnySearch: one key, many backends, no per-backend credentials. Without an AnySearch key, Firecrawl still works so the provider is never a no-op.

Quick start

dsh plugin --profile web add dsh-all-search

The provider registers as anysearch on ctx.web -- the built-in web_search tool picks it up alongside the stock providers.

- id: all-search
  name: dsh-all-search
  config:
    api_key: <your anysearch key>   # optional
keyrequiredmeaning
api_key-AnySearch key. When set, queries use the AnySearch gateway.
base_url-MCP endpoint override
firecrawl_api_key-optional Firecrawl key (Bearer quota). Also enables the Developer Index branch for repo/issue/PR/skill queries when AnySearch is configured

Without an AnySearch key the provider still reports available() = true and searches Firecrawl keyless. Hosts that share an egress IP (NAT, CI) share those daily credits; set firecrawl_api_key for a private quota.

Privacy

  • Keys live only in your config file -- never logged.
  • With api_key, only your query and result count go to the AnySearch gateway.
  • Without api_key, the query goes to Firecrawl /v1/search.

Development

npm install
npm run typecheck
npm test          # result parsing / maxResults / HTTP errors / keyless Firecrawl routing
npm run build

Live search test:

node --import tsx tests/real/real-search.mjs

License

MIT