MCP server for RagyApp - provides tools for RAG (Retrieval Augmented Generation) operations including web search, database extraction, and system health checks
Server has 5 tools with basic descriptions and input schemas. Naming follows verb_noun convention (list_, search_, extract_, get_, health_check). However, descriptions are generic and lack actionable context for LLM selection. Parameters have types but descriptions are minimal. Output schemas are not documented, tools return unstructured strings rather than typed objects. Error handling returns raw error messages without recovery guidance. No tool annotations (readOnlyHint, etc.). Composition is reasonable but output formatting is suboptimal for agent reasoning.
Extract relevant days from a collection based on similarity search. Searches the specified collection for documents most similar to the query and returns the top K results with dates, scores, and content.
Get comprehensive database statistics. Returns information about all collections including document counts, total documents in database, and collection names.
Check API server health status. Verifies that the RagyApp API server is running and accessible.
List all available collections in the database. Returns a comma-separated list of collection names that can be used for extract, search, or other operations.
Search the web for current information using Tavily API. Returns relevant web results including titles and URLs.
All tools return unstructured string responses instead of typed JSON objects. LLMs cannot reliably parse free-text output or chain results to downstream tools. Example: extract_all returns formatted text; should return {results: [{date, score, content}], total_count}.
Parameter descriptions are minimal or missing context. 'query' in extract_all lacks guidance on expected format or length. 'top_k' has no bounds (min/max). LLMs cannot validate inputs without explicit constraints.
Tool descriptions lack WHEN/WHY context. 'Extract relevant days from a collection' does not explain when to use extract_all vs search_web, or what 'relevant' means. LLMs cannot disambiguate tool selection.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 53 | 2026-07-28+ | v2 |
Error handling returns raw HTTP status codes and exception strings ('Error: 404 - Not Found'). No recovery guidance. LLMs cannot determine if error is retryable, user-fixable, or fatal.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). All tools are read-only but this is not declared in schema. Agents cannot infer safety properties.