Portable Vedic astrology engine, agent skill, and stdio MCP server (kundali, dasha, panchang, PDF reports)
Strong domain-specific tool design with clear naming (verb_noun pattern), comprehensive parameter schemas, and detailed descriptions. All 12 tools have explicit input schemas with type definitions and parameter descriptions. Most tools follow the pattern:tool and pattern:constrained-input guidelines. Key strengths: safety-conscious path validation in generate_pdf_report and upsert_client_profile, enum constraints on ayanamsa and language parameters, clear dependency documentation (e.g., calculate_dasha requires kundali from calculate_kundali). Weaknesses: output schemas are not formally documented in the tool definitions (only implied by descriptions like 'Returns the kundali JSON'); error handling guidance is minimal (no recovery hints or actionable error messages visible); some descriptions could be more concise (e.g., calculate_kundali at 400+ chars). No tool combines multiple concerns, and composition is sound (tools chain via JSON object parameters).
Build monthly/quarterly gochar one-liners for the current antardasha window. Samples slow-planet transits (Saturn, Jupiter, Rahu) across the running Vimshottari antardasha and emits bilingual fact-sheets grounded in classical house-from-Moon gochar. Purely rule-based — no network / LLM.
Guna Milan (Ashtakoot, 36-point) marriage compatibility between two kundali JSONs (kundali_a = bride, kundali_b = groom). Returns the koota-wise point breakdown, the total out of 36, and Nadi, Bhakoot, and Manglik dosha findings.
Compute the Vimshottari dasha timeline from a kundali: mahadasha and antardasha periods with start/end dates, plus the running mahadasha/antardasha/pratyantardasha for on_date. Returns dasha JSON accepted by the report tools.
Compute gochar — planetary transits relative to the natal Moon and Lagna — plus the Saturn Sade Sati / Dhaiya phase for a date. Returns gochar JSON accepted by the report tools.
Compute a sidereal Vedic kundali (birth chart) from birth details: lagna, Moon rashi, nakshatra with pada, planet positions with sign and whole-sign house placements, navamsa (D9) and further divisional charts, ashtakavarga tables, and the Vimshottari dasha seed. Returns the kundali JSON that the dasha, gochar, compatibility, and report tools consume.
Output schemas not formally documented. Tool descriptions state 'Returns the kundali JSON' or 'Returns dasha JSON' but no explicit output schema is visible in tool definitions. LLMs cannot plan downstream calls without knowing the structure of returned objects.
Error handling lacks recovery guidance. No visible error responses that tell the LLM what to do next (e.g., 'Invalid timezone. Try list_timezones() or use IANA format like Asia/Kolkata'). Agents cannot self-correct on failures.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 63 | 2026-07-28+ | v2 |
Compute the Panchang (five-fold calendar) for a date and place: tithi, nakshatra, yoga, karana, and vaara (day of week), plus sunrise/sunset and auspicious/inauspicious windows.
Generate a bilingual (Hindi/English) PDF kundali report with birth chart, divisional charts, dasha timeline, transits, compatibility, and panchang. Writes the PDF to disk and optionally records metadata in SQLite.
Retrieve a single client profile by client_id, including birth details and notes.
List all client profiles stored in the SQLite database, with their birth details and notes.
List all reports filed under a client_id, with metadata (report_id, language, created_at, filename).
Conservatively extract dob, tob, place, lat, lon, and timezone from a short operator note. Returns the recognised fields plus a 'missing' list naming everything that could not be parsed, so the agent can ask the operator for clarification instead of guessing.
Create or update a client profile in the SQLite database with birth details and notes.
Some descriptions exceed 200 chars (calculate_kundali ~400, calculate_compatibility ~250). Verbose descriptions waste tokens and bury key details. Baseline for A+ tools is 50-200 chars.
build_antardasha_gochar_narrative has a compound name ('build_and_narrative') that could be clearer. Consider 'generate_gochar_narrative' to match the verb_noun pattern more consistently.
No pagination or result-limiting guidance for list_client_profiles and list_client_reports. If a client has hundreds of profiles/reports, responses could exceed context limits. Add limit/offset parameters and document max result size.