MCP server that provides hybrid semantic search (vector + lexical FTS5 with RRF fusion) across AnythingLLM laboratory memory, document retrieval, and health monitoring capabilities.
Three tools with complete input schemas and descriptions. search_memory has sophisticated parameter set (11 params) with good descriptions; get_document and gateway_health are simpler. All tools have verb-noun naming and non-empty descriptions (194-200 chars, within baseline 34-392 range). However, output schemas are not documented in the source code, LLMs cannot see what fields to expect from responses. No error handling guidance visible. Parameters lack enum constraints where applicable (e.g., 'tier' accepts 'episodic|semantic|procedural' but not declared as enum; 'group_by' accepts 'chunk|document' but not constrained). No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite all three being read-only operations.
Check health and operational state of vector and lexical retrieval layers.
Fetch the full raw text content of a document by doc_id or path.
Hybrid semantic search across laboratory memory (vector + lexical FTS5, RRF fusion).
Output schemas not documented. LLMs cannot see what fields search_memory, get_document, or gateway_health return. This forces agents to guess at response structure and breaks downstream tool chaining.
Enum constraints not declared in schema. 'tier' parameter accepts 'episodic|semantic|procedural' and 'group_by' accepts 'chunk|document', but these are documented only in descriptions, not as JSON Schema enums. LLMs may hallucinate invalid values.
No tool annotations despite all three tools being read-only. Missing readOnlyHint in schema would help agents understand these are safe to retry and do not modify state.
No error handling guidance in descriptions. Tools do not explain what to do if search fails, document not found, or health check fails. Agents have no recovery path.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 62 | 2026-07-28+ | v2 |
search_memory has 11 parameters with many numeric ranges (top_k max 25, max_token_budget, max_context_chars default 4000) but no min/max constraints visible in schema. Unbounded numbers risk invalid API calls.