MCP Server for twfood.cc — 6 AI-callable tools for Taiwan agricultural wholesale market price data
Server has 6 well-named, read-only tools with consistent verb_noun naming (search_, get_). All tools have descriptions (avg 140 chars, within baseline 34-392). Input schemas are present with Pydantic Field descriptions. However, output schemas are NOT documented, responses are inferred from code inspection only. Parameter descriptions lack format constraints (e.g., date format YYYY/MM/DD is stated but not enforced via regex or enum). No error handling guidance, no pagination support despite tools returning potentially large datasets, and no indication of result limits. Missing tool annotations (readOnlyHint present implicitly via Risk field, but not in MCP schema). Date parameters accept free-form strings with no validation.
Get daily wholesale market trade data for an agricultural product. Returns transaction volume (kg), average/high/low prices (TWD/kg) per day.
Get recent transaction history across all Taiwan wholesale markets for a product. Returns per-market volume and price time series data.
Get monthly wholesale market trade summaries for an agricultural product. Returns transaction volume (kg) and average price (TWD/kg) per month.
Get weekly wholesale market trade summaries for an agricultural product. Returns transaction volume (kg), average price (TWD/kg), and total value per week.
Get yearly wholesale market trade summaries for an agricultural product. Historical data available back to 1996.
Search Taiwan agricultural products by name or item code. Returns matching products with their item codes for use in other trade data tools.
Output schemas not documented. Tool descriptions state what is returned (e.g., 'transaction volume (kg), average/high/low prices (TWD/kg)') but no formal schema is visible in tool registration. LLMs cannot plan downstream operations or extract fields reliably.
Date parameters (start_date) accept free-form strings with no validation. Description states 'YYYY/MM/DD format' but no regex pattern or enum constraint enforces it. LLMs may pass invalid dates like '2026-03-01' or '03/01/2026', causing silent API failures.
No pagination or result limits documented. search_products caps results at 50 in code but does not advertise this limit in the description. Other tools (get_daily_trades, get_market_history) return raw API responses with no documented upper bound, risking context window exhaustion.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | 2026-07-28+ | v2 |
No error handling guidance. Tools call api_get() with no visible error handling or recovery hints. If an invalid item_code is passed, the LLM receives a raw API error with no suggestion to call search_products first.
Tool annotations missing from MCP schema. Risk field (READ_ONLY) is present in metadata but not exposed as readOnlyHint in the MCP tool definition, preventing clients from rendering appropriate UI hints.