From 277c28612fd062efdcd6fc0fbbbe645fbfe0e1f5 Mon Sep 17 00:00:00 2001 From: rasdani <73563550+rasdani@users.noreply.github.com> Date: Fri, 6 Mar 2026 05:07:46 +0530 Subject: [PATCH 1/2] pass `EXA_API_KEY` --- packages/opencode/src/tool/websearch.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/opencode/src/tool/websearch.ts b/packages/opencode/src/tool/websearch.ts index bf16428dfb3..a52cd1a973a 100644 --- a/packages/opencode/src/tool/websearch.ts +++ b/packages/opencode/src/tool/websearch.ts @@ -100,7 +100,11 @@ export const WebSearchTool = Tool.define("websearch", async () => { "content-type": "application/json", } - const response = await fetch(`${API_CONFIG.BASE_URL}${API_CONFIG.ENDPOINTS.SEARCH}`, { + const exaKey = process.env.EXA_API_KEY + const searchUrl = exaKey + ? `${API_CONFIG.BASE_URL}${API_CONFIG.ENDPOINTS.SEARCH}?exaApiKey=${exaKey}` + : `${API_CONFIG.BASE_URL}${API_CONFIG.ENDPOINTS.SEARCH}` + const response = await fetch(searchUrl, { method: "POST", headers, body: JSON.stringify(searchRequest), From 30319985eed31e12f8f5dff168133fba85b5d4cb Mon Sep 17 00:00:00 2001 From: rasdani <73563550+rasdani@users.noreply.github.com> Date: Fri, 6 Mar 2026 20:44:26 +0530 Subject: [PATCH 2/2] conditionally alter `API_CONFIG.ENDPOINTS.SEARCH` instead --- packages/opencode/src/tool/websearch.ts | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/packages/opencode/src/tool/websearch.ts b/packages/opencode/src/tool/websearch.ts index a52cd1a973a..2a71185e9cd 100644 --- a/packages/opencode/src/tool/websearch.ts +++ b/packages/opencode/src/tool/websearch.ts @@ -6,10 +6,10 @@ import { abortAfterAny } from "../util/abort" const API_CONFIG = { BASE_URL: "https://mcp.exa.ai", ENDPOINTS: { - SEARCH: "/mcp", + SEARCH: process.env.EXA_API_KEY ? `/mcp?exaApiKey=${process.env.EXA_API_KEY}` : "/mcp", }, DEFAULT_NUM_RESULTS: 8, -} as const +} interface McpSearchRequest { jsonrpc: string @@ -100,11 +100,7 @@ export const WebSearchTool = Tool.define("websearch", async () => { "content-type": "application/json", } - const exaKey = process.env.EXA_API_KEY - const searchUrl = exaKey - ? `${API_CONFIG.BASE_URL}${API_CONFIG.ENDPOINTS.SEARCH}?exaApiKey=${exaKey}` - : `${API_CONFIG.BASE_URL}${API_CONFIG.ENDPOINTS.SEARCH}` - const response = await fetch(searchUrl, { + const response = await fetch(`${API_CONFIG.BASE_URL}${API_CONFIG.ENDPOINTS.SEARCH}`, { method: "POST", headers, body: JSON.stringify(searchRequest),