MCP server for accessing E-Tender platform data including trade listings, categories, regions, currencies, and products from the Uzbek E-Tender system (etender.uzex.uz)
Server provides 6 tools with complete input schemas and descriptions. Naming follows verb_noun pattern (GetCategories, GetRegions, etc.). However, descriptions lack LLM-optimized guidance on WHEN to use each tool vs alternatives, and parameter descriptions are minimal (avg 40 chars vs baseline 72). Output schemas are not documented, LLMs cannot predict response structure. GetProducts has a confusing 'keyword' parameter marked optional when the description says 'must be filtered by category ID', creating ambiguity. GetTodayTradeList is complex (16 params) but lacks guidance on mutually exclusive or dependent parameters. No error handling documentation visible. Tool descriptions average 150 chars (within baseline 194), but lack dependency hints and recovery guidance.
Search trade categories by keyword substring. Data is in Russian - provide Russian keywords for best results (e.g. 'пищ' for food, 'текстиль' for textile).
Search currencies by keyword or currency code (e.g. 'USD', 'EUR', or Russian description).
Get products by keyword substring, must be filtered by category ID. Data is in Russian.
Search regions by keyword substring. Data is in Uzbek. (e.g. Toshkent, Farg'ona)
Get today's trade list from E-Tender platform with optional filters. Supports multiple IDs for category/region/currency/product - server will fan out parallel API calls and merge results. Includes a URL in response to view on official page.
Get detailed information about a specific trade by ID including a URL to view on official page.
Output schemas not documented. LLMs cannot predict response structure (CategoryItem, RegionItem, FrontTradeListItem fields). Responses are JSON-serialized but field names, types, and required fields are invisible to the agent.
GetProducts parameter 'keyword' is marked optional but description says 'must be filtered by category ID'. Ambiguity: does the tool require categoryId, or is it truly optional? LLMs will guess wrong.
GetTodayTradeList has 16 parameters with no documentation of dependencies or mutual exclusivity. E.g., are regionIds and districtId mutually exclusive? Can both be passed? LLM must guess.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 47 | 2026-07-28+ | v2 |
No error handling guidance. If an invalid categoryId is passed to GetProducts, what error is returned? How should the LLM recover? No recovery hints provided.
Parameter descriptions are minimal (avg 40 chars vs baseline 72). E.g., 'Search keyword (Russian recommended)' lacks format constraints, range, or examples of valid input. LLMs cannot validate before calling.