MCP server providing agricultural advisory tools for Bangladeshi farmers, including weather forecasts, market prices, and pesticide safety checks.
Three tools with basic verb-noun naming (get_weather, get_market_price, check_pesticide_safety). All have descriptions (60-120 chars, within acceptable range). Input schemas present with type and description for each parameter. However, output schemas are NOT documented, LLMs cannot predict return structure. No error handling guidance (e.g., 'If district not found, try search_districts'). No parameter constraints (enums, ranges). Tool descriptions lack WHEN/WHY context. No tool annotations (readOnlyHint, idempotentHint). Composition is sound (each tool does one thing), but descriptions are minimal and output contracts are invisible.
Check if a pesticide or agro-chemical is banned or restricted in Bangladesh.
Get the indicative market price (in BDT/kg) for a common crop in Bangladesh. Note: These are sample/indicative prices only, not live-scraped.
Get current weather and short forecast for a Bangladeshi district.
Output schemas not documented. LLMs cannot predict return structure (fields, types, nesting). Agents must infer from examples or fail.
No error recovery guidance. get_weather returns {error: ...} on invalid district, but description does not say 'Try search_districts() or list valid districts.' Agents cannot self-correct.
Parameter descriptions lack format/constraint details. 'district' and 'crop' accept free-form strings with no enum, pattern, or valid-value list. Agents may hallucinate invalid inputs.
Tool descriptions lack WHEN/WHY context. 'Get current weather...' does not explain when to call this vs. a forecast tool, or what the agent should do with the result.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 46 | 2026-07-28+ | v2 |
No tool annotations (readOnlyHint, idempotentHint). All three tools are read-only and idempotent, but this is not declared. Agents cannot optimize retry logic or caching.