{"server":"Muslim Prayer Reminder MCP","checked":"2026-11-03","tools":[{"name":"configure_prayer_preferences","title":"Configure User Prayer Preferences","description":"Updates persistent prayer preferences, overwriting supplied settings while preserving omitted settings. Setting fixedCity replaces stored fixedCoordinates and stores the canonical city timezone; contradictory timezones are rejected; setting fixedCoordinates replaces stored fixedCity. Can disable reminders. Fixed mode requires a supported fixedCity or fixedCoordinates with timezone; new coordinates require timezone in the same request. clearFixedLocation removes saved location and timezone and defaults to auto_travel. Combined fixed-location calculation settings are validated for the current and next local day before saving. Invalid combinations preserve the previous preferences. Auto-travel chronology is checked when a query supplies its location. Previous values are not retained for undo.","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"clearFixedLocation":{"description":"Remove stored fixedCity, fixedCoordinates and timezone. Switches to auto_travel unless locationMode is supplied. Cannot combine with a new fixed location/timezone.","type":"boolean"},"userId":{"type":"string","minLength":1,"maxLength":256,"pattern":"\\S","description":"Nonblank user identifier; at most 256 UTF-8 bytes and 256 characters. Whitespace in nonblank identifiers is preserved."},"locationMode":{"description":"Location strategy: fixed uses saved location; auto_travel requires the caller to supply current city or coordinates/timezone on each query and never uses IP geolocation.","type":"string","enum":["auto_travel","fixed"]},"fixedCity":{"type":"string","description":"Supported cities: makkah, madinah, riyadh, cairo, gaza, jerusalem, alquds, ramallah, hebron, nablus, rafah, khanyunis, dubai, abudhabi, kuwait, doha, amman, istanbul, london, paris, newyork, toronto, jakarta, singapore, karachi, kualalumpur, tehran, sydney, tromso. Aliases: gazacity, nyc, kuwaitcity. Case, spaces and punctuation are ignored."},"fixedCoordinates":{"description":"Fixed geographical coordinates","type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["latitude","longitude"]},"timezone":{"description":"IANA timezone identifier (e.g. Asia/Riyadh, Europe/London)","type":"string"},"calculationMethod":{"description":"Islamic prayer calculation authority","type":"string","enum":["UmmAlQura","MuslimWorldLeague","Egyptian","Karachi","NorthAmerica","Dubai","Qatar","Kuwait","MoonsightingCommittee","Singapore","Turkey","Tehran"]},"madhab":{"description":"Jurisprudential Asr shadow calculation: Shafi or Hanafi","type":"string","enum":["Shafi","Hanafi"]},"highLatitudeRule":{"description":"High latitude twilight adjustment rule","type":"string","enum":["MiddleOfTheNight","SeventhOfTheNight","TwilightAngle"]},"reminderMode":{"description":"Reminder display policy: prayer_window, exact_window, persistent","type":"string","enum":["prayer_window","exact_window","persistent"]},"exactWindowMinutes":{"description":"Duration in minutes for exact_window mode. Omitted updates preserve the saved value; if unset, the service default is 20 minutes unless the operator overrides it.","type":"integer","minimum":5,"maximum":120},"locale":{"description":"Language for reminder text: en or ar","type":"string","enum":["en","ar"]},"minuteAdjustments":{"description":"Custom per-prayer minute offsets (-60 to +60). For fixed locations, combined settings must preserve timetable chronology for the current and next local day before saving; auto-travel offsets are validated when a query supplies its location.","type":"object","properties":{"fajr":{"type":"integer","minimum":-60,"maximum":60},"sunrise":{"type":"integer","minimum":-60,"maximum":60},"dhuhr":{"type":"integer","minimum":-60,"maximum":60},"asr":{"type":"integer","minimum":-60,"maximum":60},"maghrib":{"type":"integer","minimum":-60,"maximum":60},"isha":{"type":"integer","minimum":-60,"maximum":60}}},"enabled":{"description":"Whether prayer reminders are enabled","type":"boolean"}},"required":["userId"]},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true,"openWorldHint":false}},{"name":"get_next_prayer","title":"Get Upcoming Prayer and Countdown","description":"Returns the immediate next prayer name, scheduled time, authority calculation method, and remaining countdown in minutes. MANDATORY: The LLM must always explicitly disclose to the user which calculation authority method was used and why it was selected (see authorityNotice in response).","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"city":{"type":"string","description":"Supported cities: makkah, madinah, riyadh, cairo, gaza, jerusalem, alquds, ramallah, hebron, nablus, rafah, khanyunis, dubai, abudhabi, kuwait, doha, amman, istanbul, london, paris, newyork, toronto, jakarta, singapore, karachi, kualalumpur, tehran, sydney, tromso. Aliases: gazacity, nyc, kuwaitcity. Case, spaces and punctuation are ignored."},"userId":{"type":"string","minLength":1,"maxLength":256,"pattern":"\\S","description":"Nonblank user identifier; at most 256 UTF-8 bytes and 256 characters. Whitespace in nonblank identifiers is preserved."},"latitude":{"description":"Optional explicit latitude override","type":"number","minimum":-90,"maximum":90},"longitude":{"description":"Optional explicit longitude override","type":"number","minimum":-180,"maximum":180},"timezone":{"description":"IANA timezone; required in the same request when latitude/longitude are supplied. Must agree with the city or be compatible with the coordinate timezone lookup.","type":"string"},"calculationMethod":{"description":"Optional calculation authority override (auto-resolved from location by default)","type":"string","enum":["UmmAlQura","MuslimWorldLeague","Egyptian","Karachi","NorthAmerica","Dubai","Qatar","Kuwait","MoonsightingCommittee","Singapore","Turkey","Tehran"]},"madhab":{"description":"Optional Asr shadow jurisprudence override (Shafi or Hanafi)","type":"string","enum":["Shafi","Hanafi"]}},"allOf":[{"not":{"required":["city","latitude"]}},{"not":{"required":["city","longitude"]}}],"dependencies":{"latitude":["longitude","timezone"],"longitude":["latitude","timezone"]}},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"get_prayer_preferences","title":"Retrieve Stored Prayer Preferences","description":"Returns the currently active calculation settings and preferences for a user. Read-only operation.","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"userId":{"type":"string","minLength":1,"maxLength":256,"pattern":"\\S","description":"Nonblank user identifier; at most 256 UTF-8 bytes and 256 characters. Whitespace in nonblank identifiers is preserved."}},"required":["userId"]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"get_prayer_status","title":"Check Muslim Prayer Due Status","description":"Checks if a Muslim obligatory prayer (Fajr, Dhuhr, Asr, Maghrib, Isha) is currently due for the user location and returns active reminder details. MANDATORY: The LLM must always explicitly disclose to the user which calculation authority method was used and why it was selected (see authorityNotice in response).","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"city":{"type":"string","description":"Supported cities: makkah, madinah, riyadh, cairo, gaza, jerusalem, alquds, ramallah, hebron, nablus, rafah, khanyunis, dubai, abudhabi, kuwait, doha, amman, istanbul, london, paris, newyork, toronto, jakarta, singapore, karachi, kualalumpur, tehran, sydney, tromso. Aliases: gazacity, nyc, kuwaitcity. Case, spaces and punctuation are ignored."},"userId":{"type":"string","minLength":1,"maxLength":256,"pattern":"\\S","description":"Nonblank user identifier; at most 256 UTF-8 bytes and 256 characters. Whitespace in nonblank identifiers is preserved."},"latitude":{"description":"Optional explicit latitude override","type":"number","minimum":-90,"maximum":90},"longitude":{"description":"Optional explicit longitude override","type":"number","minimum":-180,"maximum":180},"timezone":{"description":"IANA timezone; required in the same request when latitude/longitude are supplied. Must agree with the city or be compatible with the coordinate timezone lookup.","type":"string"},"calculationMethod":{"description":"Optional calculation authority override (auto-resolved from location by default)","type":"string","enum":["UmmAlQura","MuslimWorldLeague","Egyptian","Karachi","NorthAmerica","Dubai","Qatar","Kuwait","MoonsightingCommittee","Singapore","Turkey","Tehran"]},"madhab":{"description":"Optional Asr shadow jurisprudence override (Shafi or Hanafi)","type":"string","enum":["Shafi","Hanafi"]}},"allOf":[{"not":{"required":["city","latitude"]}},{"not":{"required":["city","longitude"]}}],"dependencies":{"latitude":["longitude","timezone"],"longitude":["latitude","timezone"]}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}},{"name":"get_today_prayer_times","title":"Get Full Daily Prayer Timetable","description":"Retrieves today prayer timetable (Fajr, Sunrise, Dhuhr, Asr, Maghrib, Isha) in UTC and formatted local time. MANDATORY: The LLM must always explicitly disclose to the user which calculation authority method was used and why it was selected (see authorityNotice in response).","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"city":{"type":"string","description":"Supported cities: makkah, madinah, riyadh, cairo, gaza, jerusalem, alquds, ramallah, hebron, nablus, rafah, khanyunis, dubai, abudhabi, kuwait, doha, amman, istanbul, london, paris, newyork, toronto, jakarta, singapore, karachi, kualalumpur, tehran, sydney, tromso. Aliases: gazacity, nyc, kuwaitcity. Case, spaces and punctuation are ignored."},"userId":{"type":"string","minLength":1,"maxLength":256,"pattern":"\\S","description":"Nonblank user identifier; at most 256 UTF-8 bytes and 256 characters. Whitespace in nonblank identifiers is preserved."},"date":{"description":"Date in YYYY-MM-DD format (defaults to today)","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"latitude":{"description":"Optional explicit latitude override","type":"number","minimum":-90,"maximum":90},"longitude":{"description":"Optional explicit longitude override","type":"number","minimum":-180,"maximum":180},"timezone":{"description":"IANA timezone; required in the same request when latitude/longitude are supplied. Must agree with the city or be compatible with the coordinate timezone lookup.","type":"string"},"calculationMethod":{"description":"Optional calculation authority override (auto-resolved from location by default)","type":"string","enum":["UmmAlQura","MuslimWorldLeague","Egyptian","Karachi","NorthAmerica","Dubai","Qatar","Kuwait","MoonsightingCommittee","Singapore","Turkey","Tehran"]},"madhab":{"description":"Optional Asr shadow jurisprudence override (Shafi or Hanafi)","type":"string","enum":["Shafi","Hanafi"]}},"allOf":[{"not":{"required":["city","latitude"]}},{"not":{"required":["city","longitude"]}}],"dependencies":{"latitude":["longitude","timezone"],"longitude":["latitude","timezone"]}},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}}],"resources":[{"uri":"prayer://calculation-guide","name":"prayer-calculation-guide","title":"Prayer calculation and interpretation guide","description":"Reference for location selection, Asr convention, twilight calculation, high-latitude limitations, and local mosque differences.","mimeType":"text/markdown"}],"prompts":[{"name":"check_prayer_times_with_disclosure","title":"Check prayer times with calculation disclosure","description":"Get today's prayer times for an explicitly supplied city or location, including regional calculation provenance and potential mosque differences."}]}