A Streamlit-based AI portfolio application featuring multi-agent LangGraph workflows for Harry Potter & Indian Mythology analysis, Airbnb travel search, clustering algorithms, and image classification with various deep learning models.
This MCP server has critical definition quality issues. The three tools (DuckDuckGoSearch, retrieve_context, airbnb_search) have parameter schemas present but lack proper descriptions, exhibit poor naming conventions, and show no evidence of output schema documentation. Tool descriptions are present but generic and lack context about when to use each tool or what to expect from results. Parameters have type definitions and descriptions are present at a basic level, but lack the actionable detail and constraint specifications required for LLM tool selection and error recovery. No error handling guidance is visible. The airbnb_search tool is particularly problematic, it requires date strings in YYYY-MM-DD format but doesn't explain what happens if dates are invalid or in the past. retrieve_context returns documents from Qdrant but doesn't document the structure of returned results or ranking methodology. Overall, the definitions would cause LLMs to guess at proper invocation patterns and struggle with error recovery.
Use this tool to perform a DuckDuckGo web search and return JSON-formatted results. Input: a search query string; Output: a JSON array of search results.
Search for available Airbnb stays with specified location, check-in/check-out dates, and guest configuration
Retrieve and rerank documents from Qdrant Cloud Vector Store using OpenAI Embeddings and Cohere Reranker API
No output schema documentation for any tool. LLMs cannot plan downstream operations or know what fields to extract from responses.
Tool descriptions lack actionable context: no explanation of WHEN to use each tool vs alternatives, no indication of prerequisites, no guidance on result limits or pagination.
airbnb_search requires dates in YYYY-MM-DD format but provides no validation error guidance. Invalid dates (past dates, malformed strings) will fail silently with no recovery hint for the LLM.
retrieve_context accepts 'n_docs' (default=8) but doesn't explain result pagination, total count, or what happens when the database has fewer than n_docs matching documents.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 41 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 22 | - | v1 |
DuckDuckGoSearch description claims output is 'JSON array of search results' but doesn't document the fields in each result object (title, snippet, URL, etc.) that the LLM should expect.
retrieve_context uses OpenAI Embeddings and Cohere Reranker, these are backend details that should not appear in the tool description. LLMs don't care how it works internally; they need to know what it returns and when to use it.