Muslim Prayer Reminder MCP
Provides local prayer times, next prayer countdowns, and configurable reminders within AI workflows like ChatGPT, Claude, and Cursor. It supports location-aware timetables with 12 calculation methods and can be run locally or via a hosted Cloudflare Workers endpoint.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://muslim-prayer-mcp.najetareqz.workers.dev/mcpWhat its tools do
5 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.
Can change data (2)
Checks and signals
Each line is separate evidence, not a trust score.
- Passed Endpoint answered the live check ·
- Availability 1 of 1 checks passed in 30 days
What you can do with it
- Get local prayer times
- See next prayer at a glance
- Configure prayer reminders
- Connect to hosted endpoint
Source and maintenance
- Maintenance checked
Protocol and capabilities
- Server
- muslim-prayer-reminder 1.1.3
- MCP protocol negotiated in check
- 2025-11-25
- Tools
- 5 advertised
- Resources
- 1 advertised
- Resource templates
- 0 advertised
- Prompts
- 1 advertised
{
"tools": {
"listChanged": true
},
"prompts": {
"listChanged": true
},
"resources": {
"listChanged": true
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
5 advertised
get_prayer_status — Check Muslim Prayer Due Status
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).
{
"type": "object",
"allOf": [
{
"not": {
"required": [
"city",
"latitude"
]
}
},
{
"not": {
"required": [
"city",
"longitude"
]
}
}
],
"$schema": "http://json-schema.org/draft-07/schema#",
"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."
},
"madhab": {
"enum": [
"Shafi",
"Hanafi"
],
"type": "string",
"description": "Optional Asr shadow jurisprudence override (Shafi or Hanafi)"
},
"userId": {
"type": "string",
"pattern": "\\S",
"maxLength": 256,
"minLength": 1,
"description": "Nonblank user identifier; at most 256 UTF-8 bytes and 256 characters. Whitespace in nonblank identifiers is preserved."
},
"latitude": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Optional explicit latitude override"
},
"timezone": {
"type": "string",
"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."
},
"longitude": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Optional explicit longitude override"
},
"calculationMethod": {
"enum": [
"UmmAlQura",
"MuslimWorldLeague",
"Egyptian",
"Karachi",
"NorthAmerica",
"Dubai",
"Qatar",
"Kuwait",
"MoonsightingCommittee",
"Singapore",
"Turkey",
"Tehran"
],
"type": "string",
"description": "Optional calculation authority override (auto-resolved from location by default)"
}
},
"dependencies": {
"latitude": [
"longitude",
"timezone"
],
"longitude": [
"latitude",
"timezone"
]
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"reminderDue",
"localDate",
"nextPrayer",
"nextPrayerAtUtc",
"timezone",
"calculationMethod",
"madhab",
"authorityNotice"
],
"properties": {
"madhab": {
"enum": [
"Shafi",
"Hanafi"
],
"type": "string",
"description": "Active Asr jurisprudence"
},
"prayer": {
"type": "string",
"description": "The name of the currently due prayer if applicable"
},
"timezone": {
"type": "string",
"description": "Resolved IANA timezone"
},
"localDate": {
"type": "string",
"description": "Current local date in YYYY-MM-DD"
},
"nextPrayer": {
"type": "string",
"description": "The name of the next upcoming prayer"
},
"reminderDue": {
"type": "boolean",
"description": "Whether a prayer is currently due for reminder"
},
"expiresAtUtc": {
"type": "string",
"description": "UTC expiration time of the active prayer window"
},
"reminderText": {
"type": "string",
"description": "Localized reminder message"
},
"startedAtUtc": {
"type": "string",
"description": "UTC start time of the active prayer window"
},
"authorityNotice": {
"type": "object",
"required": [
"method",
"madhab",
"authorityDescription",
"selectionReason",
"requiredDisplayInstruction"
],
"properties": {
"madhab": {
"enum": [
"Shafi",
"Hanafi"
],
"type": "string",
"description": "The Asr jurisprudence school"
},
"method": {
"enum": [
"UmmAlQura",
"MuslimWorldLeague",
"Egyptian",
"Karachi",
"NorthAmerica",
"Dubai",
"Qatar",
"Kuwait",
"MoonsightingCommittee",
"Singapore",
"Turkey",
"Tehran"
],
"type": "string",
"description": "The calculation authority method"
},
"selectionReason": {
"type": "string",
"description": "Rationale for selecting this authority"
},
"authorityDescription": {
"type": "string",
"description": "Full descriptive name of the calculation authority"
},
"requiredDisplayInstruction": {
"type": "string",
"description": "Mandatory theological notice for AI presentation"
}
},
"description": "Mandatory theological transparency notice; detailed provenance is at top level",
"additionalProperties": false
},
"nextPrayerAtUtc": {
"type": "string",
"description": "UTC timestamp of the next upcoming prayer"
},
"selectionReason": {
"type": "string",
"description": "Reason for authority selection"
},
"calculationMethod": {
"enum": [
"UmmAlQura",
"MuslimWorldLeague",
"Egyptian",
"Karachi",
"NorthAmerica",
"Dubai",
"Qatar",
"Kuwait",
"MoonsightingCommittee",
"Singapore",
"Turkey",
"Tehran"
],
"type": "string",
"description": "Active calculation authority"
},
"minuteAdjustments": {
"type": "object",
"properties": {
"asr": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"fajr": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"isha": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"dhuhr": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"maghrib": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"sunrise": {
"type": "integer",
"maximum": 60,
"minimum": -60
}
},
"description": "Applied minute adjustments",
"additionalProperties": false
},
"calculationDetails": {
"type": "object",
"properties": {
"madhabSource": {
"enum": [
"explicit_override",
"stored_preference",
"geographic_default"
],
"type": "string"
},
"methodSource": {
"enum": [
"explicit_override",
"stored_preference",
"geographic_default"
],
"type": "string"
},
"locationBasis": {
"enum": [
"explicit_coordinates",
"explicit_city",
"stored_fixed_coordinates",
"stored_fixed_city",
"host_coordinates",
"host_city",
"network_geolocation",
"default_location"
],
"type": "string"
},
"timezoneSource": {
"enum": [
"explicit_override",
"stored_preference",
"city_default",
"host_header"
],
"type": "string",
"description": "Source of the validated timezone or disclosed ocean/pole choice"
},
"expectedTimezone": {
"type": "string",
"description": "Timezone from city registry or approximate coordinate lookup"
},
"timezoneValidation": {
"enum": [
"coordinate_lookup",
"nearby_boundary",
"city_registry",
"polar_choice",
"ocean_choice"
],
"type": "string",
"description": "Validation basis; ocean locations require the matching nautical timezone or an adjacent coastal civil timezone; mathematical poles allow an explicit civil timezone with disclosure"
},
"fallbackLocationUsed": {
"type": "boolean"
},
"locationIsApproximate": {
"type": "boolean"
},
"highLatitudeRuleSource": {
"enum": [
"stored_preference",
"geographic_default"
],
"type": "string"
},
"customMinuteAdjustments": {
"type": "object",
"properties": {
"asr": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"fajr": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"isha": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"dhuhr": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"maghrib": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"sunrise": {
"type": "integer",
"maximum": 60,
"minimum": -60
}
},
"additionalProperties": false
},
"methodMinuteAdjustments": {
"type": "object",
"properties": {
"asr": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"fajr": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"isha": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"dhuhr": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"maghrib": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"sunrise": {
"type": "integer",
"maximum": 60,
"minimum": -60
}
},
"additionalProperties": false
},
"appliedMinuteAdjustments": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "number"
}
},
"calendarAlignmentAdjusted": {
"type": "boolean"
},
"regionalMinuteAdjustments": {
"type": "object",
"properties": {
"asr": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"fajr": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"isha": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"dhuhr": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"maghrib": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"sunrise": {
"type": "integer",
"maximum": 60,
"minimum": -60
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
"authorityDescription": {
"type": "string",
"description": "Description of the calculation authority"
},
"nextPrayerCalculation": {
"type": "object",
"required": [
"localDate",
"usesCurrentCalculation"
],
"properties": {
"localDate": {
"type": "string"
},
"authorityNotice": {
"type": "object",
"required": [
"method",
"madhab",
"authorityDescription",
"selectionReason",
"requiredDisplayInstruction"
],
"properties": {
"madhab": {
"enum": [
"Shafi",
"Hanafi"
],
"type": "string",
"description": "The Asr jurisprudence school"
},
"method": {
"enum": [
"UmmAlQura",
"MuslimWorldLeague",
"Egyptian",
"Karachi",
"NorthAmerica",
"Dubai",
"Qatar",
"Kuwait",
"MoonsightingCommittee",
"Singapore",
"Turkey",
"Tehran"
],
"type": "string",
"description": "The calculation authority method"
},
"selectionReason": {
"type": "string",
"description": "Rationale for selecting this authority"
},
"authorityDescription": {
"type": "string",
"description": "Full descriptive name of the calculation authority"
},
"requiredDisplayInstruction": {
"type": "string",
"description": "Mandatory theological notice for AI presentation"
}
},
"additionalProperties": false
},
"calculationDetails": {
"type": "object",
"properties": {
"madhabSource": {
"enum": [
"explicit_override",
"stored_preference",
"geographic_default"
],
"type": "string"
},
"methodSource": {
"enum": [
"explicit_override",
"stored_preference",
"geographic_default"
],
"type": "string"
},
"locationBasis": {
"enum": [
"explicit_coordinates",
"explicit_city",
"stored_fixed_coordinates",
"stored_fixed_city",
"host_coordinates",
"host_city",
"network_geolocation",
"default_location"
],
"type": "string"
},
"timezoneSource": {
"enum": [
"explicit_override",
"stored_preference",
"city_default",
"host_header"
],
"type": "string",
"description": "Source of the validated timezone or disclosed ocean/pole choice"
},
"expectedTimezone": {
"type": "string",
"description": "Timezone from city registry or approximate coordinate lookup"
},
"timezoneValidation": {
"enum": [
"coordinate_lookup",
"nearby_boundary",
"city_registry",
"polar_choice",
"ocean_choice"
],
"type": "string",
"description": "Validation basis; ocean locations require the matching nautical timezone or an adjacent coastal civil timezone; mathematical poles allow an explicit civil timezone with disclosure"
},
"fallbackLocationUsed": {
"type": "boolean"
},
"locationIsApproximate": {
"type": "boolean"
},
"highLatitudeRuleSource": {
"enum": [
"stored_preference",
"geographic_default"
],
"type": "string"
},
"customMinuteAdjustments": {
"type": "object",
"properties": {
"asr": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"fajr": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"isha": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"dhuhr": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"maghrib": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"sunrise": {
"type": "integer",
"maximum": 60,
"minimum": -60
}
},
"additionalProperties": false
},
"methodMinuteAdjustments": {
"type": "object",
"properties": {
"asr": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"fajr": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"isha": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"dhuhr": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"maghrib": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"sunrise": {
"type": "integer",
"maximum": 60,
"minimum": -60
}
},
"additionalProperties": false
},
"appliedMinuteAdjustments": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "number"
}
},
"calendarAlignmentAdjusted": {
"type": "boolean"
},
"regionalMinuteAdjustments": {
"type": "object",
"properties": {
"asr": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"fajr": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"isha": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"dhuhr": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"maghrib": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"sunrise": {
"type": "integer",
"maximum": 60,
"minimum": -60
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
"highLatitudeAdjustment": {
"type": "object",
"required": [
"applied",
"rule",
"astronomicalLatitudeClamped",
"adjustedPrayers",
"explanation"
],
"properties": {
"rule": {
"enum": [
"MiddleOfTheNight",
"SeventhOfTheNight",
"TwilightAngle"
],
"type": "string"
},
"applied": {
"type": "boolean"
},
"explanation": {
"type": "string"
},
"adjustedPrayers": {
"type": "array",
"items": {
"enum": [
"Fajr",
"Sunrise",
"Dhuhr",
"Asr",
"Maghrib",
"Isha"
],
"type": "string"
}
},
"effectiveLatitude": {
"anyOf": [
{
"type": "number",
"const": 48
},
{
"type": "number",
"const": -48
}
],
"description": "Substitute latitude only; never the user coordinate"
},
"methodSpecificTwilightRule": {
"type": "string",
"const": "MoonsightingCommittee"
},
"astronomicalLatitudeClamped": {
"type": "boolean"
}
},
"additionalProperties": false
},
"usesCurrentCalculation": {
"type": "boolean",
"description": "If true, this next event uses the top-level calculationDetails, highLatitudeAdjustment and authorityNotice; duplicate fields are omitted. Otherwise its own distinct metadata is included."
}
},
"description": "Adjustment disclosure for the actual schedule of the next event, including tomorrow",
"additionalProperties": false
},
"highLatitudeAdjustment": {
"type": "object",
"required": [
"applied",
"rule",
"astronomicalLatitudeClamped",
"adjustedPrayers",
"explanation"
],
"properties": {
"rule": {
"enum": [
"MiddleOfTheNight",
"SeventhOfTheNight",
"TwilightAngle"
],
"type": "string"
},
"applied": {
"type": "boolean"
},
"explanation": {
"type": "string"
},
"adjustedPrayers": {
"type": "array",
"items": {
"enum": [
"Fajr",
"Sunrise",
"Dhuhr",
"Asr",
"Maghrib",
"Isha"
],
"type": "string"
}
},
"effectiveLatitude": {
"anyOf": [
{
"type": "number",
"const": 48
},
{
"type": "number",
"const": -48
}
],
"description": "Substitute latitude only; never the user coordinate"
},
"methodSpecificTwilightRule": {
"type": "string",
"const": "MoonsightingCommittee"
},
"astronomicalLatitudeClamped": {
"type": "boolean"
}
},
"additionalProperties": false
},
"prayerWindowExpiresAtUtc": {
"type": "string",
"description": "End of the active prayer period; same boundary as legacy expiresAtUtc"
},
"reminderWindowExpiresAtUtc": {
"type": "string",
"description": "Reminder eligibility end; exact_window is capped by the prayer period boundary. Fields appear when a reminder is emitted."
}
},
"additionalProperties": false
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}get_today_prayer_times — Get Full Daily Prayer Timetable
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).
{
"type": "object",
"allOf": [
{
"not": {
"required": [
"city",
"latitude"
]
}
},
{
"not": {
"required": [
"city",
"longitude"
]
}
}
],
"$schema": "http://json-schema.org/draft-07/schema#",
"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."
},
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Date in YYYY-MM-DD format (defaults to today)"
},
"madhab": {
"enum": [
"Shafi",
"Hanafi"
],
"type": "string",
"description": "Optional Asr shadow jurisprudence override (Shafi or Hanafi)"
},
"userId": {
"type": "string",
"pattern": "\\S",
"maxLength": 256,
"minLength": 1,
"description": "Nonblank user identifier; at most 256 UTF-8 bytes and 256 characters. Whitespace in nonblank identifiers is preserved."
},
"latitude": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Optional explicit latitude override"
},
"timezone": {
"type": "string",
"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."
},
"longitude": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Optional explicit longitude override"
},
"calculationMethod": {
"enum": [
"UmmAlQura",
"MuslimWorldLeague",
"Egyptian",
"Karachi",
"NorthAmerica",
"Dubai",
"Qatar",
"Kuwait",
"MoonsightingCommittee",
"Singapore",
"Turkey",
"Tehran"
],
"type": "string",
"description": "Optional calculation authority override (auto-resolved from location by default)"
}
},
"dependencies": {
"latitude": [
"longitude",
"timezone"
],
"longitude": [
"latitude",
"timezone"
]
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"localDate",
"timezone",
"calculationMethod",
"madhab",
"timesUtc",
"timesLocal"
],
"properties": {
"madhab": {
"enum": [
"Shafi",
"Hanafi"
],
"type": "string",
"description": "Active Asr jurisprudence"
},
"timesUtc": {
"type": "object",
"required": [
"fajr",
"sunrise",
"dhuhr",
"asr",
"maghrib",
"isha"
],
"properties": {
"asr": {
"type": "string",
"description": "Asr UTC timestamp"
},
"fajr": {
"type": "string",
"description": "Fajr UTC timestamp"
},
"isha": {
"type": "string",
"description": "Isha UTC timestamp"
},
"dhuhr": {
"type": "string",
"description": "Dhuhr UTC timestamp"
},
"maghrib": {
"type": "string",
"description": "Maghrib UTC timestamp"
},
"sunrise": {
"type": "string",
"description": "Sunrise UTC timestamp"
}
},
"additionalProperties": false
},
"timezone": {
"type": "string",
"description": "Resolved IANA timezone"
},
"localDate": {
"type": "string",
"description": "Local schedule date YYYY-MM-DD"
},
"timesLocal": {
"type": "object",
"required": [
"Fajr",
"Sunrise",
"Dhuhr",
"Asr",
"Maghrib",
"Isha"
],
"properties": {
"Asr": {
"type": "string",
"description": "Asr local 24h time HH:mm"
},
"Fajr": {
"type": "string",
"description": "Fajr local 24h time HH:mm"
},
"Isha": {
"type": "string",
"description": "Isha local 24h time HH:mm"
},
"Dhuhr": {
"type": "string",
"description": "Dhuhr local 24h time HH:mm"
},
"Maghrib": {
"type": "string",
"description": "Maghrib local 24h time HH:mm"
},
"Sunrise": {
"type": "string",
"description": "Sunrise local 24h time HH:mm"
}
},
"additionalProperties": false
},
"authorityNotice": {
"type": "object",
"required": [
"method",
"madhab",
"authorityDescription",
"selectionReason",
"requiredDisplayInstruction"
],
"properties": {
"madhab": {
"enum": [
"Shafi",
"Hanafi"
],
"type": "string",
"description": "The Asr jurisprudence school"
},
"method": {
"enum": [
"UmmAlQura",
"MuslimWorldLeague",
"Egyptian",
"Karachi",
"NorthAmerica",
"Dubai",
"Qatar",
"Kuwait",
"MoonsightingCommittee",
"Singapore",
"Turkey",
"Tehran"
],
"type": "string",
"description": "The calculation authority method"
},
"selectionReason": {
"type": "string",
"description": "Rationale for selecting this authority"
},
"calculationDetails": {
"type": "object",
"properties": {
"madhabSource": {
"enum": [
"explicit_override",
"stored_preference",
"geographic_default"
],
"type": "string"
},
"methodSource": {
"enum": [
"explicit_override",
"stored_preference",
"geographic_default"
],
"type": "string"
},
"locationBasis": {
"enum": [
"explicit_coordinates",
"explicit_city",
"stored_fixed_coordinates",
"stored_fixed_city",
"host_coordinates",
"host_city",
"network_geolocation",
"default_location"
],
"type": "string"
},
"timezoneSource": {
"enum": [
"explicit_override",
"stored_preference",
"city_default",
"host_header"
],
"type": "string",
"description": "Source of the validated timezone or disclosed ocean/pole choice"
},
"expectedTimezone": {
"type": "string",
"description": "Timezone from city registry or approximate coordinate lookup"
},
"timezoneValidation": {
"enum": [
"coordinate_lookup",
"nearby_boundary",
"city_registry",
"polar_choice",
"ocean_choice"
],
"type": "string",
"description": "Validation basis; ocean locations require the matching nautical timezone or an adjacent coastal civil timezone; mathematical poles allow an explicit civil timezone with disclosure"
},
"fallbackLocationUsed": {
"type": "boolean"
},
"locationIsApproximate": {
"type": "boolean"
},
"highLatitudeRuleSource": {
"enum": [
"stored_preference",
"geographic_default"
],
"type": "string"
},
"customMinuteAdjustments": {
"type": "object",
"properties": {
"asr": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"fajr": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"isha": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"dhuhr": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"maghrib": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"sunrise": {
"type": "integer",
"maximum": 60,
"minimum": -60
}
},
"additionalProperties": false
},
"methodMinuteAdjustments": {
"type": "object",
"properties": {
"asr": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"fajr": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"isha": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"dhuhr": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"maghrib": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"sunrise": {
"type": "integer",
"maximum": 60,
"minimum": -60
}
},
"additionalProperties": false
},
"appliedMinuteAdjustments": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "number"
}
},
"calendarAlignmentAdjusted": {
"type": "boolean"
},
"regionalMinuteAdjustments": {
"type": "object",
"properties": {
"asr": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"fajr": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"isha": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"dhuhr": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"maghrib": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"sunrise": {
"type": "integer",
"maximum": 60,
"minimum": -60
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
"authorityDescription": {
"type": "string",
"description": "Full descriptive name of the calculation authority"
},
"highLatitudeAdjustment": {
"type": "object",
"required": [
"applied",
"rule",
"astronomicalLatitudeClamped",
"adjustedPrayers",
"explanation"
],
"properties": {
"rule": {
"enum": [
"MiddleOfTheNight",
"SeventhOfTheNight",
"TwilightAngle"
],
"type": "string"
},
"applied": {
"type": "boolean"
},
"explanation": {
"type": "string"
},
"adjustedPrayers": {
"type": "array",
"items": {
"enum": [
"Fajr",
"Sunrise",
"Dhuhr",
"Asr",
"Maghrib",
"Isha"
],
"type": "string"
}
},
"effectiveLatitude": {
"anyOf": [
{
"type": "number",
"const": 48
},
{
"type": "number",
"const": -48
}
],
"description": "Substitute latitude only; never the user coordinate"
},
"methodSpecificTwilightRule": {
"type": "string",
"const": "MoonsightingCommittee"
},
"astronomicalLatitudeClamped": {
"type": "boolean"
}
},
"additionalProperties": false
},
"requiredDisplayInstruction": {
"type": "string",
"description": "Mandatory theological notice for AI presentation"
}
},
"additionalProperties": false
},
"selectionReason": {
"type": "string"
},
"calculationMethod": {
"enum": [
"UmmAlQura",
"MuslimWorldLeague",
"Egyptian",
"Karachi",
"NorthAmerica",
"Dubai",
"Qatar",
"Kuwait",
"MoonsightingCommittee",
"Singapore",
"Turkey",
"Tehran"
],
"type": "string",
"description": "Active calculation authority"
},
"minuteAdjustments": {
"type": "object",
"properties": {
"asr": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"fajr": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"isha": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"dhuhr": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"maghrib": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"sunrise": {
"type": "integer",
"maximum": 60,
"minimum": -60
}
},
"additionalProperties": false
},
"calculationDetails": {
"type": "object",
"properties": {
"madhabSource": {
"enum": [
"explicit_override",
"stored_preference",
"geographic_default"
],
"type": "string"
},
"methodSource": {
"enum": [
"explicit_override",
"stored_preference",
"geographic_default"
],
"type": "string"
},
"locationBasis": {
"enum": [
"explicit_coordinates",
"explicit_city",
"stored_fixed_coordinates",
"stored_fixed_city",
"host_coordinates",
"host_city",
"network_geolocation",
"default_location"
],
"type": "string"
},
"timezoneSource": {
"enum": [
"explicit_override",
"stored_preference",
"city_default",
"host_header"
],
"type": "string",
"description": "Source of the validated timezone or disclosed ocean/pole choice"
},
"expectedTimezone": {
"type": "string",
"description": "Timezone from city registry or approximate coordinate lookup"
},
"timezoneValidation": {
"enum": [
"coordinate_lookup",
"nearby_boundary",
"city_registry",
"polar_choice",
"ocean_choice"
],
"type": "string",
"description": "Validation basis; ocean locations require the matching nautical timezone or an adjacent coastal civil timezone; mathematical poles allow an explicit civil timezone with disclosure"
},
"fallbackLocationUsed": {
"type": "boolean"
},
"locationIsApproximate": {
"type": "boolean"
},
"highLatitudeRuleSource": {
"enum": [
"stored_preference",
"geographic_default"
],
"type": "string"
},
"customMinuteAdjustments": {
"type": "object",
"properties": {
"asr": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"fajr": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"isha": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"dhuhr": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"maghrib": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"sunrise": {
"type": "integer",
"maximum": 60,
"minimum": -60
}
},
"additionalProperties": false
},
"methodMinuteAdjustments": {
"type": "object",
"properties": {
"asr": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"fajr": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"isha": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"dhuhr": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"maghrib": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"sunrise": {
"type": "integer",
"maximum": 60,
"minimum": -60
}
},
"additionalProperties": false
},
"appliedMinuteAdjustments": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "number"
}
},
"calendarAlignmentAdjusted": {
"type": "boolean"
},
"regionalMinuteAdjustments": {
"type": "object",
"properties": {
"asr": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"fajr": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"isha": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"dhuhr": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"maghrib": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"sunrise": {
"type": "integer",
"maximum": 60,
"minimum": -60
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
"authorityDescription": {
"type": "string"
},
"highLatitudeAdjustment": {
"type": "object",
"required": [
"applied",
"rule",
"astronomicalLatitudeClamped",
"adjustedPrayers",
"explanation"
],
"properties": {
"rule": {
"enum": [
"MiddleOfTheNight",
"SeventhOfTheNight",
"TwilightAngle"
],
"type": "string"
},
"applied": {
"type": "boolean"
},
"explanation": {
"type": "string"
},
"adjustedPrayers": {
"type": "array",
"items": {
"enum": [
"Fajr",
"Sunrise",
"Dhuhr",
"Asr",
"Maghrib",
"Isha"
],
"type": "string"
}
},
"effectiveLatitude": {
"anyOf": [
{
"type": "number",
"const": 48
},
{
"type": "number",
"const": -48
}
],
"description": "Substitute latitude only; never the user coordinate"
},
"methodSpecificTwilightRule": {
"type": "string",
"const": "MoonsightingCommittee"
},
"astronomicalLatitudeClamped": {
"type": "boolean"
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}get_next_prayer — Get Upcoming Prayer and Countdown
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).
{
"type": "object",
"allOf": [
{
"not": {
"required": [
"city",
"latitude"
]
}
},
{
"not": {
"required": [
"city",
"longitude"
]
}
}
],
"$schema": "http://json-schema.org/draft-07/schema#",
"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."
},
"madhab": {
"enum": [
"Shafi",
"Hanafi"
],
"type": "string",
"description": "Optional Asr shadow jurisprudence override (Shafi or Hanafi)"
},
"userId": {
"type": "string",
"pattern": "\\S",
"maxLength": 256,
"minLength": 1,
"description": "Nonblank user identifier; at most 256 UTF-8 bytes and 256 characters. Whitespace in nonblank identifiers is preserved."
},
"latitude": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Optional explicit latitude override"
},
"timezone": {
"type": "string",
"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."
},
"longitude": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Optional explicit longitude override"
},
"calculationMethod": {
"enum": [
"UmmAlQura",
"MuslimWorldLeague",
"Egyptian",
"Karachi",
"NorthAmerica",
"Dubai",
"Qatar",
"Kuwait",
"MoonsightingCommittee",
"Singapore",
"Turkey",
"Tehran"
],
"type": "string",
"description": "Optional calculation authority override (auto-resolved from location by default)"
}
},
"dependencies": {
"latitude": [
"longitude",
"timezone"
],
"longitude": [
"latitude",
"timezone"
]
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"currentLocalDate",
"timezone",
"nextPrayer",
"nextPrayerAtUtc",
"nextPrayerLocalTime",
"remainingMinutes",
"calculationMethod",
"madhab"
],
"properties": {
"madhab": {
"enum": [
"Shafi",
"Hanafi"
],
"type": "string",
"description": "Active Asr jurisprudence"
},
"timezone": {
"type": "string",
"description": "Resolved IANA timezone"
},
"nextPrayer": {
"type": "string",
"description": "Name of the upcoming prayer"
},
"authorityNotice": {
"type": "object",
"required": [
"method",
"madhab",
"authorityDescription",
"selectionReason",
"requiredDisplayInstruction"
],
"properties": {
"madhab": {
"enum": [
"Shafi",
"Hanafi"
],
"type": "string",
"description": "The Asr jurisprudence school"
},
"method": {
"enum": [
"UmmAlQura",
"MuslimWorldLeague",
"Egyptian",
"Karachi",
"NorthAmerica",
"Dubai",
"Qatar",
"Kuwait",
"MoonsightingCommittee",
"Singapore",
"Turkey",
"Tehran"
],
"type": "string",
"description": "The calculation authority method"
},
"selectionReason": {
"type": "string",
"description": "Rationale for selecting this authority"
},
"calculationDetails": {
"type": "object",
"properties": {
"madhabSource": {
"enum": [
"explicit_override",
"stored_preference",
"geographic_default"
],
"type": "string"
},
"methodSource": {
"enum": [
"explicit_override",
"stored_preference",
"geographic_default"
],
"type": "string"
},
"locationBasis": {
"enum": [
"explicit_coordinates",
"explicit_city",
"stored_fixed_coordinates",
"stored_fixed_city",
"host_coordinates",
"host_city",
"network_geolocation",
"default_location"
],
"type": "string"
},
"timezoneSource": {
"enum": [
"explicit_override",
"stored_preference",
"city_default",
"host_header"
],
"type": "string",
"description": "Source of the validated timezone or disclosed ocean/pole choice"
},
"expectedTimezone": {
"type": "string",
"description": "Timezone from city registry or approximate coordinate lookup"
},
"timezoneValidation": {
"enum": [
"coordinate_lookup",
"nearby_boundary",
"city_registry",
"polar_choice",
"ocean_choice"
],
"type": "string",
"description": "Validation basis; ocean locations require the matching nautical timezone or an adjacent coastal civil timezone; mathematical poles allow an explicit civil timezone with disclosure"
},
"fallbackLocationUsed": {
"type": "boolean"
},
"locationIsApproximate": {
"type": "boolean"
},
"highLatitudeRuleSource": {
"enum": [
"stored_preference",
"geographic_default"
],
"type": "string"
},
"customMinuteAdjustments": {
"type": "object",
"properties": {
"asr": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"fajr": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"isha": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"dhuhr": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"maghrib": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"sunrise": {
"type": "integer",
"maximum": 60,
"minimum": -60
}
},
"additionalProperties": false
},
"methodMinuteAdjustments": {
"type": "object",
"properties": {
"asr": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"fajr": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"isha": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"dhuhr": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"maghrib": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"sunrise": {
"type": "integer",
"maximum": 60,
"minimum": -60
}
},
"additionalProperties": false
},
"appliedMinuteAdjustments": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "number"
}
},
"calendarAlignmentAdjusted": {
"type": "boolean"
},
"regionalMinuteAdjustments": {
"type": "object",
"properties": {
"asr": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"fajr": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"isha": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"dhuhr": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"maghrib": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"sunrise": {
"type": "integer",
"maximum": 60,
"minimum": -60
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
"authorityDescription": {
"type": "string",
"description": "Full descriptive name of the calculation authority"
},
"highLatitudeAdjustment": {
"type": "object",
"required": [
"applied",
"rule",
"astronomicalLatitudeClamped",
"adjustedPrayers",
"explanation"
],
"properties": {
"rule": {
"enum": [
"MiddleOfTheNight",
"SeventhOfTheNight",
"TwilightAngle"
],
"type": "string"
},
"applied": {
"type": "boolean"
},
"explanation": {
"type": "string"
},
"adjustedPrayers": {
"type": "array",
"items": {
"enum": [
"Fajr",
"Sunrise",
"Dhuhr",
"Asr",
"Maghrib",
"Isha"
],
"type": "string"
}
},
"effectiveLatitude": {
"anyOf": [
{
"type": "number",
"const": 48
},
{
"type": "number",
"const": -48
}
],
"description": "Substitute latitude only; never the user coordinate"
},
"methodSpecificTwilightRule": {
"type": "string",
"const": "MoonsightingCommittee"
},
"astronomicalLatitudeClamped": {
"type": "boolean"
}
},
"additionalProperties": false
},
"requiredDisplayInstruction": {
"type": "string",
"description": "Mandatory theological notice for AI presentation"
}
},
"additionalProperties": false
},
"nextPrayerAtUtc": {
"type": "string",
"description": "UTC timestamp of the upcoming prayer"
},
"selectionReason": {
"type": "string"
},
"currentLocalDate": {
"type": "string",
"description": "Current local date YYYY-MM-DD"
},
"remainingMinutes": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Minutes remaining until prayer start"
},
"calculationMethod": {
"enum": [
"UmmAlQura",
"MuslimWorldLeague",
"Egyptian",
"Karachi",
"NorthAmerica",
"Dubai",
"Qatar",
"Kuwait",
"MoonsightingCommittee",
"Singapore",
"Turkey",
"Tehran"
],
"type": "string",
"description": "Active calculation authority"
},
"minuteAdjustments": {
"type": "object",
"properties": {
"asr": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"fajr": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"isha": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"dhuhr": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"maghrib": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"sunrise": {
"type": "integer",
"maximum": 60,
"minimum": -60
}
},
"additionalProperties": false
},
"calculationDetails": {
"type": "object",
"properties": {
"madhabSource": {
"enum": [
"explicit_override",
"stored_preference",
"geographic_default"
],
"type": "string"
},
"methodSource": {
"enum": [
"explicit_override",
"stored_preference",
"geographic_default"
],
"type": "string"
},
"locationBasis": {
"enum": [
"explicit_coordinates",
"explicit_city",
"stored_fixed_coordinates",
"stored_fixed_city",
"host_coordinates",
"host_city",
"network_geolocation",
"default_location"
],
"type": "string"
},
"timezoneSource": {
"enum": [
"explicit_override",
"stored_preference",
"city_default",
"host_header"
],
"type": "string",
"description": "Source of the validated timezone or disclosed ocean/pole choice"
},
"expectedTimezone": {
"type": "string",
"description": "Timezone from city registry or approximate coordinate lookup"
},
"timezoneValidation": {
"enum": [
"coordinate_lookup",
"nearby_boundary",
"city_registry",
"polar_choice",
"ocean_choice"
],
"type": "string",
"description": "Validation basis; ocean locations require the matching nautical timezone or an adjacent coastal civil timezone; mathematical poles allow an explicit civil timezone with disclosure"
},
"fallbackLocationUsed": {
"type": "boolean"
},
"locationIsApproximate": {
"type": "boolean"
},
"highLatitudeRuleSource": {
"enum": [
"stored_preference",
"geographic_default"
],
"type": "string"
},
"customMinuteAdjustments": {
"type": "object",
"properties": {
"asr": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"fajr": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"isha": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"dhuhr": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"maghrib": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"sunrise": {
"type": "integer",
"maximum": 60,
"minimum": -60
}
},
"additionalProperties": false
},
"methodMinuteAdjustments": {
"type": "object",
"properties": {
"asr": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"fajr": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"isha": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"dhuhr": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"maghrib": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"sunrise": {
"type": "integer",
"maximum": 60,
"minimum": -60
}
},
"additionalProperties": false
},
"appliedMinuteAdjustments": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "number"
}
},
"calendarAlignmentAdjusted": {
"type": "boolean"
},
"regionalMinuteAdjustments": {
"type": "object",
"properties": {
"asr": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"fajr": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"isha": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"dhuhr": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"maghrib": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"sunrise": {
"type": "integer",
"maximum": 60,
"minimum": -60
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
"nextPrayerLocalTime": {
"type": "string",
"description": "Formatted local time HH:mm"
},
"authorityDescription": {
"type": "string"
},
"highLatitudeAdjustment": {
"type": "object",
"required": [
"applied",
"rule",
"astronomicalLatitudeClamped",
"adjustedPrayers",
"explanation"
],
"properties": {
"rule": {
"enum": [
"MiddleOfTheNight",
"SeventhOfTheNight",
"TwilightAngle"
],
"type": "string"
},
"applied": {
"type": "boolean"
},
"explanation": {
"type": "string"
},
"adjustedPrayers": {
"type": "array",
"items": {
"enum": [
"Fajr",
"Sunrise",
"Dhuhr",
"Asr",
"Maghrib",
"Isha"
],
"type": "string"
}
},
"effectiveLatitude": {
"anyOf": [
{
"type": "number",
"const": 48
},
{
"type": "number",
"const": -48
}
],
"description": "Substitute latitude only; never the user coordinate"
},
"methodSpecificTwilightRule": {
"type": "string",
"const": "MoonsightingCommittee"
},
"astronomicalLatitudeClamped": {
"type": "boolean"
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}configure_prayer_preferences — Configure User Prayer Preferences
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.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"userId"
],
"properties": {
"locale": {
"enum": [
"en",
"ar"
],
"type": "string",
"description": "Language for reminder text: en or ar"
},
"madhab": {
"enum": [
"Shafi",
"Hanafi"
],
"type": "string",
"description": "Jurisprudential Asr shadow calculation: Shafi or Hanafi"
},
"userId": {
"type": "string",
"pattern": "\\S",
"maxLength": 256,
"minLength": 1,
"description": "Nonblank user identifier; at most 256 UTF-8 bytes and 256 characters. Whitespace in nonblank identifiers is preserved."
},
"enabled": {
"type": "boolean",
"description": "Whether prayer reminders are enabled"
},
"timezone": {
"type": "string",
"description": "IANA timezone identifier (e.g. Asia/Riyadh, Europe/London)"
},
"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."
},
"locationMode": {
"enum": [
"auto_travel",
"fixed"
],
"type": "string",
"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."
},
"reminderMode": {
"enum": [
"prayer_window",
"exact_window",
"persistent"
],
"type": "string",
"description": "Reminder display policy: prayer_window, exact_window, persistent"
},
"fixedCoordinates": {
"type": "object",
"required": [
"latitude",
"longitude"
],
"properties": {
"latitude": {
"type": "number",
"maximum": 90,
"minimum": -90
},
"longitude": {
"type": "number",
"maximum": 180,
"minimum": -180
}
},
"description": "Fixed geographical coordinates"
},
"highLatitudeRule": {
"enum": [
"MiddleOfTheNight",
"SeventhOfTheNight",
"TwilightAngle"
],
"type": "string",
"description": "High latitude twilight adjustment rule"
},
"calculationMethod": {
"enum": [
"UmmAlQura",
"MuslimWorldLeague",
"Egyptian",
"Karachi",
"NorthAmerica",
"Dubai",
"Qatar",
"Kuwait",
"MoonsightingCommittee",
"Singapore",
"Turkey",
"Tehran"
],
"type": "string",
"description": "Islamic prayer calculation authority"
},
"minuteAdjustments": {
"type": "object",
"properties": {
"asr": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"fajr": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"isha": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"dhuhr": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"maghrib": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"sunrise": {
"type": "integer",
"maximum": 60,
"minimum": -60
}
},
"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."
},
"clearFixedLocation": {
"type": "boolean",
"description": "Remove stored fixedCity, fixedCoordinates and timezone. Switches to auto_travel unless locationMode is supplied. Cannot combine with a new fixed location/timezone."
},
"exactWindowMinutes": {
"type": "integer",
"maximum": 120,
"minimum": 5,
"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": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"success",
"preferences"
],
"properties": {
"success": {
"type": "boolean",
"description": "Whether configuration succeeded"
},
"preferences": {
"type": "object",
"required": [
"fixedCoordinatesConfigured",
"fixedCityConfigured"
],
"properties": {
"locale": {
"enum": [
"en",
"ar"
],
"type": "string"
},
"madhab": {
"enum": [
"Shafi",
"Hanafi"
],
"type": "string"
},
"enabled": {
"type": "boolean"
},
"message": {
"type": "string"
},
"timezone": {
"type": "string"
},
"fixedCity": {
"type": "string"
},
"locationMode": {
"enum": [
"auto_travel",
"fixed"
],
"type": "string"
},
"reminderMode": {
"enum": [
"prayer_window",
"exact_window",
"persistent"
],
"type": "string"
},
"updatedAtUtc": {
"type": "string"
},
"highLatitudeRule": {
"enum": [
"MiddleOfTheNight",
"SeventhOfTheNight",
"TwilightAngle"
],
"type": "string"
},
"calculationMethod": {
"enum": [
"UmmAlQura",
"MuslimWorldLeague",
"Egyptian",
"Karachi",
"NorthAmerica",
"Dubai",
"Qatar",
"Kuwait",
"MoonsightingCommittee",
"Singapore",
"Turkey",
"Tehran"
],
"type": "string"
},
"minuteAdjustments": {
"type": "object",
"properties": {
"asr": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"fajr": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"isha": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"dhuhr": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"maghrib": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"sunrise": {
"type": "integer",
"maximum": 60,
"minimum": -60
}
},
"additionalProperties": false
},
"exactWindowMinutes": {
"type": "number"
},
"fixedCityConfigured": {
"type": "boolean"
},
"fixedCoordinatesConfigured": {
"type": "boolean"
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": true
}get_prayer_preferences — Retrieve Stored Prayer Preferences
Returns the currently active calculation settings and preferences for a user. Read-only operation.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"userId"
],
"properties": {
"userId": {
"type": "string",
"pattern": "\\S",
"maxLength": 256,
"minLength": 1,
"description": "Nonblank user identifier; at most 256 UTF-8 bytes and 256 characters. Whitespace in nonblank identifiers is preserved."
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"fixedCoordinatesConfigured",
"fixedCityConfigured"
],
"properties": {
"locale": {
"enum": [
"en",
"ar"
],
"type": "string"
},
"madhab": {
"enum": [
"Shafi",
"Hanafi"
],
"type": "string"
},
"enabled": {
"type": "boolean"
},
"message": {
"type": "string"
},
"timezone": {
"type": "string"
},
"fixedCity": {
"type": "string"
},
"locationMode": {
"enum": [
"auto_travel",
"fixed"
],
"type": "string"
},
"reminderMode": {
"enum": [
"prayer_window",
"exact_window",
"persistent"
],
"type": "string"
},
"updatedAtUtc": {
"type": "string"
},
"highLatitudeRule": {
"enum": [
"MiddleOfTheNight",
"SeventhOfTheNight",
"TwilightAngle"
],
"type": "string"
},
"calculationMethod": {
"enum": [
"UmmAlQura",
"MuslimWorldLeague",
"Egyptian",
"Karachi",
"NorthAmerica",
"Dubai",
"Qatar",
"Kuwait",
"MoonsightingCommittee",
"Singapore",
"Turkey",
"Tehran"
],
"type": "string"
},
"minuteAdjustments": {
"type": "object",
"properties": {
"asr": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"fajr": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"isha": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"dhuhr": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"maghrib": {
"type": "integer",
"maximum": 60,
"minimum": -60
},
"sunrise": {
"type": "integer",
"maximum": 60,
"minimum": -60
}
},
"additionalProperties": false
},
"exactWindowMinutes": {
"type": "number"
},
"fixedCityConfigured": {
"type": "boolean"
},
"fixedCoordinatesConfigured": {
"type": "boolean"
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}Prompts
1 advertised
check_prayer_times_with_disclosure — Check prayer times with calculation disclosure
Get today's prayer times for an explicitly supplied city or location, including regional calculation provenance and potential mosque differences.
Resources
1 advertised
prayer-calculation-guide — Prayer calculation and interpretation guide
Reference for location selection, Asr convention, twilight calculation, high-latitude limitations, and local mosque differences.
prayer://calculation-guide90-day uptime
A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.
- 2026-11-07: 1 of 1 checks answered
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 502 ms
- 95th percentile latency
- 502 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 502 ms · metadata changed · 5 tool(s), 1 resource(s), 0 resource template(s), 1 prompt(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http muslim-prayer-reminder-mcp-workers https://muslim-prayer-mcp.najetareqz.workers.dev/mcpCodex
codex mcp add muslim-prayer-reminder-mcp-workers --url https://muslim-prayer-mcp.najetareqz.workers.dev/mcpCursor
{
"mcpServers": {
"muslim-prayer-reminder-mcp-workers": {
"url": "https://muslim-prayer-mcp.najetareqz.workers.dev/mcp"
}
}
}Cline
{
"mcpServers": {
"muslim-prayer-reminder-mcp-workers": {
"type": "streamableHttp",
"url": "https://muslim-prayer-mcp.najetareqz.workers.dev/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"muslim-prayer-reminder-mcp-workers": {
"type": "http",
"url": "https://muslim-prayer-mcp.najetareqz.workers.dev/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http muslim-prayer-reminder-mcp-workers https://muslim-prayer-mcp.najetareqz.workers.dev/mcpClaude Desktop
https://muslim-prayer-mcp.najetareqz.workers.dev/mcpWindsurf
{
"mcpServers": {
"muslim-prayer-reminder-mcp-workers": {
"serverUrl": "https://muslim-prayer-mcp.najetareqz.workers.dev/mcp"
}
}
}Let your agent find its tools
Find servers like Muslim Prayer Reminder MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.