聚合多个搜索引擎的搜索结果 (Aggregates search results from multiple search engines)
Two tools with significant definition gaps. bocha_search has a complete schema with proper types and descriptions, but web_search_tools has a critical flaw: the search_engines parameter lacks an explicit type definition in the schema (only enum values are shown in the description). Both tools have descriptions, but web_search_tools' description is bilingual and verbose (200+ chars), making it harder for LLMs to parse intent. Neither tool documents output schemas. Error handling is minimal, both return empty lists or error dicts without recovery guidance. No tool annotations (readOnlyHint, idempotentHint) despite being read-only operations.
Search using Bocha's Search API
聚合多个搜索引擎 (Baidu, DuckDuckGo, Bocha) 的搜索结果。它会为每个关键词调用指定的搜索引擎,并将结果聚合在一起。(Aggregates search results from multiple search engines - Baidu, DuckDuckGo, Bocha. Calls specified search engines for each keyword and aggregates results together.)
web_search_tools parameter 'search_engines' lacks explicit type definition in schema. Only enum values are documented in description text; JSON Schema type field is missing or inferred.
No output schemas documented for either tool. LLMs cannot predict return structure (fields, types, nesting). bocha_search returns a list; web_search_tools returns a Dict, neither is formally specified.
Error handling returns bare error dicts or empty lists without recovery guidance. 'error: HTTP error occurred' gives LLM no actionable next step. Should include 'Try again in 30s' or 'Check API key' hints.
bocha_search exposes 'api_key' as a required parameter. Credentials must never be tool parameters, use server-side secret injection via environment variables. Current design leaks secrets into agent traces.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | <=2025-11-25 | v2 |
web_search_tools description is bilingual (Chinese + English) and 200+ chars, exceeding the 10 - 1024 optimal range for clarity. Bilingual descriptions confuse LLM parsing. Separate into two tools or use English only.