An AI farming assistant for Indian farmers that diagnoses crop diseases, provides mandi prices, weather forecasts, and government scheme information through MCP tools.
Three tools with clear action verbs and reasonable descriptions (120-180 chars each). All parameters have type definitions and descriptions. However, output schemas are not formally documented, responses are inferred from code. Error handling returns dict with 'error' key but lacks recovery guidance. No parameter validation constraints (enums, ranges) despite accepting free-form strings (state, commodity, location). Tool composition is sound (each does one thing), but parameter naming could be more specific (e.g., 'state' should clarify it's an Indian state name, not a status).
Fetch latest mandi (market) prices from Agmarknet via data.gov.in.
Retrieve government farming schemes including PM-KISAN, PMFBY, KCC, PMKSY, eNAM and other central/state schemes with eligibility, benefits, and application details.
Fetch weather forecast for any Indian city — completely free, no API key. Returns daily weather forecast with temp, rain, wind info and farming advisory.
Output schemas not formally documented. Responses are inferred from code (dict with 'records', 'error', 'message' keys) but no JSON Schema or structured type hints provided. LLMs cannot reliably parse or chain results.
Parameters accept free-form strings without enum constraints. 'state' accepts any string (should be enum of Indian states); 'commodity' accepts any string (should be enum of known crops); 'location' accepts any string but falls back to geocoding. No validation prevents hallucinated values.
Error responses lack recovery guidance. Errors return {'error': 'message'} but do not tell LLM what to do next. E.g., 'No price data found' should suggest 'Try a different state or commodity' or 'Call get_schemes() for subsidy info'.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | 2026-07-28+ | v2 |
get_schemes tool has no visible implementation in provided code. Tool is registered with @mcp.tool() decorator but function body is cut off. Cannot verify schema, error handling, or actual behavior.
Parameter descriptions include example values (e.g., 'e.g. Punjab, Maharashtra'). LLMs tend to reuse examples literally rather than adapt to context. Use enum constraints or format declarations instead.