A Model Context Protocol server for the Zava sales database that provides tools for database schema retrieval, sales query execution, semantic product search, and time utilities
The server defines 5 tools with generally clear names and descriptions, but critical gaps in schema completeness, parameter documentation, and error handling prevent a higher score. Tool names follow verb-noun conventions (Get*, Execute*, Search*) which is good. Descriptions are present but vary in quality, some provide helpful context (ExecuteSalesQueryAsync includes detailed guidance on composition and limits), while others are minimal (Echo). Input schemas are visible but incomplete: most parameters lack explicit type constraints and enum declarations. Output schemas are NOT documented, which violates the requirement that LLMs understand what fields to expect. Error handling is minimal, no recovery guidance or classification. The server is HTTP-based (positive) but exhibits no advanced MCP features (annotations, MRTR, per-request logLevel). This is a serviceable but not production-ready tool set.
Echoes the provided message back to the caller.
Run a PostgreSQL query against the sales database by first using get_multiple_table_schemas() to retrieve schemas for any tables you haven't yet obtained, then, if your query depends on the current date or time, call get_current_utc_date() to get the current UTC date/time. Always compose your SQL using the exact table and column names from these schemas, and pass the query to this tool for execution. For more readable results, join related tables to show descriptive fields such as customer names, product names, store names, and category names; distinguish online and physical stores using the is_online flag (for example, CASE WHEN s.is_online THEN 'Online' ELSE 'Physical' END AS store_type); and, unless the user specifically asks for raw data, prefer aggregated results using functions like SUM, AVG, COUNT, and GROUP BY. ALWAYS Limit the number of rows returned to 20 or fewer to avoid overwhelming the user with too much data and explain that results are limited for performance and readability.
Get the current UTC date and time in ISO format. Useful for date-based queries, filtering recent data, or understanding the current context for time-sensitive analysis.
Retrieve schemas for multiple tables. Use this tool only for schemas you have not already fetched during the conversation.
Search for Zava products using natural language descriptions to find matches based on semantic similarity—considering functionality, form, use, and other attributes.
NO OUTPUT SCHEMAS DOCUMENTED. LLMs cannot infer what fields to expect in responses. ExecuteSalesQueryAsync does not specify whether results are JSON objects or arrays; SemanticSearchProductsAsync does not list product fields; GetMultipleTableSchemasAsync returns formatted text but schema structure is not defined.
MISSING INPUT CONSTRAINTS. Parameters lack enum declarations, min/max bounds, and regex patterns. SemanticSearchProductsAsync.similarityThreshold accepts 20 - 80 (documented in description only, not schema). ExecuteSalesQueryAsync.query is a free-form string with no validation guidance. LLMs cannot self-validate.
MINIMAL/INADEQUATE DESCRIPTIONS. Echo tool has only 13-character description, 'Echoes the provided message back to the caller.' This fails the 10 - 1024 guideline (too short to provide context for selection). No justification for why an agent would use this tool.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 57 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 46 | - | v1 |
NO ERROR HANDLING GUIDANCE. Tools do not return recovery-focused error messages. ExecuteSalesQueryAsync mentions limiting rows in description but does not document what happens if a query times out or returns an error. No error classification (retryable, user-fixable, fatal).
PAGINATION NOT IMPLEMENTED. SemanticSearchProductsAsync and GetMultipleTableSchemasAsync accept optional limits but do not document how to paginate through results. No next_cursor or offset support visible. Large result sets could exceed context windows.