MCP server for storing and retrieving memories and knowledge base entries in Weaviate vector database
Three tools with basic schemas and descriptions, but significant gaps in parameter documentation and output schema clarity. Tool names lack action verbs (weaviate-store-memory vs store_memory). Descriptions are present but generic (10-50 chars for some). No parameter descriptions for 'information' and 'query' fields. No documented output schemas. No error handling guidance. No tool annotations (readOnlyHint/destructiveHint). Naming convention uses hyphens instead of underscores, deviating from standard verb_noun patterns.
Look up memories in Weaviate. Use this tool when you need to: - Find memories by their content - Access memories for further analysis - Get some personal information about the user
Search the knowledge base in Weaviate. Use this tool when you need to: - Find relevant information from the knowledge base - Access structured knowledge - Get factual information
Keep the memory for later use, when you are asked to remember something.
Tool names lack action verbs and use hyphens instead of underscores. 'weaviate-store-memory' should be 'store_memory' or 'create_memory'. LLMs infer intent from names, weak naming reduces tool discoverability.
Parameter 'information' in weaviate-store-memory has no description. Parameter 'query' in find/search tools lacks format guidance (e.g., natural language vs structured). LLMs cannot infer parameter semantics from names alone.
No output schemas documented. Tool descriptions do not specify what fields are returned or their types. LLMs cannot plan downstream tool calls or extract structured data from responses.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 48 | <=2025-11-25 | v2 |
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). weaviate-store-memory is destructive/write-capable but unmarked. Agents cannot distinguish safe reads from state-modifying calls.
Error handling in handle_tool_call() returns generic ValueError messages ('Missing required argument'). No recovery guidance, no actionable next steps for LLM. Errors should guide the agent toward resolution.