Issue Checklist
Platform
Windows
Version
v1.9.6
Bug Description
The assistant could not parse results from the builtin web search tool corretly.
As is shown in the DevTools, the response of 'mcp' contained entire URL (between \nURL: and \nPublished), title (between Title: and \nURL) and main content (after \nHighlights:\n) of each search result.
{"result":{"content":[{"type":"text","text":"Title: v1.9.6\nURL: https://github.com/CherryHQ/cherry-studio/releases/tag/v1.9.6\nPublished: 2026-05-15T14:05:58.000Z\nAuthor: github-actions[bot]\nHighlights:\n# Release: CherryHQ/cherry-studio v1.9.6\n[...]\n- Repository: CherryHQ/cherry-studio | AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs | 46K stars | TypeScript\n- Author: [@github-actions[bot]](https://github.com/github-actions[bot])\n- Created: 2026-05-15T11:45:51Z\n- Published: 2026-05-15T14:05:58Z\n- Reactions: 🚀 3\n[...]\n## What's Changed\n[...]\n- fix(knowledge): preserve HTTP URLs in knowledge base documents by @Raymond8196 in https://github.com/CherryHQ/cherry-studio/pull/14983\n[...]\n- fix(ai): thread idle timeout handle to stream chunk adapter by @GeorgeDong32 in https://github.com/CherryHQ/cherry-studio/pull/15056\n[...]\n- fix(ci): improve GitCode sync reliability by @zhibisora in https://github.com/CherryHQ/cherry-studio/pull/15063\n[...]\n- fix(image): convert assistant image blocks to base64 for multi-turn editing by @Raymond8196 in https://github.com/CherryHQ/cherry-studio/pull/15011\n[...]\n- fix(agent): invalidate provider cache on settings changes by @404-Page-Found in https://github.com/CherryHQ/cherry-studio/pull/14596\n[...]\n- fix: recognize ctrl by uniKey value by @kovsu in https://github.com/CherryHQ/cherry-studio/pull/15002\n[...]\n- hotfix(aiCore): prevent crash when model.provider not found (#14999) by @DeJeune in https://github.com/CherryHQ/cherry-studio/pull/15001\n[...]\n- fix: align provider model list actions by @kangfenmao in https://github.com/CherryHQ/cherry-studio/pull/15078\n[...]\n- fix(agents): use task name as session name for cron task sessions by @Kingzi49 in https://github.com/CherryHQ/cherry-studio/pull/15053\n[...]\n- fix: resolve ENOENT in OpenMinerU preprocessing caused by MinerU ZIP structure change by @suujonH in https://github.com/CherryHQ/cherry-studio/pull/15061\n[...]\n- fix: clean up OAuth tokens when deleting MCP server by @xr843 in https://github.com/CherryHQ/cherry-studio/pull/14083\n[...]\n- fix: exclude deepseek-r1 models from function_calling capability by @404-Page-Found in https://github.com/CherryHQ/cherry-studio/pull/15102\n[...]\n- fix: auto-expand MCP tool approval card so action buttons are immediately visible by @LWWZH in https://github.com/CherryHQ/cherry-studio/pull/15080\n[...]\n- hotfix: add environment variable for claude code provider management by @kovsu in https://github.com/CherryHQ/cherry-studio/pull/15089\n[...]\n- fix(agents): preserve updatedAt timestamps when creating new agents by @LWWZH in https://github.com/CherryHQ/cherry-studio/pull/14675\n[...]\n- fix(aiCore): Qiniu PDF fallback for GPT-5.4 by @404-Page-Found in https://github.com/CherryHQ/cherry-studio/pull/15090\n[...]\n- fix(code-tools): handle Codex CLI reserved provider IDs by @GeorgeDong32 in https://github.com/CherryHQ/cherry-studio/pull/15068\n[...]\n- chore: release v1.9.6 by @kangfenmao in https://github.com/CherryHQ/cherry-studio/pull/15116\n[...]\n**Full Changelog**: https://github.com/CherryHQ/cherry-studio/compare/v1.9.5...v1.9.6\n\n---\n\nTitle: Releases · CherryHQ/cherry-studio - GitHub\nURL: https://github.com/CherryHQ/cherry-studio/releases\nPublished: N/A\nAuthor: CherryHQ\nHighlights:\n## What's Changed\n[...]\n- fix(knowledge): preserve HTTP URLs in knowledge base documents by@Raymond8196 in#14983\n[...]\n- fix(ai): thread idle timeout handle to stream chunk adapter by@GeorgeDong32 in#15056\n[...]\n- fix(ci): improve GitCode sync reliability by@zhibisora in#15063\n[...]\n- fix(image): convert assistant image blocks to base64 for multi-turn editing by@Raymond8196 in#15011\n[...]\n- fix(agent): invalidate provider cache on settings changes by@404-Page-Found in#14596\n[...]\n- fix: recognize ctrl by uniKey value by@kovsu in#15002\n[...]\n- hotfix(aiCore): prevent crash when model.provider not found (#14999) by@DeJeune in#15001\n[...]\n- fix: align provider model list actions by@kangfenmao in#15078\n[...]\n- fix(agents): use task name as session name for cron task sessions by@Kingzi49 in#15053\n[...]\n- fix: resolve ENOENT in OpenMinerU preprocessing caused by MinerU ZIP structure change by@suujonH in#15061\n[...]\n- fix: clean up OAuth tokens when deleting MCP server by@xr843 in#14083\n[...]\n- fix: exclude deepseek-r1 models from function_calling capability by@404-Page-Found in#15102\n[...]\n- fix: auto-expand MCP tool approval card so action buttons are immediately visible by@LWWZH in#15080\n[...]\n- hotfix: add environment variable for claude code provider management by@kovsu in#15089\n[...]\n- fix(agents): preserve updatedAt timestamps when creating new agents by@LWWZH in#14675\n[...]\n- fix(aiCore): Qiniu PDF fallback for GPT-5.4 by@404-Page-Found in#15090\n[...]\n- fix(code-tools): handle Codex CLI reserved provider IDs by@GeorgeDong32 in#15068\n[...]\n- chore: release v1.9.6 by@kangfenmao in#15116\n[...]\n## What's Changed\n[...]\n- fix(search): prevent empty activeTools when web search is the only tool by@TakotsuboChen in#14752\n[...]\n- hotfix(vertex): vertex model list fetch and improve service account setup by@ousugo in#14611\n[...]\n- fix(messages): prevent outer scrolling in horizontal multi-model layout by@Fu-Jumping in#14768\n[...]\n- fix(reasoning): use enable_thinking param for SiliconFlow DeepSeek/Zhipu models when reasoning_effort is none by@Raymond8196 in#14782\n[...]\n- feat(claw): add timeout_minutes parameter to cron tool by@xvweirong in#14707\n[...]\n- hotfix(gateway): bypass @ai-sdk/gateway schema for Vercel model listing by@DeJeune in#14772\n[...]\n- fix(api-server): strip trailing /v1 from Anthropic SDK baseURL by@Raymond8196 in#14818\n[...]\n- hotfix(feishu): use emoji reaction as typing indicator by@DeJeune in#14799\n[...]\n- hotfix(i18n): update default assistant and topic names on language switch by@Raymond8196 in#14607\n[...]\n- fix(anthropic): support Claude Opus 4.7 by@DeJeune in#14349\n[...]\n- hotfix(models): update DeepSeek default models to V4 by@ousugo in#14877\n[...]\n- fix(NewApiPage): restore generated image re-editing by@40\n[...]\nhotfix(models):detect routed DeepSeek\n[...]\n4 model slugs\n[...]\n- hotfix(models): support\n[...]\nby@ousugo in#14793\n[...]\n- fix(code-tools): disable opencode built-in auto-update check by@\n[...]\n8196 in#14925\n[...]\nhotfix(models): correct Tongyi model icon matching\n[...]\n(agent):\n[...]\n## What's Changed\n[...]\n- hotfix(models): add DeepSeek V4+ model support with reasoning effort\n[...]\n@SiinXu\n[...]\n#14551\n[...]\n- hotfix(copilot): github copilot model\n[...]\n#1456\n[...]\n- hotfix(models): add MiMo V2.5 model support by\n[...]\nousugo in#14557\n[...]\n- hotfix(deepseek): forward reasoning effort for DeepSeek V4+ via Claude endpoint by@DeJeune in#14572\n[...]\n- fix(models): add vision and reasoning_effort\n[...]\nmistral-small-260\n[...]\n- hotfix(agents): drop @cherry\n[...]\nauto-injection by@\n[...]\nin#14571\n[...]\n## What's Changed\n[...]\n## What's Changed\n[...]\nCherry Studio 1.9.1 - CherryClaw Agent & Skills System\n[...]\n] Add fl\n[...]\nas a built-in\n[...]\n[MCP] Add MCPWorld (m\n[...]\n) as a new\n[...]\n[Topics] Support pinning topics to\n[...]\n[Models] Add endpoint option for aionly\n[...]\nand update default models\n[...]\n## What's Changed\n[...]\n## What's Changed\n[...]\n## What's Changed\n[...]\n## What's Changed","_meta":{"searchTime":1265.4}}]},"jsonrpc":"2.0","id":1}
But the payload of the second 'completions' didn't contain entire URL or main content of each result. Instead, it only contained domain (in the 'url' key), title (in the 'title' key) and blank content of each result.
[{"type":"text","text":"This tool searches for relevant information and formats results for easy citation. The returned sources should be cited using [1], [2], etc. format in your response."},{"type":"text","text":"Found 2 relevant sources. Use [number] format to cite specific information."},{"type":"text","text":"Please answer the question based on the reference materials\n\n## Citation Rules:\n- Please cite the context at the end of sentences when appropriate.\n- Please use the format of citation number [number] to reference the context in corresponding parts of your answer.\n- If a sentence comes from multiple contexts, please list all relevant citation numbers, e.g., [1][2]. Remember not to group citations at the end but list them in the corresponding parts of your answer.\n- If all reference content is not relevant to the user's question, please answer based on your knowledge.\n\n## My question is:\n\nBased on the search results, please answer the user's question with proper citations.\n\n## Reference Materials:\n\n```json\n[\n {\n \"number\": 1,\n \"title\": \"v1.9.6\",\n \"content\": \"\",\n \"url\": \"https://github.com\"\n },\n {\n \"number\": 2,\n \"title\": \"Releases · CherryHQ/cherry-studio - GitHub\",\n \"content\": \"\",\n \"url\": \"https://github.com\"\n }\n]\n```\n\nPlease respond in the same language as the user's question.\n"}]
As a result, the assistant could only see the title of each search result, without the entire URL and main content.
This is not good for the assistant to make use of results from builtin_web_search tool and produce high-quality answer (as is shown in screenshots, the assistant thought it couldn't find specific information in the provided search results, because there were no content in provided results). Further, calling MCP tools such as fetchTxt for fetching detailed web content (which requires entire URLs) becomes difficult.
Steps To Reproduce
- Create a new topic with an assitant.
- Toggle the web search switch on. (In my example, the ExaMCP was chosen)
- [Optional] Toggle DevTools, monitor Network.
- Ask the assistant anything that needs to perform a web search.
- The assistant will give you answer indicating it cannot see the content of web search results.
Expected Behavior
The assistant should see the entire URL and content of each results from the builtin web search tool.
Relevant Log Output
Additional Context
No response
Issue Checklist
Platform
Windows
Version
v1.9.6
Bug Description
The assistant could not parse results from the builtin web search tool corretly.
As is shown in the DevTools, the response of 'mcp' contained entire URL (between
\nURL:and\nPublished), title (betweenTitle:and\nURL) and main content (after\nHighlights:\n) of each search result.{"result":{"content":[{"type":"text","text":"Title: v1.9.6\nURL: https://github.com/CherryHQ/cherry-studio/releases/tag/v1.9.6\nPublished: 2026-05-15T14:05:58.000Z\nAuthor: github-actions[bot]\nHighlights:\n# Release: CherryHQ/cherry-studio v1.9.6\n[...]\n- Repository: CherryHQ/cherry-studio | AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs | 46K stars | TypeScript\n- Author: [@github-actions[bot]](https://github.com/github-actions[bot])\n- Created: 2026-05-15T11:45:51Z\n- Published: 2026-05-15T14:05:58Z\n- Reactions: 🚀 3\n[...]\n## What's Changed\n[...]\n- fix(knowledge): preserve HTTP URLs in knowledge base documents by @Raymond8196 in https://github.com/CherryHQ/cherry-studio/pull/14983\n[...]\n- fix(ai): thread idle timeout handle to stream chunk adapter by @GeorgeDong32 in https://github.com/CherryHQ/cherry-studio/pull/15056\n[...]\n- fix(ci): improve GitCode sync reliability by @zhibisora in https://github.com/CherryHQ/cherry-studio/pull/15063\n[...]\n- fix(image): convert assistant image blocks to base64 for multi-turn editing by @Raymond8196 in https://github.com/CherryHQ/cherry-studio/pull/15011\n[...]\n- fix(agent): invalidate provider cache on settings changes by @404-Page-Found in https://github.com/CherryHQ/cherry-studio/pull/14596\n[...]\n- fix: recognize ctrl by uniKey value by @kovsu in https://github.com/CherryHQ/cherry-studio/pull/15002\n[...]\n- hotfix(aiCore): prevent crash when model.provider not found (#14999) by @DeJeune in https://github.com/CherryHQ/cherry-studio/pull/15001\n[...]\n- fix: align provider model list actions by @kangfenmao in https://github.com/CherryHQ/cherry-studio/pull/15078\n[...]\n- fix(agents): use task name as session name for cron task sessions by @Kingzi49 in https://github.com/CherryHQ/cherry-studio/pull/15053\n[...]\n- fix: resolve ENOENT in OpenMinerU preprocessing caused by MinerU ZIP structure change by @suujonH in https://github.com/CherryHQ/cherry-studio/pull/15061\n[...]\n- fix: clean up OAuth tokens when deleting MCP server by @xr843 in https://github.com/CherryHQ/cherry-studio/pull/14083\n[...]\n- fix: exclude deepseek-r1 models from function_calling capability by @404-Page-Found in https://github.com/CherryHQ/cherry-studio/pull/15102\n[...]\n- fix: auto-expand MCP tool approval card so action buttons are immediately visible by @LWWZH in https://github.com/CherryHQ/cherry-studio/pull/15080\n[...]\n- hotfix: add environment variable for claude code provider management by @kovsu in https://github.com/CherryHQ/cherry-studio/pull/15089\n[...]\n- fix(agents): preserve updatedAt timestamps when creating new agents by @LWWZH in https://github.com/CherryHQ/cherry-studio/pull/14675\n[...]\n- fix(aiCore): Qiniu PDF fallback for GPT-5.4 by @404-Page-Found in https://github.com/CherryHQ/cherry-studio/pull/15090\n[...]\n- fix(code-tools): handle Codex CLI reserved provider IDs by @GeorgeDong32 in https://github.com/CherryHQ/cherry-studio/pull/15068\n[...]\n- chore: release v1.9.6 by @kangfenmao in https://github.com/CherryHQ/cherry-studio/pull/15116\n[...]\n**Full Changelog**: https://github.com/CherryHQ/cherry-studio/compare/v1.9.5...v1.9.6\n\n---\n\nTitle: Releases · CherryHQ/cherry-studio - GitHub\nURL: https://github.com/CherryHQ/cherry-studio/releases\nPublished: N/A\nAuthor: CherryHQ\nHighlights:\n## What's Changed\n[...]\n- fix(knowledge): preserve HTTP URLs in knowledge base documents by@Raymond8196 in#14983\n[...]\n- fix(ai): thread idle timeout handle to stream chunk adapter by@GeorgeDong32 in#15056\n[...]\n- fix(ci): improve GitCode sync reliability by@zhibisora in#15063\n[...]\n- fix(image): convert assistant image blocks to base64 for multi-turn editing by@Raymond8196 in#15011\n[...]\n- fix(agent): invalidate provider cache on settings changes by@404-Page-Found in#14596\n[...]\n- fix: recognize ctrl by uniKey value by@kovsu in#15002\n[...]\n- hotfix(aiCore): prevent crash when model.provider not found (#14999) by@DeJeune in#15001\n[...]\n- fix: align provider model list actions by@kangfenmao in#15078\n[...]\n- fix(agents): use task name as session name for cron task sessions by@Kingzi49 in#15053\n[...]\n- fix: resolve ENOENT in OpenMinerU preprocessing caused by MinerU ZIP structure change by@suujonH in#15061\n[...]\n- fix: clean up OAuth tokens when deleting MCP server by@xr843 in#14083\n[...]\n- fix: exclude deepseek-r1 models from function_calling capability by@404-Page-Found in#15102\n[...]\n- fix: auto-expand MCP tool approval card so action buttons are immediately visible by@LWWZH in#15080\n[...]\n- hotfix: add environment variable for claude code provider management by@kovsu in#15089\n[...]\n- fix(agents): preserve updatedAt timestamps when creating new agents by@LWWZH in#14675\n[...]\n- fix(aiCore): Qiniu PDF fallback for GPT-5.4 by@404-Page-Found in#15090\n[...]\n- fix(code-tools): handle Codex CLI reserved provider IDs by@GeorgeDong32 in#15068\n[...]\n- chore: release v1.9.6 by@kangfenmao in#15116\n[...]\n## What's Changed\n[...]\n- fix(search): prevent empty activeTools when web search is the only tool by@TakotsuboChen in#14752\n[...]\n- hotfix(vertex): vertex model list fetch and improve service account setup by@ousugo in#14611\n[...]\n- fix(messages): prevent outer scrolling in horizontal multi-model layout by@Fu-Jumping in#14768\n[...]\n- fix(reasoning): use enable_thinking param for SiliconFlow DeepSeek/Zhipu models when reasoning_effort is none by@Raymond8196 in#14782\n[...]\n- feat(claw): add timeout_minutes parameter to cron tool by@xvweirong in#14707\n[...]\n- hotfix(gateway): bypass @ai-sdk/gateway schema for Vercel model listing by@DeJeune in#14772\n[...]\n- fix(api-server): strip trailing /v1 from Anthropic SDK baseURL by@Raymond8196 in#14818\n[...]\n- hotfix(feishu): use emoji reaction as typing indicator by@DeJeune in#14799\n[...]\n- hotfix(i18n): update default assistant and topic names on language switch by@Raymond8196 in#14607\n[...]\n- fix(anthropic): support Claude Opus 4.7 by@DeJeune in#14349\n[...]\n- hotfix(models): update DeepSeek default models to V4 by@ousugo in#14877\n[...]\n- fix(NewApiPage): restore generated image re-editing by@40\n[...]\nhotfix(models):detect routed DeepSeek\n[...]\n4 model slugs\n[...]\n- hotfix(models): support\n[...]\nby@ousugo in#14793\n[...]\n- fix(code-tools): disable opencode built-in auto-update check by@\n[...]\n8196 in#14925\n[...]\nhotfix(models): correct Tongyi model icon matching\n[...]\n(agent):\n[...]\n## What's Changed\n[...]\n- hotfix(models): add DeepSeek V4+ model support with reasoning effort\n[...]\n@SiinXu\n[...]\n#14551\n[...]\n- hotfix(copilot): github copilot model\n[...]\n#1456\n[...]\n- hotfix(models): add MiMo V2.5 model support by\n[...]\nousugo in#14557\n[...]\n- hotfix(deepseek): forward reasoning effort for DeepSeek V4+ via Claude endpoint by@DeJeune in#14572\n[...]\n- fix(models): add vision and reasoning_effort\n[...]\nmistral-small-260\n[...]\n- hotfix(agents): drop @cherry\n[...]\nauto-injection by@\n[...]\nin#14571\n[...]\n## What's Changed\n[...]\n## What's Changed\n[...]\nCherry Studio 1.9.1 - CherryClaw Agent & Skills System\n[...]\n] Add fl\n[...]\nas a built-in\n[...]\n[MCP] Add MCPWorld (m\n[...]\n) as a new\n[...]\n[Topics] Support pinning topics to\n[...]\n[Models] Add endpoint option for aionly\n[...]\nand update default models\n[...]\n## What's Changed\n[...]\n## What's Changed\n[...]\n## What's Changed\n[...]\n## What's Changed","_meta":{"searchTime":1265.4}}]},"jsonrpc":"2.0","id":1}But the payload of the second 'completions' didn't contain entire URL or main content of each result. Instead, it only contained domain (in the 'url' key), title (in the 'title' key) and blank content of each result.
[{"type":"text","text":"This tool searches for relevant information and formats results for easy citation. The returned sources should be cited using [1], [2], etc. format in your response."},{"type":"text","text":"Found 2 relevant sources. Use [number] format to cite specific information."},{"type":"text","text":"Please answer the question based on the reference materials\n\n## Citation Rules:\n- Please cite the context at the end of sentences when appropriate.\n- Please use the format of citation number [number] to reference the context in corresponding parts of your answer.\n- If a sentence comes from multiple contexts, please list all relevant citation numbers, e.g., [1][2]. Remember not to group citations at the end but list them in the corresponding parts of your answer.\n- If all reference content is not relevant to the user's question, please answer based on your knowledge.\n\n## My question is:\n\nBased on the search results, please answer the user's question with proper citations.\n\n## Reference Materials:\n\n```json\n[\n {\n \"number\": 1,\n \"title\": \"v1.9.6\",\n \"content\": \"\",\n \"url\": \"https://github.com\"\n },\n {\n \"number\": 2,\n \"title\": \"Releases · CherryHQ/cherry-studio - GitHub\",\n \"content\": \"\",\n \"url\": \"https://github.com\"\n }\n]\n```\n\nPlease respond in the same language as the user's question.\n"}]As a result, the assistant could only see the title of each search result, without the entire URL and main content.
This is not good for the assistant to make use of results from builtin_web_search tool and produce high-quality answer (as is shown in screenshots, the assistant thought it couldn't find specific information in the provided search results, because there were no content in provided results). Further, calling MCP tools such as fetchTxt for fetching detailed web content (which requires entire URLs) becomes difficult.
Steps To Reproduce
Expected Behavior
The assistant should see the entire URL and content of each results from the builtin web search tool.
Relevant Log Output
Additional Context
No response