Skip to main content
Glama

Muslim Prayer Reminder MCP

Server Details

Production-ready Muslim prayer reminder MCP with astronomical precision and theological disclosure.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
100.0% over 39 days
Last Tested
Transport
Streamable HTTP ยท MCP 2025-11-25
URL
Repository
tareq7/muslim-prayer-mcp
GitHub Stars
1
Server Listing
Muslim Prayer Reminder MCP

TDQS

A3.8/5.0

Scored across 5 tools

Disambiguation4/5

get_next_prayer (immediate next with countdown), get_today_prayer_times (full-day timetable), and get_prayer_status (whether a prayer is currently due) have some conceptual proximity, but their descriptions clearly delineate the distinct outputs. configure_prayer_preferences vs get_prayer_preferences cleanly separate write from read.

Naming Consistency5/5

All names follow a consistent snake_case verb_noun pattern: configure_prayer_preferences, get_prayer_preferences, get_next_prayer, get_prayer_status, get_today_prayer_times. The get_* prefix is applied uniformly across all read operations.

Tool Count5/5

Five tools is well-scoped for a prayer reminder domain, covering configuration, preference retrieval, next-prayer lookup, current-due status, and the daily timetable. No tool feels redundant or out of place.

Completeness4/5

The lifecycle is covered: configure preferences, read them back, check current status, and query next/today times. Minor gap: only today's timetable is available (no arbitrary date or range query), which an agent cannot work around for future planning.

Available Tools

5 tools
configure_prayer_preferencesConfigure User Prayer Preferences
DestructiveIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
localeNoLanguage for reminder text: en or ar
madhabNoJurisprudential Asr shadow calculation: Shafi or Hanafi
userIdYesNonblank user identifier; at most 256 UTF-8 bytes and 256 characters. Whitespace in nonblank identifiers is preserved.
enabledNoWhether prayer reminders are enabled
timezoneNoIANA timezone identifier (e.g. Asia/Riyadh, Europe/London)
fixedCityNoSupported 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.
locationModeNoLocation 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.
reminderModeNoReminder display policy: prayer_window, exact_window, persistent
fixedCoordinatesNoFixed geographical coordinates
highLatitudeRuleNoHigh latitude twilight adjustment rule
calculationMethodNoIslamic prayer calculation authority
minuteAdjustmentsNoCustom 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.
clearFixedLocationNoRemove stored fixedCity, fixedCoordinates and timezone. Switches to auto_travel unless locationMode is supplied. Cannot combine with a new fixed location/timezone.
exactWindowMinutesNoDuration 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.

Output Schema

ParametersJSON Schema
NameRequiredDescription
successYesWhether configuration succeeded
preferencesYes
get_next_prayerGet Upcoming Prayer and Countdown
Read-onlyIdempotent
Inspect

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

ParametersJSON Schema
NameRequiredDescriptionDefault
cityNoSupported 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.
madhabNoOptional Asr shadow jurisprudence override (Shafi or Hanafi)
userIdNoNonblank user identifier; at most 256 UTF-8 bytes and 256 characters. Whitespace in nonblank identifiers is preserved.
latitudeNoOptional explicit latitude override
timezoneNoIANA timezone; required in the same request when latitude/longitude are supplied. Must agree with the city or be compatible with the coordinate timezone lookup.
longitudeNoOptional explicit longitude override
calculationMethodNoOptional calculation authority override (auto-resolved from location by default)

Output Schema

ParametersJSON Schema
NameRequiredDescription
madhabYesActive Asr jurisprudence
timezoneYesResolved IANA timezone
nextPrayerYesName of the upcoming prayer
authorityNoticeNo
nextPrayerAtUtcYesUTC timestamp of the upcoming prayer
selectionReasonNo
currentLocalDateYesCurrent local date YYYY-MM-DD
remainingMinutesYesMinutes remaining until prayer start
calculationMethodYesActive calculation authority
minuteAdjustmentsNo
calculationDetailsNo
nextPrayerLocalTimeYesFormatted local time HH:mm
authorityDescriptionNo
highLatitudeAdjustmentNo
get_prayer_preferencesRetrieve Stored Prayer PreferencesB
Read-onlyIdempotent
Inspect

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

ParametersJSON Schema
NameRequiredDescriptionDefault
userIdYesNonblank user identifier; at most 256 UTF-8 bytes and 256 characters. Whitespace in nonblank identifiers is preserved.

Output Schema

ParametersJSON Schema
NameRequiredDescription
localeNo
madhabNo
enabledNo
messageNo
timezoneNo
fixedCityNo
locationModeNo
reminderModeNo
updatedAtUtcNo
highLatitudeRuleNo
calculationMethodNo
minuteAdjustmentsNo
exactWindowMinutesNo
fixedCityConfiguredYes
fixedCoordinatesConfiguredYes

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false, so 'Read-only operation' merely restates structured data. The only added behavioral value is 'currently active', which hints that inactive/stored-but-unused preferences are excluded from the result.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the resource description. The second sentence is redundant with readOnlyHint and could be cut, a minor waste rather than a structural flaw.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need no explanation, and annotations fully cover the safety profile. For a one-parameter read tool the description is nearly sufficient; only the missing routing guidance versus sibling tools leaves a small gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single userId parameter is fully documented with pattern and length constraints, so the schema does the heavy lifting. The description adds nothing about the parameter, which is the expected baseline for this coverage level.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Returns) and resource (calculation settings and preferences) with the scoping qualifier 'currently active', which separates it from the write-oriented sibling configure_prayer_preferences. It never names that sibling, so differentiation is inferable rather than explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use or when-not-to-use guidance and no mention of alternatives. An agent must infer from the tool name alone that this is the read counterpart to configure_prayer_preferences and not, say, a status check like get_prayer_status.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_prayer_statusCheck Muslim Prayer Due StatusInspect

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

ParametersJSON Schema
NameRequiredDescriptionDefault
cityNoSupported 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.
madhabNoOptional Asr shadow jurisprudence override (Shafi or Hanafi)
userIdNoNonblank user identifier; at most 256 UTF-8 bytes and 256 characters. Whitespace in nonblank identifiers is preserved.
latitudeNoOptional explicit latitude override
timezoneNoIANA timezone; required in the same request when latitude/longitude are supplied. Must agree with the city or be compatible with the coordinate timezone lookup.
longitudeNoOptional explicit longitude override
calculationMethodNoOptional calculation authority override (auto-resolved from location by default)

Output Schema

ParametersJSON Schema
NameRequiredDescription
madhabYesActive Asr jurisprudence
prayerNoThe name of the currently due prayer if applicable
timezoneYesResolved IANA timezone
localDateYesCurrent local date in YYYY-MM-DD
nextPrayerYesThe name of the next upcoming prayer
reminderDueYesWhether a prayer is currently due for reminder
expiresAtUtcNoUTC expiration time of the active prayer window
reminderTextNoLocalized reminder message
startedAtUtcNoUTC start time of the active prayer window
authorityNoticeYesMandatory theological transparency notice; detailed provenance is at top level
nextPrayerAtUtcYesUTC timestamp of the next upcoming prayer
selectionReasonNoReason for authority selection
calculationMethodYesActive calculation authority
minuteAdjustmentsNoApplied minute adjustments
calculationDetailsNo
authorityDescriptionNoDescription of the calculation authority
nextPrayerCalculationNoAdjustment disclosure for the actual schedule of the next event, including tomorrow
highLatitudeAdjustmentNo
prayerWindowExpiresAtUtcNoEnd of the active prayer period; same boundary as legacy expiresAtUtc
reminderWindowExpiresAtUtcNoReminder eligibility end; exact_window is capped by the prayer period boundary. Fields appear when a reminder is emitted.
get_today_prayer_timesGet Full Daily Prayer Timetable
Read-onlyIdempotent
Inspect

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

ParametersJSON Schema
NameRequiredDescriptionDefault
cityNoSupported 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.
dateNoDate in YYYY-MM-DD format (defaults to today)
madhabNoOptional Asr shadow jurisprudence override (Shafi or Hanafi)
userIdNoNonblank user identifier; at most 256 UTF-8 bytes and 256 characters. Whitespace in nonblank identifiers is preserved.
latitudeNoOptional explicit latitude override
timezoneNoIANA timezone; required in the same request when latitude/longitude are supplied. Must agree with the city or be compatible with the coordinate timezone lookup.
longitudeNoOptional explicit longitude override
calculationMethodNoOptional calculation authority override (auto-resolved from location by default)

Output Schema

ParametersJSON Schema
NameRequiredDescription
madhabYesActive Asr jurisprudence
timesUtcYes
timezoneYesResolved IANA timezone
localDateYesLocal schedule date YYYY-MM-DD
timesLocalYes
authorityNoticeNo
selectionReasonNo
calculationMethodYesActive calculation authority
minuteAdjustmentsNo
calculationDetailsNo
authorityDescriptionNo
highLatitudeAdjustmentNo

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool update
    • Changedconfigure_prayer_preferences1 field changed
      • changedInput schema / properties / minuteAdjustments / description
        Previous value: -"Custom per-prayer minute offsets (-60 to +60)"New value: +"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."
  2. 3 tool updates
    • Changedget_next_prayer4 fields changed
      • addedInput schema / dependencies
        Added value: +{
        +  "latitude": [
        +    "longitude",
        +    "timezone"
        +  ],
        +  "longitude": [
        +    "latitude",
        +    "timezone"
        +  ]
        +}
      • removedInput schema / dependentRequired
        Removed value: -{
        -  "latitude": [
        -    "longitude",
        -    "timezone"
        -  ],
        -  "longitude": [
        -    "latitude",
        -    "timezone"
        -  ]
        -}
      • changedOutput schema / properties / authorityNotice / properties / calculationDetails / properties / timezoneValidation / description
        Previous value: -"Validation basis; ocean and mathematical-pole locations retain caller-selected civil timezone with explicit disclosure"New value: +"Validation basis; ocean locations require the matching nautical timezone or an adjacent coastal civil timezone; mathematical poles allow an explicit civil timezone with disclosure"
      • changedOutput schema / properties / calculationDetails / properties / timezoneValidation / description
        Previous value: -"Validation basis; ocean and mathematical-pole locations retain caller-selected civil timezone with explicit disclosure"New value: +"Validation basis; ocean locations require the matching nautical timezone or an adjacent coastal civil timezone; mathematical poles allow an explicit civil timezone with disclosure"
    • Changedget_prayer_status12 fields changed
      • addedInput schema / dependencies
        Added value: +{
        +  "latitude": [
        +    "longitude",
        +    "timezone"
        +  ],
        +  "longitude": [
        +    "latitude",
        +    "timezone"
        +  ]
        +}
      • removedInput schema / dependentRequired
        Removed value: -{
        -  "latitude": [
        -    "longitude",
        -    "timezone"
        -  ],
        -  "longitude": [
        -    "latitude",
        -    "timezone"
        -  ]
        -}
      • changedOutput schema / properties / authorityNotice / description
        Previous value: -"Mandatory theological transparency notice"New value: +"Mandatory theological transparency notice; detailed provenance is at top level"
      • removedOutput schema / properties / authorityNotice / properties / calculationDetails
        Removed value: -{
        -  "additionalProperties": false,
        -  "properties": {
        -    "appliedMinuteAdjustments": {
        -      "additionalProperties": {
        -        "type": "number"
        -      },
        -      "propertyNames": {
        -        "type": "string"
        -      },
        -      "type": "object"
        -    },
        -    "calendarAlignmentAdjusted": {
        -      "type": "boolean"
        -    },
        -    "customMinuteAdjustments": {
        -      "additionalProperties": false,
        -      "properties": {
        -        "asr": {
        -          "maximum": 60,
        -          "minimum": -60,
        -          "type": "integer"
        -        },
        -        "dhuhr": {
        -          "maximum": 60,
        -          "minimum": -60,
        -          "type": "integer"
        -        },
        -        "fajr": {
        -          "maximum": 60,
        -          "minimum": -60,
        -          "type": "integer"
        -        },
        -        "isha": {
        -          "maximum": 60,
        -          "minimum": -60,
        -          "type": "integer"
        -        },
        -        "maghrib": {
        -          "maximum": 60,
        -          "minimum": -60,
        -          "type": "integer"
        -        },
        -        "sunrise": {
        -          "maximum": 60,
        -          "minimum": -60,
        -          "type": "integer"
        -        }
        -      },
        -      "type": "object"
        -    },
        -    "expectedTimezone": {
        -      "description": "Timezone from city registry or approximate coordinate lookup",
        -      "type": "string"
        -    },
        -    "fallbackLocationUsed": {
        -      "type": "boolean"
        -    },
        -    "highLatitudeRuleSource": {
        -      "enum": [
        -        "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"
        -    },
        -    "locationIsApproximate": {
        -      "type": "boolean"
        -    },
        -    "madhabSource": {
        -      "enum": [
        -        "explicit_override",
        -        "stored_preference",
        -        "geographic_default"
        -      ],
        -      "type": "string"
        -    },
        -    "methodMinuteAdjustments": {
        -      "additionalProperties": false,
        -      "properties": {
        -        "asr": {
        -          "maximum": 60,
        -          "minimum": -60,
        -          "type": "integer"
        -        },
        -        "dhuhr": {
        -          "maximum": 60,
        -          "minimum": -60,
        -          "type": "integer"
        -        },
        -        "fajr": {
        -          "maximum": 60,
        -          "minimum": -60,
        -          "type": "integer"
        -        },
        -        "isha": {
        -          "maximum": 60,
        -          "minimum": -60,
        -          "type": "integer"
        -        },
        -        "maghrib": {
        -          "maximum": 60,
        -          "minimum": -60,
        -          "type": "integer"
        -        },
        -        "sunrise": {
        -          "maximum": 60,
        -          "minimum": -60,
        -          "type": "integer"
        -        }
        -      },
        -      "type": "object"
        -    },
        -    "methodSource": {
        -      "enum": [
        -        "explicit_override",
        -        "stored_preference",
        -        "geographic_default"
        -      ],
        -      "type": "string"
        -    },
        -    "regionalMinuteAdjustments": {
        -      "additionalProperties": false,
        -      "properties": {
        -        "asr": {
        -          "maximum": 60,
        -          "minimum": -60,
        -          "type": "integer"
        -        },
        -        "dhuhr": {
        -          "maximum": 60,
        -          "minimum": -60,
        -          "type": "integer"
        -        },
        -        "fajr": {
        -          "maximum": 60,
        -          "minimum": -60,
        -          "type": "integer"
        -        },
        -        "isha": {
        -          "maximum": 60,
        -          "minimum": -60,
        -          "type": "integer"
        -        },
        -        "maghrib": {
        -          "maximum": 60,
        -          "minimum": -60,
        -          "type": "integer"
        -        },
        -        "sunrise": {
        -          "maximum": 60,
        -          "minimum": -60,
        -          "type": "integer"
        -        }
        -      },
        -      "type": "object"
        -    },
        -    "timezoneSource": {
        -      "description": "Source of the validated timezone or disclosed ocean/pole choice",
        -      "enum": [
        -        "explicit_override",
        -        "stored_preference",
        -        "city_default",
        -        "host_header"
        -      ],
        -      "type": "string"
        -    },
        -    "timezoneValidation": {
        -      "description": "Validation basis; ocean and mathematical-pole locations retain caller-selected civil timezone with explicit disclosure",
        -      "enum": [
        -        "coordinate_lookup",
        -        "nearby_boundary",
        -        "city_registry",
        -        "polar_choice",
        -        "ocean_choice"
        -      ],
        -      "type": "string"
        -    }
        -  },
        -  "type": "object"
        -}
      • removedOutput schema / properties / authorityNotice / properties / highLatitudeAdjustment
        Removed value: -{
        -  "additionalProperties": false,
        -  "properties": {
        -    "adjustedPrayers": {
        -      "items": {
        -        "enum": [
        -          "Fajr",
        -          "Sunrise",
        -          "Dhuhr",
        -          "Asr",
        -          "Maghrib",
        -          "Isha"
        -        ],
        -        "type": "string"
        -      },
        -      "type": "array"
        -    },
        -    "applied": {
        -      "type": "boolean"
        -    },
        -    "astronomicalLatitudeClamped": {
        -      "type": "boolean"
        -    },
        -    "effectiveLatitude": {
        -      "anyOf": [
        -        {
        -          "const": 48,
        -          "type": "number"
        -        },
        -        {
        -          "const": -48,
        -          "type": "number"
        -        }
        -      ],
        -      "description": "Substitute latitude only; never the user coordinate"
        -    },
        -    "explanation": {
        -      "type": "string"
        -    },
        -    "methodSpecificTwilightRule": {
        -      "const": "MoonsightingCommittee",
        -      "type": "string"
        -    },
        -    "rule": {
        -      "enum": [
        -        "MiddleOfTheNight",
        -        "SeventhOfTheNight",
        -        "TwilightAngle"
        -      ],
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "applied",
        -    "rule",
        -    "astronomicalLatitudeClamped",
        -    "adjustedPrayers",
        -    "explanation"
        -  ],
        -  "type": "object"
        -}
      • changedOutput schema / properties / calculationDetails / properties / timezoneValidation / description
        Previous value: -"Validation basis; ocean and mathematical-pole locations retain caller-selected civil timezone with explicit disclosure"New value: +"Validation basis; ocean locations require the matching nautical timezone or an adjacent coastal civil timezone; mathematical poles allow an explicit civil timezone with disclosure"
      • removedOutput schema / properties / nextPrayerCalculation / properties / authorityNotice / properties / calculationDetails
        Removed value: -{
        -  "additionalProperties": false,
        -  "properties": {
        -    "appliedMinuteAdjustments": {
        -      "additionalProperties": {
        -        "type": "number"
        -      },
        -      "propertyNames": {
        -        "type": "string"
        -      },
        -      "type": "object"
        -    },
        -    "calendarAlignmentAdjusted": {
        -      "type": "boolean"
        -    },
        -    "customMinuteAdjustments": {
        -      "additionalProperties": false,
        -      "properties": {
        -        "asr": {
        -          "maximum": 60,
        -          "minimum": -60,
        -          "type": "integer"
        -        },
        -        "dhuhr": {
        -          "maximum": 60,
        -          "minimum": -60,
        -          "type": "integer"
        -        },
        -        "fajr": {
        -          "maximum": 60,
        -          "minimum": -60,
        -          "type": "integer"
        -        },
        -        "isha": {
        -          "maximum": 60,
        -          "minimum": -60,
        -          "type": "integer"
        -        },
        -        "maghrib": {
        -          "maximum": 60,
        -          "minimum": -60,
        -          "type": "integer"
        -        },
        -        "sunrise": {
        -          "maximum": 60,
        -          "minimum": -60,
        -          "type": "integer"
        -        }
        -      },
        -      "type": "object"
        -    },
        -    "expectedTimezone": {
        -      "description": "Timezone from city registry or approximate coordinate lookup",
        -      "type": "string"
        -    },
        -    "fallbackLocationUsed": {
        -      "type": "boolean"
        -    },
        -    "highLatitudeRuleSource": {
        -      "enum": [
        -        "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"
        -    },
        -    "locationIsApproximate": {
        -      "type": "boolean"
        -    },
        -    "madhabSource": {
        -      "enum": [
        -        "explicit_override",
        -        "stored_preference",
        -        "geographic_default"
        -      ],
        -      "type": "string"
        -    },
        -    "methodMinuteAdjustments": {
        -      "additionalProperties": false,
        -      "properties": {
        -        "asr": {
        -          "maximum": 60,
        -          "minimum": -60,
        -          "type": "integer"
        -        },
        -        "dhuhr": {
        -          "maximum": 60,
        -          "minimum": -60,
        -          "type": "integer"
        -        },
        -        "fajr": {
        -          "maximum": 60,
        -          "minimum": -60,
        -          "type": "integer"
        -        },
        -        "isha": {
        -          "maximum": 60,
        -          "minimum": -60,
        -          "type": "integer"
        -        },
        -        "maghrib": {
        -          "maximum": 60,
        -          "minimum": -60,
        -          "type": "integer"
        -        },
        -        "sunrise": {
        -          "maximum": 60,
        -          "minimum": -60,
        -          "type": "integer"
        -        }
        -      },
        -      "type": "object"
        -    },
        -    "methodSource": {
        -      "enum": [
        -        "explicit_override",
        -        "stored_preference",
        -        "geographic_default"
        -      ],
        -      "type": "string"
        -    },
        -    "regionalMinuteAdjustments": {
        -      "additionalProperties": false,
        -      "properties": {
        -        "asr": {
        -          "maximum": 60,
        -          "minimum": -60,
        -          "type": "integer"
        -        },
        -        "dhuhr": {
        -          "maximum": 60,
        -          "minimum": -60,
        -          "type": "integer"
        -        },
        -        "fajr": {
        -          "maximum": 60,
        -          "minimum": -60,
        -          "type": "integer"
        -        },
        -        "isha": {
        -          "maximum": 60,
        -          "minimum": -60,
        -          "type": "integer"
        -        },
        -        "maghrib": {
        -          "maximum": 60,
        -          "minimum": -60,
        -          "type": "integer"
        -        },
        -        "sunrise": {
        -          "maximum": 60,
        -          "minimum": -60,
        -          "type": "integer"
        -        }
        -      },
        -      "type": "object"
        -    },
        -    "timezoneSource": {
        -      "description": "Source of the validated timezone or disclosed ocean/pole choice",
        -      "enum": [
        -        "explicit_override",
        -        "stored_preference",
        -        "city_default",
        -        "host_header"
        -      ],
        -      "type": "string"
        -    },
        -    "timezoneValidation": {
        -      "description": "Validation basis; ocean and mathematical-pole locations retain caller-selected civil timezone with explicit disclosure",
        -      "enum": [
        -        "coordinate_lookup",
        -        "nearby_boundary",
        -        "city_registry",
        -        "polar_choice",
        -        "ocean_choice"
        -      ],
        -      "type": "string"
        -    }
        -  },
        -  "type": "object"
        -}
      • removedOutput schema / properties / nextPrayerCalculation / properties / authorityNotice / properties / highLatitudeAdjustment
        Removed value: -{
        -  "additionalProperties": false,
        -  "properties": {
        -    "adjustedPrayers": {
        -      "items": {
        -        "enum": [
        -          "Fajr",
        -          "Sunrise",
        -          "Dhuhr",
        -          "Asr",
        -          "Maghrib",
        -          "Isha"
        -        ],
        -        "type": "string"
        -      },
        -      "type": "array"
        -    },
        -    "applied": {
        -      "type": "boolean"
        -    },
        -    "astronomicalLatitudeClamped": {
        -      "type": "boolean"
        -    },
        -    "effectiveLatitude": {
        -      "anyOf": [
        -        {
        -          "const": 48,
        -          "type": "number"
        -        },
        -        {
        -          "const": -48,
        -          "type": "number"
        -        }
        -      ],
        -      "description": "Substitute latitude only; never the user coordinate"
        -    },
        -    "explanation": {
        -      "type": "string"
        -    },
        -    "methodSpecificTwilightRule": {
        -      "const": "MoonsightingCommittee",
        -      "type": "string"
        -    },
        -    "rule": {
        -      "enum": [
        -        "MiddleOfTheNight",
        -        "SeventhOfTheNight",
        -        "TwilightAngle"
        -      ],
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "applied",
        -    "rule",
        -    "astronomicalLatitudeClamped",
        -    "adjustedPrayers",
        -    "explanation"
        -  ],
        -  "type": "object"
        -}
      • changedOutput schema / properties / nextPrayerCalculation / properties / calculationDetails / properties / timezoneValidation / description
        Previous value: -"Validation basis; ocean and mathematical-pole locations retain caller-selected civil timezone with explicit disclosure"New value: +"Validation basis; ocean locations require the matching nautical timezone or an adjacent coastal civil timezone; mathematical poles allow an explicit civil timezone with disclosure"
      • addedOutput schema / properties / nextPrayerCalculation / properties / usesCurrentCalculation
        Added value: +{
        +  "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.",
        +  "type": "boolean"
        +}
      • changedOutput schema / properties / nextPrayerCalculation / required
        Previous value: -[
        -  "localDate"
        -]New value: +[
        +  "localDate",
        +  "usesCurrentCalculation"
        +]
      • changedOutput schema / required
        Previous value: -[
        -  "reminderDue",
        -  "localDate",
        -  "nextPrayer",
        -  "nextPrayerAtUtc",
        -  "timezone",
        -  "calculationMethod",
        -  "madhab"
        -]New value: +[
        +  "reminderDue",
        +  "localDate",
        +  "nextPrayer",
        +  "nextPrayerAtUtc",
        +  "timezone",
        +  "calculationMethod",
        +  "madhab",
        +  "authorityNotice"
        +]
    • Changedget_today_prayer_times4 fields changed
      • addedInput schema / dependencies
        Added value: +{
        +  "latitude": [
        +    "longitude",
        +    "timezone"
        +  ],
        +  "longitude": [
        +    "latitude",
        +    "timezone"
        +  ]
        +}
      • removedInput schema / dependentRequired
        Removed value: -{
        -  "latitude": [
        -    "longitude",
        -    "timezone"
        -  ],
        -  "longitude": [
        -    "latitude",
        -    "timezone"
        -  ]
        -}
      • changedOutput schema / properties / authorityNotice / properties / calculationDetails / properties / timezoneValidation / description
        Previous value: -"Validation basis; ocean and mathematical-pole locations retain caller-selected civil timezone with explicit disclosure"New value: +"Validation basis; ocean locations require the matching nautical timezone or an adjacent coastal civil timezone; mathematical poles allow an explicit civil timezone with disclosure"
      • changedOutput schema / properties / calculationDetails / properties / timezoneValidation / description
        Previous value: -"Validation basis; ocean and mathematical-pole locations retain caller-selected civil timezone with explicit disclosure"New value: +"Validation basis; ocean locations require the matching nautical timezone or an adjacent coastal civil timezone; mathematical poles allow an explicit civil timezone with disclosure"
  3. 5 tool updates
    • Changedconfigure_prayer_preferences3 fields changed
      • changedInput schema / properties / exactWindowMinutes / description
        Previous value: -"Duration in minutes for exact_window mode"New value: +"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."
      • changedInput schema / properties / locationMode / description
        Previous value: -"Location strategy: auto_travel or fixed"New value: +"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."
      • addedInput schema / properties / userId / pattern
        Added value: +"\\S"
    • Changedget_next_prayer10 fields changed
      • addedInput schema / allOf
        Added value: +[
        +  {
        +    "not": {
        +      "required": [
        +        "city",
        +        "latitude"
        +      ]
        +    }
        +  },
        +  {
        +    "not": {
        +      "required": [
        +        "city",
        +        "longitude"
        +      ]
        +    }
        +  }
        +]
      • addedInput schema / dependentRequired
        Added value: +{
        +  "latitude": [
        +    "longitude",
        +    "timezone"
        +  ],
        +  "longitude": [
        +    "latitude",
        +    "timezone"
        +  ]
        +}
      • changedInput schema / properties / timezone / description
        Previous value: -"IANA timezone; required in the same request when latitude/longitude are supplied. Explicit overrides select the display timezone."New value: +"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."
      • addedInput schema / properties / userId / pattern
        Added value: +"\\S"
      • addedOutput schema / properties / authorityNotice / properties / calculationDetails / properties / expectedTimezone
        Added value: +{
        +  "description": "Timezone from city registry or approximate coordinate lookup",
        +  "type": "string"
        +}
      • changedOutput schema / properties / authorityNotice / properties / calculationDetails / properties / timezoneSource / description
        Previous value: -"Source of the display timezone; caller-selected overrides are not geographically validated."New value: +"Source of the validated timezone or disclosed ocean/pole choice"
      • addedOutput schema / properties / authorityNotice / properties / calculationDetails / properties / timezoneValidation
        Added value: +{
        +  "description": "Validation basis; ocean and mathematical-pole locations retain caller-selected civil timezone with explicit disclosure",
        +  "enum": [
        +    "coordinate_lookup",
        +    "nearby_boundary",
        +    "city_registry",
        +    "polar_choice",
        +    "ocean_choice"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / properties / calculationDetails / properties / expectedTimezone
        Added value: +{
        +  "description": "Timezone from city registry or approximate coordinate lookup",
        +  "type": "string"
        +}
      • changedOutput schema / properties / calculationDetails / properties / timezoneSource / description
        Previous value: -"Source of the display timezone; caller-selected overrides are not geographically validated."New value: +"Source of the validated timezone or disclosed ocean/pole choice"
      • addedOutput schema / properties / calculationDetails / properties / timezoneValidation
        Added value: +{
        +  "description": "Validation basis; ocean and mathematical-pole locations retain caller-selected civil timezone with explicit disclosure",
        +  "enum": [
        +    "coordinate_lookup",
        +    "nearby_boundary",
        +    "city_registry",
        +    "polar_choice",
        +    "ocean_choice"
        +  ],
        +  "type": "string"
        +}
    • Changedget_prayer_preferences1 field changed
      • addedInput schema / properties / userId / pattern
        Added value: +"\\S"
    • Changedget_prayer_status16 fields changed
      • addedInput schema / allOf
        Added value: +[
        +  {
        +    "not": {
        +      "required": [
        +        "city",
        +        "latitude"
        +      ]
        +    }
        +  },
        +  {
        +    "not": {
        +      "required": [
        +        "city",
        +        "longitude"
        +      ]
        +    }
        +  }
        +]
      • addedInput schema / dependentRequired
        Added value: +{
        +  "latitude": [
        +    "longitude",
        +    "timezone"
        +  ],
        +  "longitude": [
        +    "latitude",
        +    "timezone"
        +  ]
        +}
      • changedInput schema / properties / timezone / description
        Previous value: -"IANA timezone; required in the same request when latitude/longitude are supplied. Explicit overrides select the display timezone."New value: +"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."
      • addedInput schema / properties / userId / pattern
        Added value: +"\\S"
      • addedOutput schema / properties / authorityNotice / properties / calculationDetails / properties / expectedTimezone
        Added value: +{
        +  "description": "Timezone from city registry or approximate coordinate lookup",
        +  "type": "string"
        +}
      • changedOutput schema / properties / authorityNotice / properties / calculationDetails / properties / timezoneSource / description
        Previous value: -"Source of the display timezone; caller-selected overrides are not geographically validated."New value: +"Source of the validated timezone or disclosed ocean/pole choice"
      • addedOutput schema / properties / authorityNotice / properties / calculationDetails / properties / timezoneValidation
        Added value: +{
        +  "description": "Validation basis; ocean and mathematical-pole locations retain caller-selected civil timezone with explicit disclosure",
        +  "enum": [
        +    "coordinate_lookup",
        +    "nearby_boundary",
        +    "city_registry",
        +    "polar_choice",
        +    "ocean_choice"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / properties / calculationDetails / properties / expectedTimezone
        Added value: +{
        +  "description": "Timezone from city registry or approximate coordinate lookup",
        +  "type": "string"
        +}
      • changedOutput schema / properties / calculationDetails / properties / timezoneSource / description
        Previous value: -"Source of the display timezone; caller-selected overrides are not geographically validated."New value: +"Source of the validated timezone or disclosed ocean/pole choice"
      • addedOutput schema / properties / calculationDetails / properties / timezoneValidation
        Added value: +{
        +  "description": "Validation basis; ocean and mathematical-pole locations retain caller-selected civil timezone with explicit disclosure",
        +  "enum": [
        +    "coordinate_lookup",
        +    "nearby_boundary",
        +    "city_registry",
        +    "polar_choice",
        +    "ocean_choice"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / properties / nextPrayerCalculation / properties / authorityNotice / properties / calculationDetails / properties / expectedTimezone
        Added value: +{
        +  "description": "Timezone from city registry or approximate coordinate lookup",
        +  "type": "string"
        +}
      • changedOutput schema / properties / nextPrayerCalculation / properties / authorityNotice / properties / calculationDetails / properties / timezoneSource / description
        Previous value: -"Source of the display timezone; caller-selected overrides are not geographically validated."New value: +"Source of the validated timezone or disclosed ocean/pole choice"
      • addedOutput schema / properties / nextPrayerCalculation / properties / authorityNotice / properties / calculationDetails / properties / timezoneValidation
        Added value: +{
        +  "description": "Validation basis; ocean and mathematical-pole locations retain caller-selected civil timezone with explicit disclosure",
        +  "enum": [
        +    "coordinate_lookup",
        +    "nearby_boundary",
        +    "city_registry",
        +    "polar_choice",
        +    "ocean_choice"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / properties / nextPrayerCalculation / properties / calculationDetails / properties / expectedTimezone
        Added value: +{
        +  "description": "Timezone from city registry or approximate coordinate lookup",
        +  "type": "string"
        +}
      • changedOutput schema / properties / nextPrayerCalculation / properties / calculationDetails / properties / timezoneSource / description
        Previous value: -"Source of the display timezone; caller-selected overrides are not geographically validated."New value: +"Source of the validated timezone or disclosed ocean/pole choice"
      • addedOutput schema / properties / nextPrayerCalculation / properties / calculationDetails / properties / timezoneValidation
        Added value: +{
        +  "description": "Validation basis; ocean and mathematical-pole locations retain caller-selected civil timezone with explicit disclosure",
        +  "enum": [
        +    "coordinate_lookup",
        +    "nearby_boundary",
        +    "city_registry",
        +    "polar_choice",
        +    "ocean_choice"
        +  ],
        +  "type": "string"
        +}
    • Changedget_today_prayer_times10 fields changed
      • addedInput schema / allOf
        Added value: +[
        +  {
        +    "not": {
        +      "required": [
        +        "city",
        +        "latitude"
        +      ]
        +    }
        +  },
        +  {
        +    "not": {
        +      "required": [
        +        "city",
        +        "longitude"
        +      ]
        +    }
        +  }
        +]
      • addedInput schema / dependentRequired
        Added value: +{
        +  "latitude": [
        +    "longitude",
        +    "timezone"
        +  ],
        +  "longitude": [
        +    "latitude",
        +    "timezone"
        +  ]
        +}
      • changedInput schema / properties / timezone / description
        Previous value: -"IANA timezone; required in the same request when latitude/longitude are supplied. Explicit overrides select the display timezone."New value: +"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."
      • addedInput schema / properties / userId / pattern
        Added value: +"\\S"
      • addedOutput schema / properties / authorityNotice / properties / calculationDetails / properties / expectedTimezone
        Added value: +{
        +  "description": "Timezone from city registry or approximate coordinate lookup",
        +  "type": "string"
        +}
      • changedOutput schema / properties / authorityNotice / properties / calculationDetails / properties / timezoneSource / description
        Previous value: -"Source of the display timezone; caller-selected overrides are not geographically validated."New value: +"Source of the validated timezone or disclosed ocean/pole choice"
      • addedOutput schema / properties / authorityNotice / properties / calculationDetails / properties / timezoneValidation
        Added value: +{
        +  "description": "Validation basis; ocean and mathematical-pole locations retain caller-selected civil timezone with explicit disclosure",
        +  "enum": [
        +    "coordinate_lookup",
        +    "nearby_boundary",
        +    "city_registry",
        +    "polar_choice",
        +    "ocean_choice"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / properties / calculationDetails / properties / expectedTimezone
        Added value: +{
        +  "description": "Timezone from city registry or approximate coordinate lookup",
        +  "type": "string"
        +}
      • changedOutput schema / properties / calculationDetails / properties / timezoneSource / description
        Previous value: -"Source of the display timezone; caller-selected overrides are not geographically validated."New value: +"Source of the validated timezone or disclosed ocean/pole choice"
      • addedOutput schema / properties / calculationDetails / properties / timezoneValidation
        Added value: +{
        +  "description": "Validation basis; ocean and mathematical-pole locations retain caller-selected civil timezone with explicit disclosure",
        +  "enum": [
        +    "coordinate_lookup",
        +    "nearby_boundary",
        +    "city_registry",
        +    "polar_choice",
        +    "ocean_choice"
        +  ],
        +  "type": "string"
        +}
  4. 5 tool updates
    • Changedconfigure_prayer_preferences4 fields changed
      • addedInput schema / properties / clearFixedLocation
        Added value: +{
        +  "description": "Remove stored fixedCity, fixedCoordinates and timezone. Switches to auto_travel unless locationMode is supplied. Cannot combine with a new fixed location/timezone.",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / fixedCity / description
        Previous value: -"Predefined city name for fixed location (e.g. Riyadh, London)"New value: +"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."
      • changedInput schema / properties / userId / description
        Previous value: -"Unique user identifier"New value: +"Nonblank user identifier; at most 256 UTF-8 bytes and 256 characters. Whitespace in nonblank identifiers is preserved."
      • addedInput schema / properties / userId / maxLength
        Added value: +256
    • Changedget_next_prayer6 fields changed
      • changedInput schema / properties / city / description
        Previous value: -"Supported predefined city. Supply city or coordinates with an IANA timezone; connector/IP geolocation is never used."New value: +"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."
      • changedInput schema / properties / timezone / description
        Previous value: -"Optional IANA timezone override"New value: +"IANA timezone; required in the same request when latitude/longitude are supplied. Explicit overrides select the display timezone."
      • changedInput schema / properties / userId / description
        Previous value: -"Optional unique user identifier to load stored preferences. If omitted, pure geographic auto-resolution is applied."New value: +"Nonblank user identifier; at most 256 UTF-8 bytes and 256 characters. Whitespace in nonblank identifiers is preserved."
      • addedInput schema / properties / userId / maxLength
        Added value: +256
      • addedOutput schema / properties / authorityNotice / properties / calculationDetails / properties / timezoneSource
        Added value: +{
        +  "description": "Source of the display timezone; caller-selected overrides are not geographically validated.",
        +  "enum": [
        +    "explicit_override",
        +    "stored_preference",
        +    "city_default",
        +    "host_header"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / properties / calculationDetails / properties / timezoneSource
        Added value: +{
        +  "description": "Source of the display timezone; caller-selected overrides are not geographically validated.",
        +  "enum": [
        +    "explicit_override",
        +    "stored_preference",
        +    "city_default",
        +    "host_header"
        +  ],
        +  "type": "string"
        +}
    • Changedget_prayer_preferences2 fields changed
      • changedInput schema / properties / userId / description
        Previous value: -"Unique user identifier"New value: +"Nonblank user identifier; at most 256 UTF-8 bytes and 256 characters. Whitespace in nonblank identifiers is preserved."
      • addedInput schema / properties / userId / maxLength
        Added value: +256
    • Changedget_prayer_status10 fields changed
      • changedInput schema / properties / city / description
        Previous value: -"Supported predefined city. Supply city or coordinates with an IANA timezone; connector/IP geolocation is never used."New value: +"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."
      • changedInput schema / properties / timezone / description
        Previous value: -"Optional IANA timezone override (e.g. Asia/Riyadh)"New value: +"IANA timezone; required in the same request when latitude/longitude are supplied. Explicit overrides select the display timezone."
      • changedInput schema / properties / userId / description
        Previous value: -"Optional unique user identifier to load stored preferences. If omitted, pure geographic auto-resolution is applied."New value: +"Nonblank user identifier; at most 256 UTF-8 bytes and 256 characters. Whitespace in nonblank identifiers is preserved."
      • addedInput schema / properties / userId / maxLength
        Added value: +256
      • addedOutput schema / properties / authorityNotice / properties / calculationDetails / properties / timezoneSource
        Added value: +{
        +  "description": "Source of the display timezone; caller-selected overrides are not geographically validated.",
        +  "enum": [
        +    "explicit_override",
        +    "stored_preference",
        +    "city_default",
        +    "host_header"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / properties / calculationDetails / properties / timezoneSource
        Added value: +{
        +  "description": "Source of the display timezone; caller-selected overrides are not geographically validated.",
        +  "enum": [
        +    "explicit_override",
        +    "stored_preference",
        +    "city_default",
        +    "host_header"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / properties / nextPrayerCalculation / properties / authorityNotice / properties / calculationDetails / properties / timezoneSource
        Added value: +{
        +  "description": "Source of the display timezone; caller-selected overrides are not geographically validated.",
        +  "enum": [
        +    "explicit_override",
        +    "stored_preference",
        +    "city_default",
        +    "host_header"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / properties / nextPrayerCalculation / properties / calculationDetails / properties / timezoneSource
        Added value: +{
        +  "description": "Source of the display timezone; caller-selected overrides are not geographically validated.",
        +  "enum": [
        +    "explicit_override",
        +    "stored_preference",
        +    "city_default",
        +    "host_header"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / properties / prayerWindowExpiresAtUtc
        Added value: +{
        +  "description": "End of the active prayer period; same boundary as legacy expiresAtUtc",
        +  "type": "string"
        +}
      • addedOutput schema / properties / reminderWindowExpiresAtUtc
        Added value: +{
        +  "description": "Reminder eligibility end; exact_window is capped by the prayer period boundary. Fields appear when a reminder is emitted.",
        +  "type": "string"
        +}
    • Changedget_today_prayer_times7 fields changed
      • changedInput schema / properties / city / description
        Previous value: -"Supported predefined city. Supply city or coordinates with an IANA timezone; connector/IP geolocation is never used."New value: +"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."
      • addedInput schema / properties / date / pattern
        Added value: +"^\\d{4}-\\d{2}-\\d{2}$"
      • changedInput schema / properties / timezone / description
        Previous value: -"Optional IANA timezone override"New value: +"IANA timezone; required in the same request when latitude/longitude are supplied. Explicit overrides select the display timezone."
      • changedInput schema / properties / userId / description
        Previous value: -"Optional unique user identifier to load stored preferences. If omitted, pure geographic auto-resolution is applied."New value: +"Nonblank user identifier; at most 256 UTF-8 bytes and 256 characters. Whitespace in nonblank identifiers is preserved."
      • addedInput schema / properties / userId / maxLength
        Added value: +256
      • addedOutput schema / properties / authorityNotice / properties / calculationDetails / properties / timezoneSource
        Added value: +{
        +  "description": "Source of the display timezone; caller-selected overrides are not geographically validated.",
        +  "enum": [
        +    "explicit_override",
        +    "stored_preference",
        +    "city_default",
        +    "host_header"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / properties / calculationDetails / properties / timezoneSource
        Added value: +{
        +  "description": "Source of the display timezone; caller-selected overrides are not geographically validated.",
        +  "enum": [
        +    "explicit_override",
        +    "stored_preference",
        +    "city_default",
        +    "host_header"
        +  ],
        +  "type": "string"
        +}
  5. 5 tool updates
    • Changedconfigure_prayer_preferences3 fields changed
      • addedOutput schema / properties / preferences / properties / fixedCityConfigured
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / preferences / properties / fixedCoordinatesConfigured
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / preferences / required
        Added value: +[
        +  "fixedCoordinatesConfigured",
        +  "fixedCityConfigured"
        +]
    • Changedget_next_prayer5 fields changed
      • addedInput schema / properties / city
        Added value: +{
        +  "description": "Supported predefined city. Supply city or coordinates with an IANA timezone; connector/IP geolocation is never used.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / authorityNotice / properties / calculationDetails
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "appliedMinuteAdjustments": {
        +      "additionalProperties": {
        +        "type": "number"
        +      },
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "calendarAlignmentAdjusted": {
        +      "type": "boolean"
        +    },
        +    "customMinuteAdjustments": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "asr": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "dhuhr": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "fajr": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "isha": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "maghrib": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "sunrise": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "fallbackLocationUsed": {
        +      "type": "boolean"
        +    },
        +    "highLatitudeRuleSource": {
        +      "enum": [
        +        "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"
        +    },
        +    "locationIsApproximate": {
        +      "type": "boolean"
        +    },
        +    "madhabSource": {
        +      "enum": [
        +        "explicit_override",
        +        "stored_preference",
        +        "geographic_default"
        +      ],
        +      "type": "string"
        +    },
        +    "methodMinuteAdjustments": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "asr": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "dhuhr": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "fajr": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "isha": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "maghrib": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "sunrise": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "methodSource": {
        +      "enum": [
        +        "explicit_override",
        +        "stored_preference",
        +        "geographic_default"
        +      ],
        +      "type": "string"
        +    },
        +    "regionalMinuteAdjustments": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "asr": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "dhuhr": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "fajr": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "isha": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "maghrib": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "sunrise": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        }
        +      },
        +      "type": "object"
        +    }
        +  },
        +  "type": "object"
        +}
      • addedOutput schema / properties / authorityNotice / properties / highLatitudeAdjustment
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "adjustedPrayers": {
        +      "items": {
        +        "enum": [
        +          "Fajr",
        +          "Sunrise",
        +          "Dhuhr",
        +          "Asr",
        +          "Maghrib",
        +          "Isha"
        +        ],
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "applied": {
        +      "type": "boolean"
        +    },
        +    "astronomicalLatitudeClamped": {
        +      "type": "boolean"
        +    },
        +    "effectiveLatitude": {
        +      "anyOf": [
        +        {
        +          "const": 48,
        +          "type": "number"
        +        },
        +        {
        +          "const": -48,
        +          "type": "number"
        +        }
        +      ],
        +      "description": "Substitute latitude only; never the user coordinate"
        +    },
        +    "explanation": {
        +      "type": "string"
        +    },
        +    "methodSpecificTwilightRule": {
        +      "const": "MoonsightingCommittee",
        +      "type": "string"
        +    },
        +    "rule": {
        +      "enum": [
        +        "MiddleOfTheNight",
        +        "SeventhOfTheNight",
        +        "TwilightAngle"
        +      ],
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "applied",
        +    "rule",
        +    "astronomicalLatitudeClamped",
        +    "adjustedPrayers",
        +    "explanation"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / properties / calculationDetails
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "appliedMinuteAdjustments": {
        +      "additionalProperties": {
        +        "type": "number"
        +      },
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "calendarAlignmentAdjusted": {
        +      "type": "boolean"
        +    },
        +    "customMinuteAdjustments": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "asr": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "dhuhr": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "fajr": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "isha": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "maghrib": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "sunrise": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "fallbackLocationUsed": {
        +      "type": "boolean"
        +    },
        +    "highLatitudeRuleSource": {
        +      "enum": [
        +        "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"
        +    },
        +    "locationIsApproximate": {
        +      "type": "boolean"
        +    },
        +    "madhabSource": {
        +      "enum": [
        +        "explicit_override",
        +        "stored_preference",
        +        "geographic_default"
        +      ],
        +      "type": "string"
        +    },
        +    "methodMinuteAdjustments": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "asr": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "dhuhr": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "fajr": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "isha": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "maghrib": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "sunrise": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "methodSource": {
        +      "enum": [
        +        "explicit_override",
        +        "stored_preference",
        +        "geographic_default"
        +      ],
        +      "type": "string"
        +    },
        +    "regionalMinuteAdjustments": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "asr": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "dhuhr": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "fajr": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "isha": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "maghrib": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "sunrise": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        }
        +      },
        +      "type": "object"
        +    }
        +  },
        +  "type": "object"
        +}
      • addedOutput schema / properties / highLatitudeAdjustment
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "adjustedPrayers": {
        +      "items": {
        +        "enum": [
        +          "Fajr",
        +          "Sunrise",
        +          "Dhuhr",
        +          "Asr",
        +          "Maghrib",
        +          "Isha"
        +        ],
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "applied": {
        +      "type": "boolean"
        +    },
        +    "astronomicalLatitudeClamped": {
        +      "type": "boolean"
        +    },
        +    "effectiveLatitude": {
        +      "anyOf": [
        +        {
        +          "const": 48,
        +          "type": "number"
        +        },
        +        {
        +          "const": -48,
        +          "type": "number"
        +        }
        +      ],
        +      "description": "Substitute latitude only; never the user coordinate"
        +    },
        +    "explanation": {
        +      "type": "string"
        +    },
        +    "methodSpecificTwilightRule": {
        +      "const": "MoonsightingCommittee",
        +      "type": "string"
        +    },
        +    "rule": {
        +      "enum": [
        +        "MiddleOfTheNight",
        +        "SeventhOfTheNight",
        +        "TwilightAngle"
        +      ],
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "applied",
        +    "rule",
        +    "astronomicalLatitudeClamped",
        +    "adjustedPrayers",
        +    "explanation"
        +  ],
        +  "type": "object"
        +}
    • Changedget_prayer_preferences3 fields changed
      • addedOutput schema / properties / fixedCityConfigured
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / fixedCoordinatesConfigured
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / required
        Added value: +[
        +  "fixedCoordinatesConfigured",
        +  "fixedCityConfigured"
        +]
    • Changedget_prayer_status6 fields changed
      • addedInput schema / properties / city
        Added value: +{
        +  "description": "Supported predefined city. Supply city or coordinates with an IANA timezone; connector/IP geolocation is never used.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / authorityNotice / properties / calculationDetails
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "appliedMinuteAdjustments": {
        +      "additionalProperties": {
        +        "type": "number"
        +      },
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "calendarAlignmentAdjusted": {
        +      "type": "boolean"
        +    },
        +    "customMinuteAdjustments": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "asr": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "dhuhr": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "fajr": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "isha": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "maghrib": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "sunrise": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "fallbackLocationUsed": {
        +      "type": "boolean"
        +    },
        +    "highLatitudeRuleSource": {
        +      "enum": [
        +        "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"
        +    },
        +    "locationIsApproximate": {
        +      "type": "boolean"
        +    },
        +    "madhabSource": {
        +      "enum": [
        +        "explicit_override",
        +        "stored_preference",
        +        "geographic_default"
        +      ],
        +      "type": "string"
        +    },
        +    "methodMinuteAdjustments": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "asr": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "dhuhr": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "fajr": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "isha": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "maghrib": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "sunrise": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "methodSource": {
        +      "enum": [
        +        "explicit_override",
        +        "stored_preference",
        +        "geographic_default"
        +      ],
        +      "type": "string"
        +    },
        +    "regionalMinuteAdjustments": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "asr": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "dhuhr": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "fajr": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "isha": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "maghrib": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "sunrise": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        }
        +      },
        +      "type": "object"
        +    }
        +  },
        +  "type": "object"
        +}
      • addedOutput schema / properties / authorityNotice / properties / highLatitudeAdjustment
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "adjustedPrayers": {
        +      "items": {
        +        "enum": [
        +          "Fajr",
        +          "Sunrise",
        +          "Dhuhr",
        +          "Asr",
        +          "Maghrib",
        +          "Isha"
        +        ],
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "applied": {
        +      "type": "boolean"
        +    },
        +    "astronomicalLatitudeClamped": {
        +      "type": "boolean"
        +    },
        +    "effectiveLatitude": {
        +      "anyOf": [
        +        {
        +          "const": 48,
        +          "type": "number"
        +        },
        +        {
        +          "const": -48,
        +          "type": "number"
        +        }
        +      ],
        +      "description": "Substitute latitude only; never the user coordinate"
        +    },
        +    "explanation": {
        +      "type": "string"
        +    },
        +    "methodSpecificTwilightRule": {
        +      "const": "MoonsightingCommittee",
        +      "type": "string"
        +    },
        +    "rule": {
        +      "enum": [
        +        "MiddleOfTheNight",
        +        "SeventhOfTheNight",
        +        "TwilightAngle"
        +      ],
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "applied",
        +    "rule",
        +    "astronomicalLatitudeClamped",
        +    "adjustedPrayers",
        +    "explanation"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / properties / calculationDetails
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "appliedMinuteAdjustments": {
        +      "additionalProperties": {
        +        "type": "number"
        +      },
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "calendarAlignmentAdjusted": {
        +      "type": "boolean"
        +    },
        +    "customMinuteAdjustments": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "asr": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "dhuhr": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "fajr": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "isha": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "maghrib": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "sunrise": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "fallbackLocationUsed": {
        +      "type": "boolean"
        +    },
        +    "highLatitudeRuleSource": {
        +      "enum": [
        +        "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"
        +    },
        +    "locationIsApproximate": {
        +      "type": "boolean"
        +    },
        +    "madhabSource": {
        +      "enum": [
        +        "explicit_override",
        +        "stored_preference",
        +        "geographic_default"
        +      ],
        +      "type": "string"
        +    },
        +    "methodMinuteAdjustments": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "asr": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "dhuhr": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "fajr": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "isha": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "maghrib": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "sunrise": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "methodSource": {
        +      "enum": [
        +        "explicit_override",
        +        "stored_preference",
        +        "geographic_default"
        +      ],
        +      "type": "string"
        +    },
        +    "regionalMinuteAdjustments": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "asr": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "dhuhr": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "fajr": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "isha": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "maghrib": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "sunrise": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        }
        +      },
        +      "type": "object"
        +    }
        +  },
        +  "type": "object"
        +}
      • addedOutput schema / properties / highLatitudeAdjustment
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "adjustedPrayers": {
        +      "items": {
        +        "enum": [
        +          "Fajr",
        +          "Sunrise",
        +          "Dhuhr",
        +          "Asr",
        +          "Maghrib",
        +          "Isha"
        +        ],
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "applied": {
        +      "type": "boolean"
        +    },
        +    "astronomicalLatitudeClamped": {
        +      "type": "boolean"
        +    },
        +    "effectiveLatitude": {
        +      "anyOf": [
        +        {
        +          "const": 48,
        +          "type": "number"
        +        },
        +        {
        +          "const": -48,
        +          "type": "number"
        +        }
        +      ],
        +      "description": "Substitute latitude only; never the user coordinate"
        +    },
        +    "explanation": {
        +      "type": "string"
        +    },
        +    "methodSpecificTwilightRule": {
        +      "const": "MoonsightingCommittee",
        +      "type": "string"
        +    },
        +    "rule": {
        +      "enum": [
        +        "MiddleOfTheNight",
        +        "SeventhOfTheNight",
        +        "TwilightAngle"
        +      ],
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "applied",
        +    "rule",
        +    "astronomicalLatitudeClamped",
        +    "adjustedPrayers",
        +    "explanation"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / properties / nextPrayerCalculation
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Adjustment disclosure for the actual schedule of the next event, including tomorrow",
        +  "properties": {
        +    "authorityNotice": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "authorityDescription": {
        +          "description": "Full descriptive name of the calculation authority",
        +          "type": "string"
        +        },
        +        "calculationDetails": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "appliedMinuteAdjustments": {
        +              "additionalProperties": {
        +                "type": "number"
        +              },
        +              "propertyNames": {
        +                "type": "string"
        +              },
        +              "type": "object"
        +            },
        +            "calendarAlignmentAdjusted": {
        +              "type": "boolean"
        +            },
        +            "customMinuteAdjustments": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "asr": {
        +                  "maximum": 60,
        +                  "minimum": -60,
        +                  "type": "integer"
        +                },
        +                "dhuhr": {
        +                  "maximum": 60,
        +                  "minimum": -60,
        +                  "type": "integer"
        +                },
        +                "fajr": {
        +                  "maximum": 60,
        +                  "minimum": -60,
        +                  "type": "integer"
        +                },
        +                "isha": {
        +                  "maximum": 60,
        +                  "minimum": -60,
        +                  "type": "integer"
        +                },
        +                "maghrib": {
        +                  "maximum": 60,
        +                  "minimum": -60,
        +                  "type": "integer"
        +                },
        +                "sunrise": {
        +                  "maximum": 60,
        +                  "minimum": -60,
        +                  "type": "integer"
        +                }
        +              },
        +              "type": "object"
        +            },
        +            "fallbackLocationUsed": {
        +              "type": "boolean"
        +            },
        +            "highLatitudeRuleSource": {
        +              "enum": [
        +                "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"
        +            },
        +            "locationIsApproximate": {
        +              "type": "boolean"
        +            },
        +            "madhabSource": {
        +              "enum": [
        +                "explicit_override",
        +                "stored_preference",
        +                "geographic_default"
        +              ],
        +              "type": "string"
        +            },
        +            "methodMinuteAdjustments": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "asr": {
        +                  "maximum": 60,
        +                  "minimum": -60,
        +                  "type": "integer"
        +                },
        +                "dhuhr": {
        +                  "maximum": 60,
        +                  "minimum": -60,
        +                  "type": "integer"
        +                },
        +                "fajr": {
        +                  "maximum": 60,
        +                  "minimum": -60,
        +                  "type": "integer"
        +                },
        +                "isha": {
        +                  "maximum": 60,
        +                  "minimum": -60,
        +                  "type": "integer"
        +                },
        +                "maghrib": {
        +                  "maximum": 60,
        +                  "minimum": -60,
        +                  "type": "integer"
        +                },
        +                "sunrise": {
        +                  "maximum": 60,
        +                  "minimum": -60,
        +                  "type": "integer"
        +                }
        +              },
        +              "type": "object"
        +            },
        +            "methodSource": {
        +              "enum": [
        +                "explicit_override",
        +                "stored_preference",
        +                "geographic_default"
        +              ],
        +              "type": "string"
        +            },
        +            "regionalMinuteAdjustments": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "asr": {
        +                  "maximum": 60,
        +                  "minimum": -60,
        +                  "type": "integer"
        +                },
        +                "dhuhr": {
        +                  "maximum": 60,
        +                  "minimum": -60,
        +                  "type": "integer"
        +                },
        +                "fajr": {
        +                  "maximum": 60,
        +                  "minimum": -60,
        +                  "type": "integer"
        +                },
        +                "isha": {
        +                  "maximum": 60,
        +                  "minimum": -60,
        +                  "type": "integer"
        +                },
        +                "maghrib": {
        +                  "maximum": 60,
        +                  "minimum": -60,
        +                  "type": "integer"
        +                },
        +                "sunrise": {
        +                  "maximum": 60,
        +                  "minimum": -60,
        +                  "type": "integer"
        +                }
        +              },
        +              "type": "object"
        +            }
        +          },
        +          "type": "object"
        +        },
        +        "highLatitudeAdjustment": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "adjustedPrayers": {
        +              "items": {
        +                "enum": [
        +                  "Fajr",
        +                  "Sunrise",
        +                  "Dhuhr",
        +                  "Asr",
        +                  "Maghrib",
        +                  "Isha"
        +                ],
        +                "type": "string"
        +              },
        +              "type": "array"
        +            },
        +            "applied": {
        +              "type": "boolean"
        +            },
        +            "astronomicalLatitudeClamped": {
        +              "type": "boolean"
        +            },
        +            "effectiveLatitude": {
        +              "anyOf": [
        +                {
        +                  "const": 48,
        +                  "type": "number"
        +                },
        +                {
        +                  "const": -48,
        +                  "type": "number"
        +                }
        +              ],
        +              "description": "Substitute latitude only; never the user coordinate"
        +            },
        +            "explanation": {
        +              "type": "string"
        +            },
        +            "methodSpecificTwilightRule": {
        +              "const": "MoonsightingCommittee",
        +              "type": "string"
        +            },
        +            "rule": {
        +              "enum": [
        +                "MiddleOfTheNight",
        +                "SeventhOfTheNight",
        +                "TwilightAngle"
        +              ],
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "applied",
        +            "rule",
        +            "astronomicalLatitudeClamped",
        +            "adjustedPrayers",
        +            "explanation"
        +          ],
        +          "type": "object"
        +        },
        +        "madhab": {
        +          "description": "The Asr jurisprudence school",
        +          "enum": [
        +            "Shafi",
        +            "Hanafi"
        +          ],
        +          "type": "string"
        +        },
        +        "method": {
        +          "description": "The calculation authority method",
        +          "enum": [
        +            "UmmAlQura",
        +            "MuslimWorldLeague",
        +            "Egyptian",
        +            "Karachi",
        +            "NorthAmerica",
        +            "Dubai",
        +            "Qatar",
        +            "Kuwait",
        +            "MoonsightingCommittee",
        +            "Singapore",
        +            "Turkey",
        +            "Tehran"
        +          ],
        +          "type": "string"
        +        },
        +        "requiredDisplayInstruction": {
        +          "description": "Mandatory theological notice for AI presentation",
        +          "type": "string"
        +        },
        +        "selectionReason": {
        +          "description": "Rationale for selecting this authority",
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "method",
        +        "madhab",
        +        "authorityDescription",
        +        "selectionReason",
        +        "requiredDisplayInstruction"
        +      ],
        +      "type": "object"
        +    },
        +    "calculationDetails": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "appliedMinuteAdjustments": {
        +          "additionalProperties": {
        +            "type": "number"
        +          },
        +          "propertyNames": {
        +            "type": "string"
        +          },
        +          "type": "object"
        +        },
        +        "calendarAlignmentAdjusted": {
        +          "type": "boolean"
        +        },
        +        "customMinuteAdjustments": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "asr": {
        +              "maximum": 60,
        +              "minimum": -60,
        +              "type": "integer"
        +            },
        +            "dhuhr": {
        +              "maximum": 60,
        +              "minimum": -60,
        +              "type": "integer"
        +            },
        +            "fajr": {
        +              "maximum": 60,
        +              "minimum": -60,
        +              "type": "integer"
        +            },
        +            "isha": {
        +              "maximum": 60,
        +              "minimum": -60,
        +              "type": "integer"
        +            },
        +            "maghrib": {
        +              "maximum": 60,
        +              "minimum": -60,
        +              "type": "integer"
        +            },
        +            "sunrise": {
        +              "maximum": 60,
        +              "minimum": -60,
        +              "type": "integer"
        +            }
        +          },
        +          "type": "object"
        +        },
        +        "fallbackLocationUsed": {
        +          "type": "boolean"
        +        },
        +        "highLatitudeRuleSource": {
        +          "enum": [
        +            "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"
        +        },
        +        "locationIsApproximate": {
        +          "type": "boolean"
        +        },
        +        "madhabSource": {
        +          "enum": [
        +            "explicit_override",
        +            "stored_preference",
        +            "geographic_default"
        +          ],
        +          "type": "string"
        +        },
        +        "methodMinuteAdjustments": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "asr": {
        +              "maximum": 60,
        +              "minimum": -60,
        +              "type": "integer"
        +            },
        +            "dhuhr": {
        +              "maximum": 60,
        +              "minimum": -60,
        +              "type": "integer"
        +            },
        +            "fajr": {
        +              "maximum": 60,
        +              "minimum": -60,
        +              "type": "integer"
        +            },
        +            "isha": {
        +              "maximum": 60,
        +              "minimum": -60,
        +              "type": "integer"
        +            },
        +            "maghrib": {
        +              "maximum": 60,
        +              "minimum": -60,
        +              "type": "integer"
        +            },
        +            "sunrise": {
        +              "maximum": 60,
        +              "minimum": -60,
        +              "type": "integer"
        +            }
        +          },
        +          "type": "object"
        +        },
        +        "methodSource": {
        +          "enum": [
        +            "explicit_override",
        +            "stored_preference",
        +            "geographic_default"
        +          ],
        +          "type": "string"
        +        },
        +        "regionalMinuteAdjustments": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "asr": {
        +              "maximum": 60,
        +              "minimum": -60,
        +              "type": "integer"
        +            },
        +            "dhuhr": {
        +              "maximum": 60,
        +              "minimum": -60,
        +              "type": "integer"
        +            },
        +            "fajr": {
        +              "maximum": 60,
        +              "minimum": -60,
        +              "type": "integer"
        +            },
        +            "isha": {
        +              "maximum": 60,
        +              "minimum": -60,
        +              "type": "integer"
        +            },
        +            "maghrib": {
        +              "maximum": 60,
        +              "minimum": -60,
        +              "type": "integer"
        +            },
        +            "sunrise": {
        +              "maximum": 60,
        +              "minimum": -60,
        +              "type": "integer"
        +            }
        +          },
        +          "type": "object"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "highLatitudeAdjustment": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "adjustedPrayers": {
        +          "items": {
        +            "enum": [
        +              "Fajr",
        +              "Sunrise",
        +              "Dhuhr",
        +              "Asr",
        +              "Maghrib",
        +              "Isha"
        +            ],
        +            "type": "string"
        +          },
        +          "type": "array"
        +        },
        +        "applied": {
        +          "type": "boolean"
        +        },
        +        "astronomicalLatitudeClamped": {
        +          "type": "boolean"
        +        },
        +        "effectiveLatitude": {
        +          "anyOf": [
        +            {
        +              "const": 48,
        +              "type": "number"
        +            },
        +            {
        +              "const": -48,
        +              "type": "number"
        +            }
        +          ],
        +          "description": "Substitute latitude only; never the user coordinate"
        +        },
        +        "explanation": {
        +          "type": "string"
        +        },
        +        "methodSpecificTwilightRule": {
        +          "const": "MoonsightingCommittee",
        +          "type": "string"
        +        },
        +        "rule": {
        +          "enum": [
        +            "MiddleOfTheNight",
        +            "SeventhOfTheNight",
        +            "TwilightAngle"
        +          ],
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "applied",
        +        "rule",
        +        "astronomicalLatitudeClamped",
        +        "adjustedPrayers",
        +        "explanation"
        +      ],
        +      "type": "object"
        +    },
        +    "localDate": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "localDate"
        +  ],
        +  "type": "object"
        +}
    • Changedget_today_prayer_times5 fields changed
      • addedInput schema / properties / city
        Added value: +{
        +  "description": "Supported predefined city. Supply city or coordinates with an IANA timezone; connector/IP geolocation is never used.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / authorityNotice / properties / calculationDetails
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "appliedMinuteAdjustments": {
        +      "additionalProperties": {
        +        "type": "number"
        +      },
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "calendarAlignmentAdjusted": {
        +      "type": "boolean"
        +    },
        +    "customMinuteAdjustments": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "asr": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "dhuhr": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "fajr": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "isha": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "maghrib": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "sunrise": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "fallbackLocationUsed": {
        +      "type": "boolean"
        +    },
        +    "highLatitudeRuleSource": {
        +      "enum": [
        +        "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"
        +    },
        +    "locationIsApproximate": {
        +      "type": "boolean"
        +    },
        +    "madhabSource": {
        +      "enum": [
        +        "explicit_override",
        +        "stored_preference",
        +        "geographic_default"
        +      ],
        +      "type": "string"
        +    },
        +    "methodMinuteAdjustments": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "asr": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "dhuhr": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "fajr": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "isha": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "maghrib": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "sunrise": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "methodSource": {
        +      "enum": [
        +        "explicit_override",
        +        "stored_preference",
        +        "geographic_default"
        +      ],
        +      "type": "string"
        +    },
        +    "regionalMinuteAdjustments": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "asr": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "dhuhr": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "fajr": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "isha": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "maghrib": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "sunrise": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        }
        +      },
        +      "type": "object"
        +    }
        +  },
        +  "type": "object"
        +}
      • addedOutput schema / properties / authorityNotice / properties / highLatitudeAdjustment
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "adjustedPrayers": {
        +      "items": {
        +        "enum": [
        +          "Fajr",
        +          "Sunrise",
        +          "Dhuhr",
        +          "Asr",
        +          "Maghrib",
        +          "Isha"
        +        ],
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "applied": {
        +      "type": "boolean"
        +    },
        +    "astronomicalLatitudeClamped": {
        +      "type": "boolean"
        +    },
        +    "effectiveLatitude": {
        +      "anyOf": [
        +        {
        +          "const": 48,
        +          "type": "number"
        +        },
        +        {
        +          "const": -48,
        +          "type": "number"
        +        }
        +      ],
        +      "description": "Substitute latitude only; never the user coordinate"
        +    },
        +    "explanation": {
        +      "type": "string"
        +    },
        +    "methodSpecificTwilightRule": {
        +      "const": "MoonsightingCommittee",
        +      "type": "string"
        +    },
        +    "rule": {
        +      "enum": [
        +        "MiddleOfTheNight",
        +        "SeventhOfTheNight",
        +        "TwilightAngle"
        +      ],
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "applied",
        +    "rule",
        +    "astronomicalLatitudeClamped",
        +    "adjustedPrayers",
        +    "explanation"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / properties / calculationDetails
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "appliedMinuteAdjustments": {
        +      "additionalProperties": {
        +        "type": "number"
        +      },
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "calendarAlignmentAdjusted": {
        +      "type": "boolean"
        +    },
        +    "customMinuteAdjustments": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "asr": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "dhuhr": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "fajr": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "isha": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "maghrib": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "sunrise": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "fallbackLocationUsed": {
        +      "type": "boolean"
        +    },
        +    "highLatitudeRuleSource": {
        +      "enum": [
        +        "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"
        +    },
        +    "locationIsApproximate": {
        +      "type": "boolean"
        +    },
        +    "madhabSource": {
        +      "enum": [
        +        "explicit_override",
        +        "stored_preference",
        +        "geographic_default"
        +      ],
        +      "type": "string"
        +    },
        +    "methodMinuteAdjustments": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "asr": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "dhuhr": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "fajr": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "isha": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "maghrib": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "sunrise": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "methodSource": {
        +      "enum": [
        +        "explicit_override",
        +        "stored_preference",
        +        "geographic_default"
        +      ],
        +      "type": "string"
        +    },
        +    "regionalMinuteAdjustments": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "asr": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "dhuhr": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "fajr": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "isha": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "maghrib": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        },
        +        "sunrise": {
        +          "maximum": 60,
        +          "minimum": -60,
        +          "type": "integer"
        +        }
        +      },
        +      "type": "object"
        +    }
        +  },
        +  "type": "object"
        +}
      • addedOutput schema / properties / highLatitudeAdjustment
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "adjustedPrayers": {
        +      "items": {
        +        "enum": [
        +          "Fajr",
        +          "Sunrise",
        +          "Dhuhr",
        +          "Asr",
        +          "Maghrib",
        +          "Isha"
        +        ],
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "applied": {
        +      "type": "boolean"
        +    },
        +    "astronomicalLatitudeClamped": {
        +      "type": "boolean"
        +    },
        +    "effectiveLatitude": {
        +      "anyOf": [
        +        {
        +          "const": 48,
        +          "type": "number"
        +        },
        +        {
        +          "const": -48,
        +          "type": "number"
        +        }
        +      ],
        +      "description": "Substitute latitude only; never the user coordinate"
        +    },
        +    "explanation": {
        +      "type": "string"
        +    },
        +    "methodSpecificTwilightRule": {
        +      "const": "MoonsightingCommittee",
        +      "type": "string"
        +    },
        +    "rule": {
        +      "enum": [
        +        "MiddleOfTheNight",
        +        "SeventhOfTheNight",
        +        "TwilightAngle"
        +      ],
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "applied",
        +    "rule",
        +    "astronomicalLatitudeClamped",
        +    "adjustedPrayers",
        +    "explanation"
        +  ],
        +  "type": "object"
        +}
  6. 5 tool updates
    • Changedconfigure_prayer_preferences2 fields changed
      • removedOutput schema / properties / preferences / properties / fixedCoordinates
        Removed value: -{
        -  "additionalProperties": false,
        -  "properties": {
        -    "latitude": {
        -      "type": "number"
        -    },
        -    "longitude": {
        -      "type": "number"
        -    }
        -  },
        -  "required": [
        -    "latitude",
        -    "longitude"
        -  ],
        -  "type": "object"
        -}
      • removedOutput schema / properties / preferences / properties / userId
        Removed value: -{
        -  "type": "string"
        -}
    • Changedget_next_prayer1 field changed
      • addedInput schema / properties / userId / minLength
        Added value: +1
    • Changedget_prayer_preferences2 fields changed
      • removedOutput schema / properties / fixedCoordinates
        Removed value: -{
        -  "additionalProperties": false,
        -  "properties": {
        -    "latitude": {
        -      "type": "number"
        -    },
        -    "longitude": {
        -      "type": "number"
        -    }
        -  },
        -  "required": [
        -    "latitude",
        -    "longitude"
        -  ],
        -  "type": "object"
        -}
      • removedOutput schema / properties / userId
        Removed value: -{
        -  "type": "string"
        -}
    • Changedget_prayer_status1 field changed
      • addedInput schema / properties / userId / minLength
        Added value: +1
    • Changedget_today_prayer_times2 fields changed
      • removedInput schema / properties / date / pattern
        Removed value: -"^\\d{4}-\\d{2}-\\d{2}$"
      • addedInput schema / properties / userId / minLength
        Added value: +1
  7. 3 tool updates
    • Changedget_next_prayer1 field changed
      • addedInput schema / properties / userId
        Added value: +{
        +  "description": "Optional unique user identifier to load stored preferences. If omitted, pure geographic auto-resolution is applied.",
        +  "type": "string"
        +}
    • Changedget_prayer_status1 field changed
      • addedInput schema / properties / userId
        Added value: +{
        +  "description": "Optional unique user identifier to load stored preferences. If omitted, pure geographic auto-resolution is applied.",
        +  "type": "string"
        +}
    • Changedget_today_prayer_times1 field changed
      • addedInput schema / properties / userId
        Added value: +{
        +  "description": "Optional unique user identifier to load stored preferences. If omitted, pure geographic auto-resolution is applied.",
        +  "type": "string"
        +}
  8. 3 tool updates
    • Changedget_next_prayer3 fields changed
      • removedInput schema / properties / userId
        Removed value: -{
        -  "description": "Unique user or device ID",
        -  "type": "string"
        -}
      • removedOutput schema / properties / locationSource
        Removed value: -{
        -  "description": "Source of location resolution",
        -  "type": "string"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "currentLocalDate",
        -  "timezone",
        -  "nextPrayer",
        -  "nextPrayerAtUtc",
        -  "nextPrayerLocalTime",
        -  "remainingMinutes",
        -  "calculationMethod",
        -  "madhab",
        -  "locationSource"
        -]New value: +[
        +  "currentLocalDate",
        +  "timezone",
        +  "nextPrayer",
        +  "nextPrayerAtUtc",
        +  "nextPrayerLocalTime",
        +  "remainingMinutes",
        +  "calculationMethod",
        +  "madhab"
        +]
    • Changedget_prayer_status4 fields changed
      • removedInput schema / properties / userId
        Removed value: -{
        -  "description": "Unique user or device ID for preference and deduplication tracking",
        -  "type": "string"
        -}
      • removedOutput schema / properties / dedupeKey
        Removed value: -{
        -  "description": "Deduplication cache key",
        -  "type": "string"
        -}
      • removedOutput schema / properties / locationSource
        Removed value: -{
        -  "description": "Source of location resolution",
        -  "type": "string"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "reminderDue",
        -  "localDate",
        -  "nextPrayer",
        -  "nextPrayerAtUtc",
        -  "timezone",
        -  "calculationMethod",
        -  "madhab",
        -  "locationSource"
        -]New value: +[
        +  "reminderDue",
        +  "localDate",
        +  "nextPrayer",
        +  "nextPrayerAtUtc",
        +  "timezone",
        +  "calculationMethod",
        +  "madhab"
        +]
    • Changedget_today_prayer_times3 fields changed
      • removedInput schema / properties / userId
        Removed value: -{
        -  "description": "Unique user or device ID",
        -  "type": "string"
        -}
      • removedOutput schema / properties / coordinates
        Removed value: -{
        -  "additionalProperties": false,
        -  "properties": {
        -    "latitude": {
        -      "description": "Latitude in degrees",
        -      "type": "number"
        -    },
        -    "longitude": {
        -      "description": "Longitude in degrees",
        -      "type": "number"
        -    }
        -  },
        -  "required": [
        -    "latitude",
        -    "longitude"
        -  ],
        -  "type": "object"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "localDate",
        -  "timezone",
        -  "coordinates",
        -  "calculationMethod",
        -  "madhab",
        -  "timesUtc",
        -  "timesLocal"
        -]New value: +[
        +  "localDate",
        +  "timezone",
        +  "calculationMethod",
        +  "madhab",
        +  "timesUtc",
        +  "timesLocal"
        +]
  9. 5 tool updates
    • Changedconfigure_prayer_preferences3 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / fixedCoordinates / additionalProperties
        Removed value: -false
      • removedInput schema / properties / minuteAdjustments / additionalProperties
        Removed value: -false
    • Changedget_next_prayer3 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedOutput schema / properties / remainingMinutes / maximum
        Added value: +9007199254740991
      • addedOutput schema / properties / remainingMinutes / minimum
        Added value: +-9007199254740991
    • Changedget_prayer_preferences1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedget_prayer_status1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedget_today_prayer_times1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
  10. 5 tool updates
    • First observedconfigure_prayer_preferences
    • First observedget_next_prayer
    • First observedget_prayer_preferences
    • First observedget_prayer_status
    • First observedget_today_prayer_times

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    Azan-MCP is an open-source Model Context Protocol (MCP) server that brings a comprehensive suite of Islamic utilities directly into AI assistants such as Claude Desktop.
    34
    380
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    MCP server providing Malaysian/global prayer times (JAKIM + Aladhan fallback), nearest mosque/surau finder, and Islamic calendar events.
    4
    34 PyPI
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Remote MCP server exposing Wasilah's Islamic reference data, enabling prayer-time, Qibla, Hijri-date, and Quran-audio queries via natural language.
    MIT
  • A
    license
    B
    quality
    C
    maintenance
    An MCP server providing comprehensive Islamic utilities, including prayer times, azan, Hijri calendar, du'a, zakat, and the 99 Names of Allah.
    34
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.