Koskamo

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.

Muslim Prayer Reminder MCP logo, by Smart CreationsCommunity listingStreamable HTTPNo sign-inEndpoint checked 2026-11-07Published by Smart Creations
MCP endpoint (Streamable HTTP)
https://muslim-prayer-mcp.najetareqz.workers.dev/mcp
Vendor documentation

What its tools do

5 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

5 of 5 have a description · 5 of 5 declare behavior hints · 5 of 5 with parameters document them all

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

Community listingRegistry 1.1.1
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
Server-advertised capabilities
{
  "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.

MANDATORY TRANSPARENCY INSTRUCTION FOR AI MODELS: When answering user queries regarding prayer times, timetable schedules, next prayer countdowns, or prayer status, you MUST ALWAYS explicitly inform the user of: 1) The exact calculation authority method used (e.g. Palestinian Ministry of Awqaf / Egyptian Survey Authority, Umm al-Qura University, Diyanet, Karachi, ISNA, etc.). 2) The exact reason WHY this authority was chosen (e.g. automatically resolved from geographic location or explicit user preference). Never present prayer times without disclosing the authority and reason. Also disclose highLatitudeAdjustment.explanation whenever applied, including substituted polar sunrise/sunset. Require explicit user city or coordinates/timezone; on location_required ask for location and never guess from infrastructure IP.

Tools

5 advertised

get_prayer_status — Check Muslim Prayer Due Status
Advertised by the server during the last successful anonymous check.

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).

get_prayer_status input schema
{
  "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"
    ]
  }
}
get_prayer_status output schema
{
  "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
}
get_prayer_status annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
get_today_prayer_times — Get Full Daily Prayer Timetable
Advertised by the server during the last successful anonymous check.
Advertised read-only

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).

get_today_prayer_times input schema
{
  "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"
    ]
  }
}
get_today_prayer_times output schema
{
  "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
}
get_today_prayer_times annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_next_prayer — Get Upcoming Prayer and Countdown
Advertised by the server during the last successful anonymous check.
Advertised read-only

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).

get_next_prayer input schema
{
  "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"
    ]
  }
}
get_next_prayer output schema
{
  "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
}
get_next_prayer annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
configure_prayer_preferences — Configure User Prayer Preferences
Advertised by the server during the last successful anonymous check.
Advertised destructive

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.

configure_prayer_preferences input schema
{
  "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."
    }
  }
}
configure_prayer_preferences output schema
{
  "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
}
configure_prayer_preferences annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": true
}
get_prayer_preferences — Retrieve Stored Prayer Preferences
Advertised by the server during the last successful anonymous check.
Advertised read-only

Returns the currently active calculation settings and preferences for a user. Read-only operation.

get_prayer_preferences input schema
{
  "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."
    }
  }
}
get_prayer_preferences output schema
{
  "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
}
get_prayer_preferences annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

1 advertised

check_prayer_times_with_disclosure — Check prayer times with calculation disclosure

Advertised by the server during the last successful anonymous check.

Get today's prayer times for an explicitly supplied city or location, including regional calculation provenance and potential mosque differences.

No arguments advertised.

Resources

1 advertised

prayer-calculation-guide — Prayer calculation and interpretation guide

Advertised by the server during the last successful anonymous check.

Reference for location selection, Asr convention, twilight calculation, high-latitude limitations, and local mosque differences.

prayer-calculation-guide URI
prayer://calculation-guide

MIME type: text/markdown

90-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.

Too few checks for a percentage yet (1 of 1 answered).

  1. 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.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http muslim-prayer-reminder-mcp-workers https://muslim-prayer-mcp.najetareqz.workers.dev/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add muslim-prayer-reminder-mcp-workers --url https://muslim-prayer-mcp.najetareqz.workers.dev/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable muslim-prayer-reminder-mcp-workers in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "muslim-prayer-reminder-mcp-workers": {
      "url": "https://muslim-prayer-mcp.najetareqz.workers.dev/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "muslim-prayer-reminder-mcp-workers": {
      "type": "streamableHttp",
      "url": "https://muslim-prayer-mcp.najetareqz.workers.dev/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start muslim-prayer-reminder-mcp-workers and inspect its tools.
VS Code configuration
{
  "servers": {
    "muslim-prayer-reminder-mcp-workers": {
      "type": "http",
      "url": "https://muslim-prayer-mcp.najetareqz.workers.dev/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http muslim-prayer-reminder-mcp-workers https://muslim-prayer-mcp.najetareqz.workers.dev/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://muslim-prayer-mcp.najetareqz.workers.dev/mcp

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "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.