# fatcalendar - full documentation > fatcalendar.com is a free calendar for Gregorian, Telugu, Tamil, Kannada, Malayalam, Marathi, Gujarati, Punjabi, Bengali, North-Indian (Hindi), Indian-Muslim (Hijri) and Christian traditions (12), shown in eleven languages, with tithi, nakshatra, festivals, auspicious windows and prayer times computed for your location. Free REST API, MCP server, A2A agent and SDK. Index: https://fatcalendar.com/llms.txt . Version 1.0.0. Generated 2026-11-09. ## API operations - `GET /api/v1/calendar/month` (getCalendarMonth, MCP `get_month`): Returns every day cell of a month (with leading/trailing days of adjacent months) in the requested tradition and language: traditional date, tithi, nakshatra, moon phase, markers (purnima, amavasya, ekadashi, sankranti...), festivals and holidays, plus a localized header with era names (Shaka, Vikram, Kollavarsham, Hijri...). - `GET /api/v1/calendar/week` (getCalendarWeek, MCP `get_week`): Returns the seven day cells of the Sunday-to-Saturday week containing `date`, in the requested tradition and language. - `GET /api/v1/calendar/year` (getCalendarYear, MCP `get_year`): Returns all twelve months of a Gregorian year (compact day cells with moon phase and markers, plus the list of festivals per month) in the requested tradition and language. - `GET /api/v1/calendar/day` (getCalendarDay, MCP `get_day`): Returns the full daily almanac for one civil date: vara, tithi, nakshatra, yoga, karana (each with end times), paksha, lunar month, samvatsara, sunrise/sunset/moonrise/moonset, auspicious and inauspicious windows (Rahu Kalam, Yamagandam, Gulika, Abhijit, Brahma Muhurta, Varjyam, Durmuhurtham, Amrita...), Choghadiya, Hijri date and prayer times (muslim tradition), and festivals. - `GET /api/v1/panchang` (getPanchang, MCP `get_panchang`): Returns the language- and tradition-independent astronomical record for one civil date at a location: sunrise/sunset, tithi(s), nakshatra(s), yoga(s), karana(s) with ISO-8601 UTC start/end instants, Amanta lunar month, Shaka year, sidereal longitudes and the Rahu/Yamagandam/Gulika periods. Derived from the jotish.ai ephemeris. - `GET /api/v1/festivals` (listFestivals, MCP `list_festivals`): Lists every festival, vrata, fast, holiday, gurpurab and feast of a Gregorian year for a tradition, each with its civil date, name in the requested language, English name, kind, whether it is major, and the rule that determines the date (e.g. "Kartika Amavasya at sunrise"). - `GET /api/v1/places` (searchPlaces, MCP `search_places`): Free-text place search (city, town, region). Returns candidates with label, latitude, longitude and IANA time zone, ready to pass as lat/lon/tz to the calendar operations. - `GET /api/v1/traditions` (listTraditions, MCP `list_traditions`): Lists the 12 supported traditions with id, name, region, default language, calendar system, a summary, the available `variants` ({id,name,description}) and `defaultVariant`. Pass a variant id as the `variant` parameter of calendar operations. - `GET /api/v1/languages` (listLanguages, MCP `list_languages`): Lists the 11 display languages (en, te, ta, kn, ml, mr, gu, pa, bn, hi, ur) with native and English names, BCP-47 tag and text direction. Any tradition can be shown in any language. --- # About fatcalendar ## What fatcalendar is fatcalendar is a free calendar for people whose year does not fit on a single Gregorian grid. It shows day, week, month and year views for **12 traditions** - Gregorian, Telugu, Tamil, Kannada, Malayalam, Marathi, Gujarati, Punjabi, Bengali, North Indian (Hindi), Indian Muslim (Hijri), Christian - in **11 languages** (English, Telugu, Tamil, Kannada, Malayalam, Marathi, Gujarati, Punjabi, Bengali, Hindi, Urdu), and calculates every time for the place you choose. Tradition is not language: any tradition can be displayed in any language. ## What you get - Traditional date, month and era (Shaka, Vikram, Kollavarsham, Bangabda, Hijri and more) for every day. - Tithi, nakshatra, yoga and karana with exact end times. - Festivals, vratas, fasts, gurpurabs and public holidays, each with the rule that decides its date. - Auspicious and inauspicious windows (Rahu Kalam, Yamagandam, Gulika, Abhijit, Brahma Muhurta, Varjyam, Durmuhurtham, Amrita, Choghadiya) and Hijri prayer times. - Illustrated festival banners and cell backgrounds. ## Built for people and for agents Every page is server-rendered semantic HTML and also available as Markdown (send `Accept: text/markdown`). The same data is available through a REST API, an MCP server, an A2A agent and an SDK. See [Docs](https://fatcalendar.com/docs) and [Docs for agents](https://fatcalendar.com/docs/agents). ## Where the data comes from Astronomical calculations are provided by the jotish.ai ephemeris API; fatcalendar adds documented rule arithmetic and caches each result permanently. Read the [methodology](https://fatcalendar.com/methodology) for details and caveats. ## Terms fatcalendar is provided free of charge, as is, without warranty. Do not rely on it for decisions where an error could cause harm; confirm religious observances with your local almanac or authority. The API is rate limited (120 requests per 60 seconds per client). Data responses may be reused with attribution to fatcalendar.com (CC BY 4.0). ## Contact See [Contact](https://fatcalendar.com/contact). Questions about privacy are covered in the [privacy policy](https://fatcalendar.com/privacy). --- # Methodology and accuracy ## Principles 1. **One source of astronomy.** Sunrise, sunset, moonrise, tithi, nakshatra, yoga, karana, lunar months and solar ingresses (sankranti) come from the jotish.ai ephemeris API. We never substitute our own planetary theory. 2. **Rules on top, documented.** Everything else is rule arithmetic over that output: Choghadiya, Rahu Kalam, Yamagandam, Gulika, Durmuhurtham, Varjyam and Amrita windows; Tamil, Malayalam, Bengali and Punjabi solar dates; festival dates; Hijri estimates. 3. **Exceptions.** Four things jotish cannot supply and are computed locally: the Easter computus, fixed Nanakshahi arithmetic, the tabular Hijri fallback, and prayer-time twilight geometry. 4. **Never recompute.** Astronomical results are immutable. Each calculation is cached permanently in Cloudflare KV keyed by the canonical request (endpoint, date and location quantised to 0.1 degree and time zone), with in-flight de-duplication, so the same question is never asked twice. ## Tradition semantics | Id | Name | Region | Default language | Variants | |---|---|---|---|---| | `gregorian` | Gregorian | Worldwide | `en` | - | | `telugu` | Telugu | Andhra Pradesh, Telangana | `te` | - | | `tamil` | Tamil | Tamil Nadu | `ta` | `thirukanitha`, `vakya` | | `kannada` | Kannada | Karnataka | `kn` | `smarta`, `madhva` | | `malayalam` | Malayalam | Kerala | `ml` | `default`, `nazhika` | | `marathi` | Marathi | Maharashtra | `mr` | - | | `gujarati` | Gujarati | Gujarat | `gu` | - | | `punjabi` | Punjabi | Punjab | `pa` | `nanakshahi`, `desi`, `hindu` | | `bengali` | Bengali | West Bengal, Bangladesh | `bn` | `west-bengal-bisuddha`, `west-bengal-gupta`, `bangladesh` | | `hindi` | North Indian (Hindi) | North India | `hi` | `purnimanta`, `amanta`, `varanasi`, `braj`, `awadh` | | `muslim` | Indian Muslim (Hijri) | India | `ur` | `india`, `astronomical`, `tabular`, `hanafi`, `shia` | | `christian` | Christian | Worldwide | `en` | `western`, `orthodox`, `catholic`, `protestant` | Variants change the rule set within a tradition (for example `punjabi`: nanakshahi / desi / hindu). Pass the id as `variant`. Variant ids: tamil: thirukanitha|vakya; kannada: smarta|madhva; malayalam: default|nazhika; punjabi: nanakshahi|desi|hindu; bengali: west-bengal-bisuddha|west-bengal-gupta|bangladesh; hindi: purnimanta|amanta|varanasi|braj|awadh; muslim: india|astronomical|tabular|hanafi|shia; christian: western|orthodox|catholic|protestant. ## The panchang day A panchang day runs from sunrise to the next sunrise at your location. The tithi, nakshatra, yoga and karana "of the day" are those prevailing at sunrise; because they change during the day we also list every one that touches it, with end times. A tithi can be skipped (kshaya) or repeated (adhika) - the data flags this. ## Lunar and solar months - **Amanta** months end on Amavasya (Telugu, Kannada, Marathi, Gujarati-Vikram conventions per tradition table). **Purnimanta** months end on Purnima (North India). - **Solar** calendars (Tamil, Malayalam, Bengali, Punjabi Desi) change month at sankranti; the civil day on which a month begins follows the tradition's local rule (for example, sankranti before or after a sunset cut-off). ## Festival dates Each festival has a `rule` stating why it falls on that date, such as "Kartika Amavasya at pradosha". Almanacs and sects (for example Smarta and Madhva Ekadashi) sometimes differ; use `variant` where supported. ## Hijri calendar and moon sighting Hijri days begin at sunset. The start of a month depends on the physical sighting of the crescent, which varies by country and cannot be known in advance. fatcalendar therefore shows **provisional** Hijri dates (`hijri.provisional = true`) based on a stated convention (`hijri.convention`: `india`, `umm-al-qura`, `tabular`). Treat dates for Ramadan and the two Eids as estimates until announced locally. ## Accuracy caveats - Times are computed for the coordinates you supply, quantised to 0.1 degree (up to about 1 minute difference in sunrise). - Elevation and atmospheric refraction follow jotish.ai defaults. - Different almanacs can disagree by a day on festivals when a tithi straddles the cut-off time. - Historical and far-future years are computed but have not been checked against printed almanacs. - Not a substitute for a religious authority. ## Caching and freshness Responses carry `Cache-Control: public, max-age=300, s-maxage=86400, stale-while-revalidate=604800` when the location was explicit, and `private, max-age=60` when it was inferred from your IP. ## How to cite fatcalendar.com - multi-tradition calendar and panchang (data: jotish.ai ephemeris). Example: "Telugu calendar for 8 November 2026, fatcalendar.com, retrieved 2026-11-08." --- # fatcalendar documentation ## Choose an interface | Interface | Use it when | Entry point | |---|---|---| | [REST API](https://fatcalendar.com/docs/api) | Scripts, apps, backends | `https://fatcalendar.com/api/v1` and [openapi.json](https://fatcalendar.com/openapi.json) | | [MCP server](https://fatcalendar.com/docs/mcp) | Claude, Cursor, ChatGPT and other AI assistants | `https://fatcalendar.com/mcp` | | [SDK](https://fatcalendar.com/docs/sdk) | TypeScript / React Native | `@fatcalendar/core` | | [Agent guide](https://fatcalendar.com/docs/agents) | Autonomous agents and crawlers | [AGENTS.md](https://fatcalendar.com/AGENTS.md), [llms.txt](https://fatcalendar.com/llms.txt) | All interfaces are free, need no API key and return the same data. ## Quick start ```bash curl 'https://fatcalendar.com/api/v1/calendar/day?tradition=telugu&lang=en&place=Hyderabad&date=2026-11-08' ``` ## Concepts - **tradition** selects the calendar system (gregorian, telugu, tamil, kannada, malayalam, marathi, gujarati, punjabi, bengali, hindi, muslim, christian). **lang** selects the display language (en, te, ta, kn, ml, mr, gu, pa, bn, hi, ur). They are independent. - **variant** optionally selects a sub-variant of the tradition. - **Location** is `lat` + `lon` + `tz`, or `place` free text, or inferred from the request. - **Dates** are civil dates `YYYY-MM-DD` in the location's time zone. ## Machine-readable index - OpenAPI 3.1: [/openapi.json](https://fatcalendar.com/openapi.json) (YAML: [/openapi.yaml](https://fatcalendar.com/openapi.yaml)) - API catalog (RFC 9727): [/.well-known/api-catalog](https://fatcalendar.com/.well-known/api-catalog) - MCP server card: [/.well-known/mcp/server-card.json](https://fatcalendar.com/.well-known/mcp/server-card.json) - A2A agent card: [/.well-known/agent-card.json](https://fatcalendar.com/.well-known/agent-card.json) - Agent skills: [/.well-known/agent-skills/index.json](https://fatcalendar.com/.well-known/agent-skills/index.json) - AI catalog: [/.well-known/ai-catalog.json](https://fatcalendar.com/.well-known/ai-catalog.json) - NLWeb: [/ask](https://fatcalendar.com/ask?query=diwali+2026) --- # REST API reference ## Overview Base URL `https://fatcalendar.com`. All endpoints are `GET`, return JSON, need no authentication and send `Access-Control-Allow-Origin: *`. The machine-readable contract is [/openapi.json](https://fatcalendar.com/openapi.json). ## Endpoints | MCP tool | REST endpoint | What it returns | |---|---|---| | `get_month` | `GET /api/v1/calendar/month` | Get a month calendar | | `get_week` | `GET /api/v1/calendar/week` | Get a week calendar | | `get_year` | `GET /api/v1/calendar/year` | Get a year calendar | | `get_day` | `GET /api/v1/calendar/day` | Get a full day (panchang) view | | `get_panchang` | `GET /api/v1/panchang` | Get the raw normalised panchang | | `list_festivals` | `GET /api/v1/festivals` | List festivals of a year | | `search_places` | `GET /api/v1/places` | Search places (geocoder) | | `list_traditions` | `GET /api/v1/traditions` | List calendar traditions | | `list_languages` | `GET /api/v1/languages` | List display languages | | - | `GET /api/v1/health` | Liveness check | ## Common parameters | Parameter | Type | Description | |---|---|---| | `tradition` | enum | gregorian, telugu, tamil, kannada, malayalam, marathi, gujarati, punjabi, bengali, hindi, muslim, christian (default `gregorian`) | | `lang` | enum | en, te, ta, kn, ml, mr, gu, pa, bn, hi, ur (default `en`) | | `variant` | string | Tradition sub-variant, see `/api/v1/traditions`. tamil: thirukanitha|vakya; kannada: smarta|madhva; malayalam: default|nazhika; punjabi: nanakshahi|desi|hindu; bengali: west-bengal-bisuddha|west-bengal-gupta|bangladesh; hindi: purnimanta|amanta|varanasi|braj|awadh; muslim: india|astronomical|tabular|hanafi|shia; christian: western|orthodox|catholic|protestant | | `lat`, `lon`, `tz` | number, number, IANA zone | Explicit location | | `place` | string | Free-text place; first geocoder hit is used | | `date` | YYYY-MM-DD | Day or week anchor (default today) | | `year`, `month` | integer | Gregorian year (1900-2200) and month (1-12) | If no location is given, it is inferred from the request IP (Cloudflare) and the response is `private`. ## Examples ```bash # Month grid in Tamil tradition, displayed in Tamil curl 'https://fatcalendar.com/api/v1/calendar/month?tradition=tamil&lang=ta&year=2026&month=11&place=Chennai' # Full panchang for a day curl 'https://fatcalendar.com/api/v1/calendar/day?tradition=telugu&date=2026-11-08&lat=17.385&lon=78.4867&tz=Asia/Kolkata' # Festivals of a year (Punjabi, Nanakshahi variant) curl 'https://fatcalendar.com/api/v1/festivals?tradition=punjabi&variant=nanakshahi&year=2026&place=Amritsar' # Geocode curl 'https://fatcalendar.com/api/v1/places?q=Vijayawada' ``` ```javascript const res = await fetch('https://fatcalendar.com/api/v1/calendar/day?tradition=muslim&place=Hyderabad'); const day = await res.json(); console.log(day.hijri, day.prayers); ``` ## Response shapes `month`, `week`, `year` and `day` return `MonthResponse`, `WeekResponse`, `YearResponse` and `DayResponse` as defined in the OpenAPI document and in `@fatcalendar/core`. Each includes `tradition`, `lang`, the resolved `location`, a localized `header` (title, eras, months spanned) and `notes` (method and accuracy remarks). Time values are `{ iso, local }` pairs: `iso` is UTC, `local` is wall time at the location with a trailing `+` after local midnight. `/api/v1/panchang` returns the language-independent normalised record. ## Caching Explicit-location responses: `Cache-Control: public, max-age=300, s-maxage=86400, stale-while-revalidate=604800` plus a weak `ETag` (send `If-None-Match` for 304). Location-inferred responses: `private, max-age=60`. ## Errors Errors use `application/problem+json` (RFC 9457): ```json { "type": "about:blank", "title": "Invalid parameters", "status": 400, "detail": "date: date must be YYYY-MM-DD", "instance": "/api/v1/calendar/day?date=tomorrow" } ``` Statuses: 400 invalid parameters, 404 unknown place or path, 429 rate limited, 502 upstream ephemeris failure, 500 internal error. ## Rate limits 120 requests per 60 seconds per client IP across `/api`, `/mcp`, `/a2a` and `/ask`. Responses include `RateLimit-Policy: "default";q=120;w=60` and `RateLimit: "default";r=;t=`. A 429 response carries `Retry-After`. The limit is best effort per edge location; cached responses are the better route for bulk use. ## Authentication None. The API is public and anonymous. --- # MCP server ## Endpoint `https://fatcalendar.com/mcp` - MCP **Streamable HTTP**, stateless, no authentication. Server card: [/.well-known/mcp/server-card.json](https://fatcalendar.com/.well-known/mcp/server-card.json). ## Tools All tools are read-only (`readOnlyHint: true`), idempotent and closed-world. - `get_month` - Get a month calendar. Arguments: `tradition`, `lang`, `digits`, `variant`, `lat`, `lon`, `tz`, `place`, `year`, `month`. - `get_week` - Get a week calendar. Arguments: `tradition`, `lang`, `digits`, `variant`, `lat`, `lon`, `tz`, `place`, `date`. - `get_year` - Get a year calendar. Arguments: `tradition`, `lang`, `digits`, `variant`, `lat`, `lon`, `tz`, `place`, `year`. - `get_day` - Get a full day (panchang) view. Arguments: `tradition`, `lang`, `digits`, `variant`, `lat`, `lon`, `tz`, `place`, `date`. - `get_panchang` - Get the raw normalised panchang. Arguments: `lat`, `lon`, `tz`, `place`, `date`. - `list_festivals` - List festivals of a year. Arguments: `tradition`, `lang`, `digits`, `variant`, `lat`, `lon`, `tz`, `place`, `year`. - `search_places` - Search places (geocoder). Arguments: `q`. - `list_traditions` - List calendar traditions. Arguments: none. - `list_languages` - List display languages. Arguments: none. Results are returned as JSON text plus `structuredContent`. ## Resources and prompts - Resources: `fatcalendar://traditions`, `fatcalendar://languages`. - Prompt: `explain_day` (arguments: `date`, `tradition`, `place`) - asks the model to explain a day's panchang in plain language. ## Configure a client ### Claude Code ```bash claude mcp add --transport http fatcalendar https://fatcalendar.com/mcp ``` ### Claude Desktop (via mcp-remote) ```json { "mcpServers": { "fatcalendar": { "command": "npx", "args": ["-y", "mcp-remote", "https://fatcalendar.com/mcp"] } } } ``` ### Claude.ai and ChatGPT connectors Add a custom connector with URL `https://fatcalendar.com/mcp` and no authentication. ### Cursor (`~/.cursor/mcp.json`) ```json { "mcpServers": { "fatcalendar": { "url": "https://fatcalendar.com/mcp" } } } ``` ## Raw JSON-RPC example ```bash curl -s https://fatcalendar.com/mcp \ -H 'content-type: application/json' -H 'accept: application/json, text/event-stream' \ -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"get_day","arguments":{"tradition":"telugu","place":"Hyderabad","date":"2026-11-08"}}}' ``` ## Example prompts - "What is today's tithi and Rahu Kalam in Chennai?" - "List Sikh gurpurabs in 2026 using the Nanakshahi calendar." - "When does Ramadan start in 2027 according to the Indian moon-sighting estimate?" ## Limits Same quota as the REST API: 120 requests per 60 seconds per client. --- # TypeScript SDK ## Install ```bash npm install @fatcalendar/core ``` [@fatcalendar/core on npm](https://www.npmjs.com/package/@fatcalendar/core) is a portable package: it uses only `fetch` and has no DOM or Node dependencies, so it runs unchanged in browsers, Node 18+, Cloudflare Workers and React Native (Hermes). ## First call ```typescript import { createClient } from '@fatcalendar/core/client'; const fc = createClient({ baseUrl: 'https://fatcalendar.com' }); const day = await fc.day({ tradition: 'telugu', lang: 'en', date: '2026-11-08', place: 'Hyderabad' }); console.log(day.panchang.tithi.value, day.windows.map((w) => w.label)); ``` ## Methods `month`, `week`, `year`, `day`, `festivals`, `panchang`, `places`, `traditions`, `languages` - each mirrors the REST endpoint of the same name and returns the typed response from `@fatcalendar/core/api-types` (`MonthResponse`, `DayResponse`, `DayCell`, `FestivalItem` ...). ## Types ```typescript import type { MonthResponse, DayCell } from '@fatcalendar/core/api-types'; import type { TraditionId, LangId } from '@fatcalendar/core/types'; ``` ## Without the SDK Any HTTP client works: see the [REST API reference](https://fatcalendar.com/docs/api) or generate a client from [/openapi.json](https://fatcalendar.com/openapi.json) with openapi-generator, openapi-typescript or similar. ## Command line There is no separate CLI package; use `curl` (see [REST API](https://fatcalendar.com/docs/api)) or the MCP server through an MCP-capable client. --- # Documentation for AI agents ## Welcome, agents fatcalendar wants to be used by agents. There is no authentication, no CAPTCHA and no bot blocking. AI crawlers and agents are allowed in [robots.txt](https://fatcalendar.com/robots.txt) with content signals `search=yes, ai-input=yes, ai-train=yes`. ## Discovery | Resource | URL | |---|---| | llms.txt / llms-full.txt | [/llms.txt](https://fatcalendar.com/llms.txt), [/llms-full.txt](https://fatcalendar.com/llms-full.txt) | | AGENTS.md | [/AGENTS.md](https://fatcalendar.com/AGENTS.md) | | auth.md (anonymous access) | [/auth.md](https://fatcalendar.com/auth.md) | | OpenAPI 3.1 | [/openapi.json](https://fatcalendar.com/openapi.json) | | API catalog (RFC 9727) | [/.well-known/api-catalog](https://fatcalendar.com/.well-known/api-catalog) | | AI catalog / ARD | [/.well-known/ai-catalog.json](https://fatcalendar.com/.well-known/ai-catalog.json) | | MCP server card | [/.well-known/mcp/server-card.json](https://fatcalendar.com/.well-known/mcp/server-card.json) | | A2A agent card | [/.well-known/agent-card.json](https://fatcalendar.com/.well-known/agent-card.json) | | Agent Skills | [/.well-known/agent-skills/index.json](https://fatcalendar.com/.well-known/agent-skills/index.json) | | NLWeb | [/ask](https://fatcalendar.com/ask?query=when+is+diwali+2026) | | WebMCP | tools registered on every page via [/webmcp.js](https://fatcalendar.com/webmcp.js) | ## Which interface should I use? 1. Have an MCP client? Use `https://fatcalendar.com/mcp`. 2. Speak A2A? Send `message/send` to `https://fatcalendar.com/a2a` with a natural-language question. 3. Otherwise call the REST API directly. 4. Browsing pages? Request any page with `Accept: text/markdown` to get clean Markdown (`x-markdown-tokens` reports its size). ## Etiquette - Stay within 120 requests per 60 seconds; honour `RateLimit` and `Retry-After`. - Results are immutable and cacheable; do not poll. - Prefer explicit `lat`/`lon`/`tz` or `place` over IP-inferred location. - Always state the tradition, variant and place when you quote a date to a user, and mention that festival dates can differ between almanacs and that Hijri dates are provisional. ## Citation fatcalendar.com - multi-tradition calendar and panchang (data: jotish.ai ephemeris). Link: https://fatcalendar.com. License for data responses: CC BY 4.0. ## Errors RFC 9457 `application/problem+json`; the `detail` field says how to fix the request. --- # Frequently asked questions ## Questions and answers ### What is fatcalendar? fatcalendar.com is a free, ad-free calendar that shows the same day in many traditions - Gregorian, Telugu, Tamil, Kannada, Malayalam, Marathi, Gujarati, Punjabi, Bengali, North-Indian (Hindi), Indian-Muslim (Hijri) and Christian - in any of eleven languages, with tithi, nakshatra, festivals, auspicious windows and prayer times calculated for your location. ### Is tradition the same as language? No. Tradition decides how time is reckoned (which months, eras, festivals and rules apply); language only decides how it is displayed. You can read the Tamil calendar in English or the Hijri calendar in Telugu. ### Where does the astronomical data come from? All astronomy (sunrise, sunset, tithi, nakshatra, yoga, karana, lunar months, planetary ingresses) comes from the jotish.ai ephemeris API. fatcalendar applies published rule arithmetic on top of it (for example Choghadiya, Durmuhurtham, Varjyam, solar-calendar dates and festival rules). A few items jotish cannot supply - Easter computus, fixed Nanakshahi arithmetic, tabular Hijri fallback and prayer-time twilight geometry - are computed locally. ### Are the results accurate? Astronomical positions are precise; the cultural rules that pick a festival date can differ between almanacs (panchangams), regions and sects, so a festival may be observed a day apart in different places. Hijri month starts depend on local moon sighting: fatcalendar marks Hijri dates as provisional. For religious observance, confirm with your local authority. ### How is my location used? Tithi end times, sunrise and Rahu Kalam depend on where you are. If you allow it, your browser location (or the approximate location Cloudflare derives from your IP) is used only to compute the calendar, rounded to 0.1 degrees. We do not store it against you and we have no accounts. ### Do you use cookies or tracking? No tracking cookies and no advertising. Your tradition, language and place preferences are kept in your browser localStorage only. See the privacy page. ### Is there an API? Yes, a free, key-less REST API (OpenAPI 3.1 at /openapi.json), an MCP server at /mcp for AI assistants, an A2A agent at /a2a and a TypeScript SDK. The limit is 120 requests per 60 seconds per client. ### How do I connect fatcalendar to Claude, Cursor or another AI assistant? Add the remote MCP server https://fatcalendar.com/mcp (Streamable HTTP, no authentication). See /docs/mcp for ready-to-paste configuration. ### Are results cached? Yes. Astronomical results never change, so each calculation is computed once and cached permanently; repeated requests are served from cache. ### How do I cite fatcalendar? Cite as: fatcalendar.com - multi-tradition calendar and panchang (data: jotish.ai ephemeris). Link to https://fatcalendar.com and mention the date retrieved. --- # Pricing ## Free | Plan | Price | Limits | |---|---|---| | Everything (website, REST API, MCP, A2A, NLWeb, SDK) | 0 USD, forever, no account | 120 requests per 60 seconds per client | There are no paid plans, no API keys and no billing. If you need much higher volume, email hello@fatcalendar.com; cached responses (`Cache-Control` and `ETag`) are the best way to reduce request counts. --- # Privacy policy ## Summary fatcalendar has **no accounts, no advertising and no tracking cookies**. We collect the minimum needed to calculate a calendar for you. ## What we process - **Location.** Sunrise, tithi end times and prayer times depend on where you are. We use the place you search for, the coordinates your browser shares if you allow geolocation, or the approximate location (city level) that Cloudflare derives from your IP address if you share nothing. Coordinates are rounded to 0.1 degree (about 11 km) before calculation. They are used only to compute the response and are not stored against any identity. - **Preferences.** Your chosen tradition, language, view and place are saved in your browser's localStorage so the site opens the way you left it. They never leave your device and are not cookies. - **Technical logs.** Our host (Cloudflare) processes request metadata such as IP address, user agent and URL to deliver the service, prevent abuse and enforce rate limits. We do not build profiles from it. - **API and MCP calls.** The query parameters you send (tradition, language, date, place or coordinates) are used to compute the answer. In-memory counters keyed by client IP implement the rate limit and are discarded. ## What we do not do - No sign-up, passwords or email collection. - No third-party analytics, advertising or tracking scripts. - No selling or sharing of personal data. - No cookies other than any strictly necessary ones set by our CDN for security. ## Third parties Calculation requests are made by our server to the jotish.ai ephemeris API using rounded coordinates and dates only - never your IP address, user agent or any identifier. Hosting and delivery are provided by Cloudflare. ## Your choices Decline browser geolocation and type a place instead; clear localStorage to remove saved preferences; contact us at hello@fatcalendar.com with any privacy request. ## Changes We will update this page if practices change. Last reviewed: November 2026. --- # Contact fatcalendar ## Get in touch - **General, feedback and corrections:** [hello@fatcalendar.com](mailto:hello@fatcalendar.com) - **Security reports:** [security@fatcalendar.com](mailto:security@fatcalendar.com) (see [security.txt](https://fatcalendar.com/.well-known/security.txt)) - **API and MCP questions:** read [API docs](https://fatcalendar.com/docs/api) and [MCP docs](https://fatcalendar.com/docs/mcp) first, then email us. ## Reporting a wrong date Please include the tradition and variant, language, place (or latitude, longitude and time zone), the date shown, the date you expected and the almanac or authority you are comparing with. Festival dates can legitimately differ between almanacs; we will explain the rule used (every festival carries a `rule` field) or fix real bugs. ## Response time This is a small independent project. We aim to reply within a few working days. ## For machines Agents can read [AGENTS.md](https://fatcalendar.com/AGENTS.md), [llms.txt](https://fatcalendar.com/llms.txt) and the [OpenAPI document](https://fatcalendar.com/openapi.json).