Skip to main content
Glama

Muslim Prayer Reminder MCP

Check Muslim Prayer Due Status

get_prayer_status

Checks if a Muslim obligatory prayer (Fajr, Dhuhr, Asr, Maghrib, Isha) is currently due for the user location and returns active reminder details. MANDATORY: The LLM must always explicitly disclose to the user which calculation authority method was used and why it was selected (see authorityNotice in response).

Input 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

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

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed12 schema 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"
      +]
  2. Changed16 schema 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"
      +}
  3. Changed10 schema 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"
      +}
  4. Changed6 schema 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"
      +}
  5. Changed1 schema field changed
    • addedInput schema / properties / userId / minLength
      Added value: +1
  6. Changed1 schema 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"
      +}
  7. Changed4 schema 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"
      +]
  8. Changed1 schema field changed
    • removedInput schema / additionalProperties
      Removed value: -false
  9. First observed

TDQS

A3.5/5.0
Behavior3/5

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

The description adds a genuine behavioral requirement not present in the annotations: the agent must disclose the calculation authority method used and why, pointing at authorityNotice in the response. However, it never explains the notable annotation signal that readOnlyHint is false for what reads like a status query (does it persist reminder state?), leaving a real behavioral question unanswered.

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 sentences, front-loaded with the core behavior, with the mandatory disclosure instruction isolated in its own clearly-marked clause. Slightly heavy on imperative phrasing but nothing is wasted.

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 not be explained, and the description covers the core behavior plus a mandatory output-disclosure obligation. It does not explain how location is supplied (city vs. coordinates vs. userId) or the auto-resolution default, which is a modest gap for a 7-parameter, zero-required tool.

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 enums are documented inline, so the schema carries the parameter burden. The description only implies location-based resolution and hints at the calculation authority concept, adding no format, default, or dependency detail beyond what the schema already states.

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?

The description names a specific verb and resource ('Checks if a Muslim obligatory prayer ... is currently due') and enumerates the five prayers covered, which distinguishes it in spirit from get_next_prayer and get_today_prayer_times. It stops short of explicitly naming those siblings or contrasting the scopes, so it is clear but not fully differentiated.

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

Usage Guidelines3/5

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

Usage is only implied by the phrase 'currently due,' which suggests a real-time status check, but there is no explicit when-to-use, when-not-to-use, or routing to get_next_prayer / get_today_prayer_times. The MANDATORY sentence governs output disclosure, not tool selection, so it does not fill this gap.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.