A unified Model Context Protocol Gateway for managing tools and plugins
This MCP server has foundational tool definitions but suffers from incomplete schema documentation, missing parameter descriptions, and vague implementation status. Only 2 tools are defined. Both tools have basic descriptions and input parameter declarations, but lack documented output schemas and comprehensive error handling guidance. The codebase shows placeholder implementations ('will be implemented properly in future milestones'), indicating the server is pre-release quality. Tool names follow verb_noun convention (brave_web_search, local_search) which is positive, but parameter descriptions are minimal and output structure is not specified anywhere in the visible code.
Performs a web search using the Brave Search API
Perform a local search using Brave Search API
Output schemas are not documented. Neither tool specifies what fields are returned, their types, or structure. The code shows only placeholder returns ('will be fully implemented in Milestone 2.4'). LLMs cannot plan downstream tool chains or extract needed data without knowing output structure.
Parameter descriptions are present but minimal (5-15 words). For example, 'count' is described only as 'Number of results (default: 10)' with no guidance on valid range (1-100? 1-1000?), when the default applies, or whether it is optional. LLMs cannot validate their own input against unstated constraints.
Tool descriptions lack context on when to use each tool. 'Performs a web search using the Brave Search API' does not explain when to call brave_web_search vs local_search, what qualifies as a 'local' search, or what types of queries each is optimized for.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 51 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 28 | - | v1 |
Implementation is incomplete and explicitly marked as placeholder. The BraveSearchTool._web_search() method in app/tools/brave_search/tool.py returns hardcoded placeholder data with no actual API integration. The tool cannot be used in production.
No error handling guidance. Neither tool documents what errors might occur (API down, invalid query, rate limit, authentication failure), how they are classified (retryable vs fatal), or what an LLM should do next. Returning a raw HTTP 500 gives the agent nothing to act on.
The 'count' parameter accepts an integer with no stated bounds. Unbounded numeric parameters let LLMs pass absurd values (e.g. count=999999) that may break rate limits or exhaust resources.
Brave Search API key is expected to be injected via settings (app.core.config), but no documentation shows how to configure it or what happens if it is missing.