MCP server for Research Copilot - provides web search, page fetch, and notes tools
Server has 5 tools with complete JSON schemas and descriptions. Naming follows verb_noun convention (web_search, fetch_page, save_note, list_notes, get_note). Descriptions are present but brief (avg 45 chars, below 194-char baseline). All parameters have type definitions and descriptions. However, output schemas are not documented, LLMs cannot predict response structure. Error handling exists but lacks recovery guidance. No tool annotations (readOnlyHint/destructiveHint). Parameter constraints are present (enums, defaults) but some descriptions lack format/range details.
Fetch and extract content from a web page
Get a single note by ID
List research notes with optional search and filtering
Save a research note
Search the web using DuckDuckGo or Serper
Output schemas not documented. LLMs cannot predict response structure (fields, types, pagination). Breaks downstream tool chaining and forces agents to guess field names.
Tool descriptions are too brief (avg 45 chars vs 194-char baseline). Missing WHEN to use, prerequisites, and state-modification warnings. E.g., save_note lacks 'creates persistent record' language.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Agents cannot determine which tools are safe to retry or have side effects. save_note is destructive but unmarked.
Error responses lack recovery guidance. MCPServerError thrown but no actionable next steps provided to LLM (e.g., 'Try search_users() first').
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 55 | <=2025-11-25 | v2 |
list_notes accepts limit/offset but response structure (total count, next_cursor) not documented. Pagination support unclear to LLM.