MCP server for Get Notes API integration with multi-knowledge base support
The server has 3 well-named tools with explicit descriptions and JSON Schema definitions visible in index.js. However, critical gaps emerge: (1) Parameter descriptions are sparse and sometimes vague. The 'deep_seek' and 'intent_rewrite' boolean flags lack context on when/why to use them. (2) Output schemas are entirely undocumented, the tool descriptions say 'Returns synthesized answers' and 'Returns list of relevant notes/files' but provide no structured field definitions. (3) Error handling is minimal, the code throws generic 'Knowledge base not found' errors with no recovery guidance. (4) The history parameter in search_knowledge is an array of objects but lacks detailed schema for role/content constraints. This is a functional server with decent naming and basic structure, but falls short of production-grade definition quality.
List available knowledge bases with their IDs and descriptions. You MUST use this tool first to find the correct kb_id for search_knowledge or recall_knowledge.
Raw recall from knowledge base without AI synthesis. Returns list of relevant notes/files.
Search knowledge base with AI processing. Returns synthesized answers and references.
Output schemas are completely undocumented. search_knowledge and recall_knowledge return JSON but tool descriptions provide no field structure, nesting, or field semantics. LLMs cannot plan downstream tool calls or extract data reliably.
Parameter descriptions are missing or vague for control flags. 'deep_seek' and 'intent_rewrite' have placeholder descriptions ('Enable deep thinking mode', 'Enable intent rewrite') with no explanation of when/why an LLM should set these or what the performance/quality tradeoff is.
Error handling provides no recovery guidance. Code throws 'Knowledge base not found: <kb_id>' but does not suggest calling list_knowledge_bases() first or offer available KB names. Agents receive a bare error with no actionable next step.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 9 | <=2025-11-25 | v2 |
| 2026-03-09 | D | 53 | - | v1 |
The history parameter in search_knowledge is an array of role/content objects but the schema does not document whether role is an enum constraint, whether content is required for all items, or whether empty arrays are valid. LLMs will guess.
No guidance on parameter dependencies or exclusivity. If kb_id is optional (can default to first KB), this is not stated in any parameter description. LLMs will pass kb_id even when not needed, wasting tokens. The condition 'Optional if only one KB is configured' is not testable by LLMs.
No range constraints on numeric parameter top_k. The description says 'Number of results to return' with default 10, but does not specify min/max. Can LLMs pass top_k=0? top_k=999999? This invites invalid API calls.