A Retrieval-Augmented Generation (RAG) server that allows searching user documents and getting results for RAG applications. It monitors a document directory, ingests documents into a vector store (Chroma), and provides a search tool for semantic document retrieval.
Single tool with adequate but incomplete quality. Tool name 'RAG tool' lacks action verb and is generic; description is present but minimal (94 chars, below baseline avg of 194 chars). Input schema is properly defined with type and description, but output schema is undocumented, LLM cannot anticipate response structure. No error handling guidance, no parameter constraints, no security annotations. Tool is READ_ONLY (good) but lacks actionable error recovery patterns. This is typical C-grade community server territory.
This tool allows searching user documents and get results for RAG
Tool name lacks action verb. 'RAG tool' does not convey intent to LLM. Should be 'search_documents' or 'retrieve_documents' (pattern:tool requires verb_noun naming)
Description too short and generic. '94 chars' vs baseline avg '194 chars'. 'This tool allows searching user documents and get results for RAG' lacks WHEN to use it, WHAT is returned, and any dependencies. Does not meet pattern:tool-description
Output schema completely undocumented. LLM cannot predict response structure. Code shows JSON objects with 'score', 'file', 'text' fields are returned, but this is NOT visible in tool definition, only in implementation. Pattern:response-shaper requires documented return types.
No error handling guidance. Both retriever.Retrieve() and json.Marshal() failures return mcp.NewToolResultError(err.Error()). Raw error messages do not guide LLM recovery (missing pattern:recovery-guide). Example: retriever returns 'connection refused', LLM has no guidance on retry vs fallback.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 47 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 41 | - | v1 |
Parameter 'query' lacks constraints or format guidance. No length limits, no guidance on natural language vs keyword syntax, no hint about required minimum length. pattern:constrained-input and param validation rules violated.
No pagination support. Tool returns unbounded results (all matching documents). Large result sets will blow context windows. pattern:paginated-result requires limit/offset and total count. Code shows 'Results' config but no limit is documented or visible in tool schema.