diff --git a/src/agents/tools/web-search.ts b/src/agents/tools/web-search.ts index 1d87676e8..40e4b7b9f 100644 --- a/src/agents/tools/web-search.ts +++ b/src/agents/tools/web-search.ts @@ -63,6 +63,12 @@ const WebSearchSchema = Type.Object({ "Filter results by discovery time (Brave only). Values: 'pd' (past 24h), 'pw' (past week), 'pm' (past month), 'py' (past year), or date range 'YYYY-MM-DDtoYYYY-MM-DD'.", }), ), + model: Type.Optional( + Type.String({ + description: + "Perplexity model to use (Perplexity provider only). Overrides the configured default. Examples: 'sonar', 'sonar-pro', 'sonar-reasoning'.", + }), + ), }); type WebSearchConfig = NonNullable["web"] extends infer Web @@ -450,6 +456,14 @@ export function createWebSearchTool(options?: { docs: "https://docs.molt.bot/tools/web", }); } + const modelOverride = readStringParam(params, "model"); + if (modelOverride && provider !== "perplexity") { + return jsonResult({ + error: "unsupported_model_override", + message: "model parameter is only supported by the Perplexity web_search provider.", + docs: "https://docs.molt.bot/tools/web", + }); + } const freshness = rawFreshness ? normalizeFreshness(rawFreshness) : undefined; if (rawFreshness && !freshness) { return jsonResult({ @@ -475,7 +489,7 @@ export function createWebSearchTool(options?: { perplexityAuth?.source, perplexityAuth?.apiKey, ), - perplexityModel: resolvePerplexityModel(perplexityConfig), + perplexityModel: modelOverride || resolvePerplexityModel(perplexityConfig), }); return jsonResult(result); },