# HinduCalendar — panchang, festivals & muhurta

> Daily panchang, festivals, muhurta and birth details, identical to the HinduCalendar Android app.

- name: app.hinducalendar/hinducalendar
- version: 1.1.0
- connection class: R0 (autonomous)
- trust: 80/100 flags: no-repository
- quality: 91/100 (strong)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/app.hinducalendar%2Fhinducalendar
- tools: https://api.protogrid.dev/v1/servers/app.hinducalendar%2Fhinducalendar/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "hinducalendar": {
      "type": "http",
      "url": "https://hinducalendar.app/mcp"
    }
  }
}
```


## Trust

- hygiene: 80
- liveness: 100
- freshness: 85
- provenance: 55
- drivers: +dns-namespace +website +reachable +uptime-100% ~updated-70d-ago -no-repository
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 91/100 (strong)

### protocol: 100 (weight 25)

- pass `protocol.modern`: supports 2026-07-28 (server/discover)
- pass `protocol.stateless`: answers without a session
- pass `protocol.transport`: streamable HTTP
- pass `protocol.list_ttl`: tool list is cacheable (ttlMs 86400000)

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 79 (weight 30)

- pass `tools.descriptions`: every tool has a description
- warn `tools.description_length`: 5 tools have descriptions over 1,024 characters, which crowds the context
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 5 of 5 tools declare readOnlyHint or destructiveHint
- fail `tools.directory_hints`: no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: get_panchang (destructiveHint, idempotentHint); get_festival_dates (destructiveHint, idempotentHint); get_muhurat_windows (destructiveHint, idempotentHint); …
- pass `tools.token_cost`: about 2,855 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 100 (weight 15)

- pass `stability.changes`: no tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 5, about 2,855 tokens to load them all
- tool set hash: 085748bb070506387ee9c1c1376adfee
- badge: [![protogrid quality](https://protogrid.dev/badge/app.hinducalendar/hinducalendar.svg)](https://protogrid.dev/servers/app.hinducalendar/hinducalendar)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

_No tool definition changes recorded._

## Remotes

- https://hinducalendar.app/mcp (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

_none_

## Tools (5)

- `get_birth_details`: 
    Return birth star (nakshatra), birth name syllable (naam akshar / pada),
    Chandra rashi (Moon sign), and Lagna rashi (ascendant sign) for a child
    born at the given time and location — all from the app's own engine, so
    they match the HinduCalendar app's kundali exactly.

    Args:
        time:      ISO 8601 datetime of birth (e.g. "2025-08-15T10:30:00Z").
                   Include timezone offset if known (e.g. "2025-08-15T10:30:00+05:30").
        lat:       Latitude of birth place in decimal degrees (e.g. 28.6139 for Delhi).
        lon:       Longitude of birth place in decimal degrees (e.g. 77.2090 for Delhi).
        ayanamsa:  "Lahiri" (Vedic sidereal, default) or "Sayan" (tropical).

    Returns:
        Dict with:
          - time (ISO)
          - ayanamsa
          - nakshatra: { index (1–27), name }
          - pada: { index (1–4), overall_index (1–108), naam_akshar (birth name syllable) }
          - chandra_rashi: { index (1–12), name }  ← Moon sign
          - lagna_rashi:   { index (1–12), name }  ← Ascendant sign
        Plus a rendered South Indian kundali chart (PNG image).
    
- `get_festival_dates`: 
    Exact dates of major Hindu festivals for any year, computed live by the
    same engine the HinduCalendar app uses — never guess a festival date,
    always use this.

    Covers the tithi-anchored festivals (Diwali, Holi, Krishna Janmashtami,
    Ganesh Chaturthi, Rama Navami, Maha Shivaratri, Raksha Bandhan, Dhanteras,
    Karva Chauth, Chhath, Vasant Panchami, Gudi Padwa, Akshaya Tritiya, the
    purnimas, Navratri from Ghatasthapana through Vijayadashami) *and* the ones
    no tithi rule can express: solar ingresses (Makar Sankranti — also Pongal,
    Uttarayan, Maghi; Mesha Sankranti — also Vishu, Baisakhi, Puthandu),
    nakshatra-dated observances (Onam, the Jyeshtha Gauri triad), weekday
    series (Shravan Somwar, Mangala Gauri), and the Puri Jagannath sequence
    (Snana Yatra, Rath Yatra, Hera Panchami, Bahuda Yatra, Suna Besha,
    Niladri Bije).

    Every result carries `date` and a plain-language `rule` saying how that
    date is fixed, usually with a `why` explaining it, plus regions,
    traditions, cluster and related festivals where they are recorded.
    Tithi-anchored festivals also carry `masa`/`paksha`/`tithi`; solar and
    nakshatra ones do not, because they have none.

    Two results are not single days:
      • one that recurs within the year (Shravan Somwar is four or five
        Mondays) carries `dates` with every occurrence — `date` is the first;
      • a multi-day observance (Ganeshotsav, Navratri) carries `end_date`
        and `days`.

    Example questions: "when is Diwali in 2027?", "what date was Holi in
    1962?", "list all festivals in 2026", "when is Onam?", "which Mondays are
    Shravan Somwar this year?".

    Args:
        year:      Gregorian year.
        festival:  Optional name filter — fuzzy, and matches popular and
                   regional aliases plus Devanagari ("Diwali", "Dussehra",
                   "Rakhi", "Pongal", "Vishu", "दिवाली"). A sequence name
                   ("Navratri", "Ganeshotsav", "Rath Yatra") returns every
                   festival in that sequence.
        lat, lon, tz_offset_hours:
                   Location (default Ujjain, the canonical reference).
                   Festival days can shift by location; for a user's city
                   pass their coordinates.
    
- `get_muhurat_windows`: 
    Dated windows of the auspicious muhurta yogas and the observance periods —
    the "when are the vivah muhurats in 2026?" and "when is Chaturmas?" family.
    Computed live by panchang-core's MuhurtaFinder, the same engine behind the
    app's Muhurta Finder and the hinducalendar.app muhurat pages.

    Twenty presets in two categories:
      • yoga   — Sarvarth Siddhi, Amrit Siddhi, Guru Pushya, Ravi Pushya, Ravi,
                 Dwipushkar, Tripushkar, Siddha, Amrita, Vivaah Muhurat.
                 Intra-day windows, often several a week.
      • period — Chaitra / Sharad / Gupta Navratri (Ashadha and Magha),
                 Chaturmas, Pitru Paksha, Holashtak, Panchak, Gand Mool,
                 Kharmas. Multi-day observances and blackout spans.

    Each window has a `start` and `end` in ISO 8601 carrying the requested
    place's UTC offset ("2026-01-14T15:05:00+05:30"), so they read directly as
    the local time the muhurat is kept by.

    Asking for everything in a year matches ~600 windows, so an unnarrowed
    request answers with per-preset counts and says so (`windows_omitted`).
    Name a muhurat or pass a month to get the actual times — a single named
    muhurat always returns its windows in full.

    Example questions: "vivah muhurat dates in 2026", "when is Pitru Paksha
    this year?", "Sarvarth Siddhi yoga in November 2026", "when does Chaturmas
    start?", "list the Panchak periods in 2027", "is there a Guru Pushya yoga
    next month?".

    Args:
        year:      Gregorian year.
        muhurat:   Optional name filter — fuzzy, matches slug, English and
                   Hindi names ("vivaah", "sarvarth siddhi", "गुरु पुष्य").
        category:  Optional — "yoga" or "period".
        month:     Optional 1..12, to narrow within the year.
        lat, lon, tz_offset_hours:
                   Location (default Ujjain, the canonical reference). These
                   windows are rise/set and panchang dependent, so they do
                   shift with location.
        lang:      Language for names — "en" (default) or "hi".
    
- `get_muhurta`: 
    Muhurta for a moment and place, exactly as the HinduCalendar app computes
    it — and, with full_day=True, the whole day's grid.

    By default returns only what is ACTIVE at the instant given:
      - Current lagna (ascendant sign active at that moment)
      - Current choghadiya (day or night slot)
      - Current hora (planetary hour)
      - Any ongoing special muhurtas (Rahu Kalam, Yama Ghanta, Guli Kalam,
        Abhijit, Dur Muhurt, Pradosh, Varjyam, Panchak, Gandmool)

    Set full_day=True to also get every window of the panchang day (sunrise to
    next sunrise) containing that instant — the complete choghadiya and hora
    grids (day and night), all lagna periods, and every special muhurta with
    its start and end. Use it for "when is Rahu Kalam today?", "list today's
    choghadiya", "when is Abhijit muhurat?" — questions the instant-only view
    cannot answer without guessing the time.

    Sunrise/sunset, lagna transitions and every special muhurta come from
    panchang-core (the app's engine); choghadiya/hora are pure rise/set
    arithmetic driven by the engine's times and weekday.

    For multi-day observance periods and auspicious-yoga windows (Vivaah
    muhurat, Sarvarth Siddhi, Pitru Paksha, Chaturmas, Panchak…) use
    get_muhurat_windows instead — this tool covers a single day.

    Args:
        time:     ISO 8601 datetime (e.g. "2025-08-15T10:30:00+05:30"). If no
                  timezone is given, UTC is assumed.
        lat:      Latitude in decimal degrees.
        lon:      Longitude in decimal degrees.
        lang:     Language for names — "en" (default) or "hi".
        full_day: Include the whole day's grids, not just what is active now.

    Returns:
        Dict with sunrise, sunset, current_lagna, current_choghadiya,
        current_hora, and ongoing_muhurtas — plus choghadiya, hora, lagna and
        muhurtas when full_day is set.
    
- `get_panchang`: 
    Full daily panchang for a date and place — computed by the same
    panchang-core engine the HinduCalendar Android app ships, so the values
    are identical to the app (not an approximation).

    Returns the five limbs at sunrise (tithi, nakshatra, yoga, karana, vaar)
    each with its END TIME, paksha, lunar month in both amavasyant and
    purnimant conventions (with adhik maas flag), Vikram/Shaka/Kali/Gujarati
    samvat years, samvatsara names, ritu (season), ayana (Uttarayan/
    Dakshinayan), sun/moon rashi with next-transit time, and sunrise/sunset/
    moonrise/moonset.

    This is also the Gregorian→Hindu date converter: the masa + paksha +
    tithi + samvat fields ARE the Hindu date. (For Hindu→Gregorian, use the
    Kaalshodh MCP server's find_matching_dates.)

    Example questions: "what is the tithi today in Delhi?", "when does
    Ekadashi end tomorrow?", "what is today's date in Vikram Samvat?",
    "which Hindu month is it?".

    Args:
        date:      Gregorian date, YYYY-MM-DD. Default location is Ujjain;
                   pass lat/lon/tz for other places.
        lat, lon:  Location in decimal degrees.
        tz:        IANA timezone name ("Asia/Kolkata") or a numeric UTC
                   offset in hours ("5.5").
        ayanamsa:  "Lahiri" (default) or "Sayan".
        lang:      Language for names — "en", "hi", and the app languages
                   (mr, gu, bn, ta, te, kn, ml, sa) plus "en-iast".
    
