MCP Server that uses Brave Search API to search for images, general web search, video, news and points of interest.
This is a well-structured search toolkit with 6 clearly-defined tools. All tools have explicit names, descriptions, and input schemas visible in tool-catalog.ts. Naming is consistent (brave_* prefix) and action-oriented. Descriptions are detailed and explain WHEN to use each tool (distinguishing brave_web_search from brave_llm_context_search, for example). Input schemas are complete with proper JSON Schema types, constraints (enums, min/max), and parameter descriptions. However, there are gaps: no output schemas documented, no tool annotations (readOnlyHint, idempotentHint), no error handling guidance, and descriptions for brave_image_search and brave_video_search are generic. The server demonstrates strong fundamentals but lacks production-grade polish in output documentation and error recovery patterns.
A tool for searching the web for images using the Brave Search API.
Best for questions that require reading and synthesizing web page content, such as "how does X work", "explain Y in detail", or "what are the tradeoffs of Z". Returns extracted text from web pages rather than just titles and descriptions. Also useful for extracting text from a specific URL. Not needed for simple factual lookups — use brave_web_search for those.
Searches for local businesses and places using Brave's Local Search API. Best for queries related to physical locations, businesses, restaurants, services, etc. Returns detailed information including: - Business names and addresses - Ratings and review counts - Phone numbers and opening hours Use this when the query implies 'near me' or mentions specific locations. Automatically falls back to web search on the first page if no local results are found.
Searches for news articles and returns titles, URLs, and short descriptions — not the full article content. Use this to find recent events or trending topics. Maximum 20 results per request.
brave_image_search and brave_video_search have minimal descriptions ('A tool for searching...'). Descriptions lack WHEN to use this tool, distinction from alternatives, or what to expect. At 61 and 68 characters respectively, they fall below the 10 - 1024 character guideline and provide insufficient context for LLM tool selection.
No output schemas documented for any tool. Rubric requires 'Document the output schema. LLMs need to know what fields to expect so they can plan downstream tool calls.' Without documented return types (e.g., what fields are in a search result, what IDs are returned, pagination hints), downstream tool composition is hindered and LLMs cannot reason about result structure.
Inferred effective spec: 2025-06-18+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 64 | 2025-06-18+ | v2 |
| 2026-03-09 | B | 71 | - | v1 |
Searches for videos using the Brave Search API. Use this for video content, tutorials, or any media-related queries. Returns a list of videos with titles, URLs, and descriptions. Maximum 20 results per request.
Performs a web search and returns titles, URLs, and short descriptions — not the full content of the pages. Use this to discover sources or get an overview of what is available on a topic. Maximum 20 results per request.
No tool annotations present. No readOnlyHint, idempotentHint, or destructiveHint fields. All tools are read-only and idempotent, but the protocol does not formally declare this, reducing clarity for sophisticated agent frameworks that reason about side effects.
No error handling guidance or recovery patterns. If a search returns 0 results, times out, hits rate limits, or receives invalid input, there is no documented error response or guidance on what the LLM should do next. Rubric requires 'Error responses must tell the LLM what to do next.'
brave_llm_context_search has many optional parameters (count, maximumNumberOfUrls, maximumNumberOfTokens, etc.) with complex defaults that vary by mode. The interdependencies between responseMode ('compact' vs 'full') and parameter behavior are not fully documented. For example, maxSnippetChars applies only in compact mode, this must be stated explicitly in the parameter description.