Model Context Protocol server for product catalog search and retrieval using semantic kernel, hybrid search, and AI-powered product discovery for an e-commerce platform
The server exposes one tool: HybridSearchProducts. While the tool has a description and visible input schema, there are significant gaps in definition quality. The description is adequate (176 chars) but lacks critical context about when to use this tool vs alternatives (no alternatives exist, but best practices require comparison guidance). The input schema is present with types and descriptions, but the output schema is not documented in the code, LLMs cannot determine what fields to expect from the response. The tool name is verb-driven ('HybridSearchProducts') but awkwardly structured (HybridSearch + Products is unclear; 'search_products_hybrid' would be clearer). Parameter descriptions are present but minimal. No error handling documentation. The response DTO shows a Products collection but doesn't document field-level structure for downstream tool calls.
Performs a hybrid products search combining semantic understanding with keyword matching for the most comprehensive results using vector database full-text search. Use this for complex queries where you want both conceptual understanding and exact keyword matching. Returns products with AI-powered insights.
Output schema not documented. The tool returns HybridSearchProductsProductsProductsToolResponse containing a Products collection, but the DTO structure and field descriptions are not visible in tool metadata. LLMs cannot infer what fields each product contains (e.g., does it include price, availability, images?) or how to chain results to other tools.
Tool name structure is unclear. 'HybridSearchProducts' doesn't follow verb_noun convention clearly. The prefix 'HybridSearch' is a compound adjective modifying an implicit 'Products' action, not a clear verb. Rename to 'search_products' with a 'search_type' parameter set to 'hybrid' by default, or clarify the name as 'search_products_with_hybrid_mode' to make the action explicit.
Parameter descriptions lack format and validation guidance. The 'keywords' parameter says 'Specific keywords to help refine the products search' but does not state: (a) expected format (comma-separated, array of individual terms?), (b) constraints (max count, max length per keyword), (c) whether keywords are optional and what happens if both query and keywords are provided. The 'query' parameter description has a typo ('describing for searching').
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 57 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 38 | - | v1 |
No error handling guidance. The tool description does not state what errors are possible (e.g., empty results, service unavailable, invalid query) or how the LLM should recover. Per pattern:recovery-guide, error responses should tell the agent what to do next.
No documentation of when to use this tool vs alternatives. The description says 'Use this for complex queries where you want both conceptual understanding and exact keyword matching' but there is only one search tool in the server. The description should clarify: is this hybrid mode always preferable, or are there cases where a simpler keyword-only or semantic-only search is more efficient?
Response DTO naming is verbose and confusing. 'HybridSearchProductsProductsProductsToolResponse' contains redundant 'Products' segments and does not match the intuitive output structure. The class should be 'SearchProductsResult' or 'ProductSearchResponse' with a clear 'products' field. Verbose DTOs increase cognitive load and risk naming mismatches between tool registration and actual response.