A Model Context Protocol server for Bocha AI search capabilities, providing web search, AI-enhanced semantic search, and local search history management.
Bocha Search MCP has 5 tools with complete input schemas and descriptions. Naming follows verb_noun convention (bocha_web_search, bocha_history_list). However, descriptions are generic and lack LLM-optimized guidance on WHEN to use each tool vs alternatives. Parameter descriptions exist but lack constraints (e.g., freshness enum values are listed in description text, not as formal enum schema). Output schemas are not documented, LLMs cannot predict response structure. Error handling returns plain text without recovery guidance. No tool annotations (readOnlyHint, idempotentHint). Composition is sound: tools are single-responsibility and chainable (history_list → history_get). Security: API key injected via environment, not exposed as parameter.
Search with Bocha AI Search, recognizes the semantics of search terms and additionally returns structured modal cards with content from vertical domains.
Show detailed usage guidance and examples for Bocha MCP tools.
Get one full local history record by id.
List recent local search history with optional filters and pagination.
Search with Bocha Web Search and get enhanced search details from billions of web documents, including page titles, urls, summaries, site names, site icons, publication dates, image links, and more.
Output schemas not documented. LLMs cannot predict response structure (fields, types, nesting). bocha_web_search returns formatted text with Title/URL/Description/Published date/Site name, but this is implicit in code, not declared in tool schema.
Parameter constraints not formalized as JSON Schema enums. freshness accepts 'noLimit', 'oneYear', 'oneMonth', 'oneWeek', 'oneDay', 'YYYY-MM-DD', 'YYYY-MM-DD..YYYY-MM-DD', listed in description text but not as enum constraint. LLMs may hallucinate invalid values like 'twoWeeks'.
Error responses lack recovery guidance. bocha_web_search returns 'Error: Bocha API key is not configured' but does not suggest next steps (e.g., 'Set BOCHA_API_KEY environment variable'). HTTP errors return raw exception text without actionable guidance.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 66 | 2026-07-28+ | v2 |
Tool descriptions lack WHEN-to-use guidance. bocha_web_search and bocha_ai_search both search the web, descriptions do not explain when to prefer one over the other. LLMs must guess based on names alone.
No tool annotations. Tools lack readOnlyHint, idempotentHint, or destructiveHint. LLMs cannot determine which tools are safe to retry or which modify state. All 5 tools are read-only but this is not declared.