An MCP Server for RAG Web Browser Actor
Single tool 'search' has well-structured schema with all parameters typed and described. Tool description is clear and actionable (120 chars). Input schema uses Zod validation with comprehensive descriptions for all 5 parameters including constraints (min/max, enums, defaults). Parameter descriptions average ~90 chars and include use cases. However, no output schema is documented, the tool returns JSON from an external API without specifying what fields to expect. No error handling guidance for common failure modes (network, timeout, invalid queries, rate limits). Tool name 'search' is generic and could benefit from a verb prefix ('search_web' would be clearer), though it is functional. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) present. The server does not follow composition patterns for multi-step workflows, agents cannot easily chain this tool with others due to undocumented output structure.
Search phrase or a URL at Google and return crawled web pages as text or Markdown. Prefer HTTP raw client for speed and browser-playwright for reliability.
Output schema not documented. Tool returns JSON from external API (callRagWebBrowser) but server does not specify what fields the response contains, what type each field is, or what the agent should expect to extract. This forces the LLM to infer output structure and risks extraction errors.
No error handling guidance. When the Apify API returns 4xx/5xx errors, the server throws a generic 'Failed to call RAG Web Browser: {statusText}' with no recovery hints. Agents have no guidance on whether to retry, ask the user, or proceed differently. Missing: categorization of errors (retryable vs fatal), actionable recovery steps, and error-specific messages.
Tool name 'search' is generic and ambiguous. It does not start with an action verb that clearly distinguishes it from other search-like tools. 'search_web' or 'search_google' would signal intent more clearly and reduce LLM confusion when multiple search tools are available.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 68 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 48 | - | v1 |
Parameter description for 'query' contains example values that LLMs may reuse literally. Examples like 'https://www.cnn.com' and 'function calling site:openai.com' in the description invite the LLM to pass the exact same values in real calls. Should move examples to constraints (enums/patterns) or remove them.
No tool annotations. The 'search' tool lacks readOnlyHint, destructiveHint, and idempotentHint annotations. The tool is read-only and idempotent (safe to retry), but agents cannot automatically infer this without explicit annotations in the schema.