An MCP server providing web automation (Puppeteer), web search (Brave Search), and calculator tools without authentication
Server has 11 tools with explicit schemas and descriptions, but quality is inconsistent. Puppeteer tools (navigate, screenshot, click, fill, select, hover, evaluate) have adequate naming and basic descriptions, but lack output schema documentation and error recovery guidance. Brave search tools have better descriptions (~150-200 chars) explaining use cases and fallback behavior. Calculator tools are trivial. Critical gaps: no tool annotations (readOnlyHint/destructiveHint), no documented output schemas, no error classification or recovery guidance, and dangerous security patterns (allowDangerous flag, arbitrary JavaScript execution). Descriptions average ~100 chars but lack WHEN/WHY context for LLM selection.
Simple addition tool
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 if no local results are found.
Performs a web search using the Brave Search API, ideal for general queries, news, articles, and online content. Use this for broad information gathering, recent events, or when you need diverse web sources. Supports pagination, content filtering, and freshness controls. Maximum 20 results per request, with offset for pagination.
Calculator tool with multiple operations
Click an element on the page
No output schemas documented. Tools return CallToolResult with TextContent/ImageContent, but LLMs cannot plan downstream calls without knowing field structure (e.g., does screenshot return base64, URI, or file path?). Breaks tool chaining.
puppeteer_evaluate allows arbitrary JavaScript execution with no sandboxing, input validation, or error recovery guidance. Agents can be tricked into executing malicious code. No description of security implications or safe usage patterns.
allowDangerous parameter in puppeteer_navigate exposes dangerous browser args (--no-sandbox, --disable-web-security) as a tool parameter. Credentials/secrets should never be tool params. This pattern invites security bypasses and should use server-side environment config only.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | 2026-07-28+ | v2 |
Execute JavaScript in the browser console
Fill out an input field
Hover an element on the page
Navigate to a URL
Take a screenshot of the current page or a specific element
Select an element on the page with Select tag
Puppeteer tools lack error classification and recovery guidance. No distinction between retryable errors (network timeout), user-fixable errors (invalid selector), and fatal errors (browser crash). LLMs cannot decide whether to retry, ask user, or abort.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). LLMs cannot determine which tools are safe to retry or have side effects. puppeteer_click, puppeteer_fill, puppeteer_select, puppeteer_evaluate are destructive but unmarked.