Multi-Agent Research MCP server - fully compliant with Anthropic's multi-agent architecture for deep research with Google Custom Search integration
This server implements 5 research-focused tools with partial schema definitions visible in the code. All tools have descriptions, but critical issues emerge: (1) parameter descriptions are minimal or absent, (2) output schemas are not documented in the tool registration, (3) error handling lacks recovery guidance, (4) no validation of parameter constraints (e.g., numResults max 10), and (5) the codebase shows sophisticated internal architecture (multi-agent, sessions, subagents, memory) but this complexity is not reflected in the tool interface, tools accept only topic/sessionId but do not expose depth selection, session management, or iteration control, limiting composability. The deep_research tool promises a 'multi-agent architecture with parallel aspect-based research' but the tool definition does not reflect the rich internal state or allow users to influence the research process. Tools are read-only, which is a positive security posture, but the interface is underdeveloped for production use.
Conducts comprehensive research on any topic using multi-agent architecture with parallel aspect-based research, iterative evaluation, and dynamic gap detection with adaptive stopping
Fetches and extracts readable content from a given URL with HTML parsing and cleaning
Retrieves the final synthesized research report with citations from a completed session
Retrieves the current state and progress of an ongoing research session
Performs a Google Custom Search query and returns top results with snippets
No output schemas documented for any tool. Tools define input parameters but do not declare what they return. LLMs cannot plan downstream tool calls or extract the right data without knowing the response structure.
Parameter descriptions are missing or minimal. 'sessionId' in get_session and get_report has no description. 'maxLength' in fetch_content lacks default/timeout context. 'numResults' in search does not explain constraint enforcement. Per pattern:tool-description, every parameter needs a description explaining what it controls.
No error handling or recovery guidance. If GOOGLE_API_KEY is missing, googleSearch throws 'Missing GOOGLE_API_KEY or GOOGLE_CX environment variables'. If a URL fetch times out or returns binary, the tool silently returns empty string or '[Binary content - skipped]'. Per pattern:recovery-guide, error responses must tell the LLM what to do next.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 44 | 2026-07-28+ | v2 |
Tool interface does not expose internal complexity. The code implements a sophisticated multi-agent research architecture with iteration control, gap detection, aspect decomposition, and coverage scoring. None of this is reflected in the tool definitions. deep_research accepts only 'topic' and 'depth', no control over max iterations, subagent count, stopping criteria, or report format. This breaks composability: users cannot influence the research process.
Tool composition is unclear. 'search' and 'deep_research' both perform research, when should an LLM choose one vs the other? 'deep_research' calls 'search' internally, but this is not documented. Per pattern:tool-chain, ensure tool A's output contains the IDs and references tool B needs, and make the distinction obvious.
Parameter constraints not validated or documented consistently. 'numResults' says 'max 10' in description but not enforced in schema (no maxProperties). 'depth' uses enum (good), but does not clarify what 'basic', 'moderate', 'comprehensive' map to in the code (60%, 75%, 90% coverage). Per pattern:constrained-input, formal constraints are machine-parseable and prevent hallucination.
Session/report lifecycle not documented. get_session and get_report depend on sessionId from deep_research, but deep_research's output schema is not declared. LLMs cannot reliably extract sessionId without seeing the output structure. Per pattern:tool-description, describe WHEN to use each tool and any prerequisites.