Azan-MCP
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Azan-MCPWhat are today's prayer times in Makkah?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Azan-MCP
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. It enables any LLM client that supports MCP to answer Islamic questions with accuracy, proper sourcing, and full awareness of the user's location, timezone, and madhab.
What it does
Prayer Times — Calculates the five daily prayers (Fajr, Dhuhr, Asr, Maghrib, Isha) plus Sunrise for any location on Earth using the full Meeus solar algorithm. Supports 10 internationally recognised calculation methods and both Hanafi and Shafi madhab for Asr. Also computes Qibla direction, monthly calendars, and Sunnah prayer windows (Duha, Awwabin, Tahajjud).
Azan & Iqama — Returns the full Azan text in Arabic and transliteration (with the Fajr Tatwidh variant), calculates Iqama times based on configurable per-prayer offsets, and provides a complete daily Azan schedule.
Islamic Calendar — Converts dates between Gregorian and Hijri calendars, lists named Islamic events with their Gregorian equivalents, and identifies recommended voluntary fasting days (Mondays/Thursdays, Ayyam al-Beed, 6 days of Shawwal, Day of Arafah).
Du'a & Dhikr — Provides sourced morning and evening adhkar, du'a collections across 15 topics (travel, eating, anxiety, protection, and more), and du'as for every position in salah. Every entry is traced to its hadith reference with a confidence rating.
Zakat & Islamic Calculators — Calculates Zakat due on cash, gold, silver, and trade goods; determines Nisab thresholds; computes Suhoor/Iftar times for Ramadan date ranges; and distributes inheritance according to Faraid (Quran 4:11-12) using exact fractional arithmetic with Aul handling.
99 Names of Allah — The complete Asma ul-Husna with Arabic text, transliteration, meaning, and explanation for all 99 names, fully searchable.

Design principles
Principle | How it is applied |
Accuracy | Prayer engine implements the full Meeus astronomical algorithm (±2 min vs IslamicFinder). Hijri conversion uses the |
Authenticity | Every Du'a and Dhikr entry carries a hadith source reference and a confidence level ( |
Transparency | All tool responses include a |
Discoverability | Tools like |
Safety | Zakat, Faraid, and calendar tools include a "consult a qualified scholar" disclaimer in every response. |
Zero friction | Installable with a single |
Tech Stack
Built with Python 3.12+ and FastMCP (the official Anthropic MCP SDK). The prayer time engine is vendored directly from the Meeus algorithm using Python's standard library only (math, datetime, zoneinfo) — no stale third-party astronomical dependency. The Hijri calendar uses the actively maintained hijridate package.
Folder Structure
src/azan_mcp/
├── server.py # FastMCP entry point — 34 tools across 6 modules
├── config.py # UserConfig dataclass (location, timezone, method, madhab)
├── prayer_engine.py # Vendored Meeus solar algorithm
├── tools/ # One module per epic: prayer_times, azan, calendar,
│ # dua_dhikr, calculators, asma
└── data/ # adhkar.json · duas.json · asma_ul_husna.jsonSupported Calculation Methods
ID | Name | Fajr° | Isha |
| Umm al-Qura, Makkah | 18.5 | 90 min after Maghrib |
| Muslim World League | 18 | 17° |
| ISNA | 15 | 15° |
| Egyptian General Authority | 19.5 | 17.5° |
| Univ. of Islamic Sciences, Karachi | 18 | 18° |
| Univ. of Tehran | 17.7 | 14° |
| Kuwait | 18 | 17.5° |
| UOIF (France) | 12 | 12° |
| Ithna Ashari | 16 | 14° |
| Muhammadiyah | 20 | 18° |
Related MCP server: Zmanim MCP Server
Tools
# | Tool | Category | Description |
1 |
| Core | Active config: location, timezone, calculation method, madhab |
2 |
| Core | All 10 method IDs with Fajr/Isha angles |
3 |
| Prayer Times | All 5 prayers + Sunrise for a date and location |
4 |
| Prayer Times | Name and time of the next upcoming prayer |
5 |
| Prayer Times | Minutes until next prayer + human-readable countdown |
6 |
| Prayer Times | Bearing in degrees + 16-point cardinal toward Makkah |
7 |
| Prayer Times | Full month prayer schedule (28–31 days) |
8 |
| Prayer Times | Duha, Awwabin, and Tahajjud time windows |
9 |
| Azan & Iqama | Full Azan text in Arabic and/or transliteration (Fajr variant included) |
10 |
| Azan & Iqama | Iqama time = adhan + configured offset |
11 |
| Azan & Iqama | Update iqama delay (minutes after adhan) per prayer |
12 |
| Azan & Iqama | All 5 adhan + iqama times for today |
13 |
| Islamic Calendar | Today's or a given date's Hijri equivalent |
14 |
| Islamic Calendar | Gregorian → Hijri conversion |
15 |
| Islamic Calendar | Hijri → Gregorian conversion |
16 |
| Islamic Calendar | Named Islamic events for a Hijri year/month with Gregorian dates |
17 |
| Islamic Calendar | Gregorian start and end dates of Ramadan for a given year |
18 |
| Islamic Calendar | Eid al-Fitr and Eid al-Adha dates for a given year |
19 |
| Islamic Calendar | Mondays/Thursdays, Ayyam al-Beed, 6 Shawwal, Day of Arafah |
20 |
| Du'a & Dhikr | Complete morning adhkar with Arabic, transliteration, source |
21 |
| Du'a & Dhikr | Complete evening adhkar with Arabic, transliteration, source |
22 |
| Du'a & Dhikr | All available topic slugs (travel, eating, anxiety, …) |
23 |
| Du'a & Dhikr | All du'as for a given topic |
24 |
| Du'a & Dhikr | Full-text search across Arabic, transliteration, translation |
25 |
| Du'a & Dhikr | Recommended repetition count and virtues for a dhikr |
26 |
| Du'a & Dhikr | Du'as for ruku, sujood, tashahhud, and after salah |
27 |
| Zakat & Calculators | 2.5% Zakat due on cash, gold, silver, or trade goods above nisab |
28 |
| Zakat & Calculators | Nisab threshold = 85g × gold price per gram |
29 |
| Zakat & Calculators | Nisab threshold = 595g × silver price per gram |
30 |
| Zakat & Calculators | Suhoor (Fajr) and Iftar (Maghrib) for a date range (max 31 days) |
31 |
| Zakat & Calculators | Faraid fixed shares with Aul handling (Quran 4:11-12) |
32 |
| 99 Names | All 99 Names of Allah with Arabic, transliteration, and meaning |
33 |
| 99 Names | Look up a name by number (1–99) or transliteration |
34 |
| 99 Names | Search names by meaning, transliteration, or Arabic text |
Quickstart
uvx azan-mcpOr with a config file:
AZAN_CONFIG=/path/to/azan-config.json uvx azan-mcpClaude Desktop Setup
Add to your claude_desktop_config.json:
{
"mcpServers": {
"azan": {
"command": "uvx",
"args": ["azan-mcp"],
"env": {
"AZAN_CONFIG": "/path/to/your/azan-config.json"
}
}
}
}Configuration
Create an azan-config.json file (see examples/azan-config.example.json):
{
"latitude": 21.3891,
"longitude": 39.8579,
"timezone": "Asia/Riyadh",
"calculation_method": "umm_al_qura",
"madhab": "shafi",
"iqama_offsets": {
"fajr": 20, "dhuhr": 10, "asr": 10, "maghrib": 5, "isha": 15
}
}Development
uv sync
uv run pytest tests/ -v --ignore=tests/test_integration.pyLicense
This project is licensed under the MIT License — see the LICENSE file for details.
MIT License
Copyright (c) 2026 Azan-MCP Contributors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.Available Tools
34 toolscalculate_fasting_timesB
Return Suhoor end (Fajr) and Iftar start (Maghrib) for each day in a date range (max 31 days). Dates in ISO 8601 format.
| Name | Required | Description | Default |
|---|---|---|---|
| end_date | Yes | ||
| latitude | No | ||
| longitude | No | ||
| start_date | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It only states the output and the 31-day limit, but does not disclose behavior around latitude/longitude, what happens if they are omitted, calculation method, or return structure. The agent is left guessing about important runtime behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two brief sentences, front-loaded with the primary purpose, and avoids any filler. Every word contributes value, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description is incomplete for the tool's complexity. It omits parameter semantics for latitude/longitude, fails to describe the return format, and does not mention any prerequisites or default behaviors. The existing information is insufficient for an agent to use the tool confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description needs to compensate. It clarifies that dates are in ISO 8601 format, which helps for start_date and end_date, but latitude and longitude are entirely unmentioned. The agent cannot determine whether these optional parameters affect the output, and their relevance is unclear.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns Suhoor end (Fajr) and Iftar start (Maghrib) for each day in a date range, using specific religious terms that distinguish it from sibling tools like get_prayer_times or get_monthly_prayer_calendar. The verb 'Return' and explicit resource make the purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for obtaining fasting times within a date range and notes a max of 31 days, but it does not explicitly compare to alternative tools or mention when not to use it. Given the many sibling tools, explicit differentiation would improve clarity, but the core use case is inferable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_gold_nisabA
Return the Zakat Nisab threshold based on 85 grams of gold at the given price.
| Name | Required | Description | Default |
|---|---|---|---|
| currency | No | USD | |
| gold_price_per_gram | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the core calculation (85 grams multiplied by the given price) but does not mention return format, rounding, error handling, or the role of the currency parameter. This is partially transparent but leaves some behavioral details unspecified.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is front-loaded with the action (Return) and the object (Zakat Nisab threshold). There is no filler or repetition, making it appropriately concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter tool with no output schema, the description covers the main purpose but omits the role of the currency parameter and does not describe the exact return type. This leaves minor gaps in completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 0%, so the description must compensate. It references gold_price_per_gram as 'given price' but does not explain the currency parameter at all, leaving its purpose ambiguous. The property names are fairly self-explanatory, but the description adds minimal meaning beyond them.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Return' and the resource 'Zakat Nisab threshold', and specifies the basis: 85 grams of gold at the given price. This distinguishes it from the sibling tool calculate_silver_nisab, which would use silver instead.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context that this tool is for gold-based nisab calculation based on a user-supplied gold price. Although it does not explicitly name alternatives or exclusions, the specificity makes the appropriate use case evident.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_inheritance_basicB
Calculate basic Faraid (Islamic inheritance) fixed shares. spouse: 'husband', 'wife', or None. Returns share fractions and amounts per heir.
| Name | Required | Description | Default |
|---|---|---|---|
| sons | No | ||
| father | No | ||
| mother | No | ||
| spouse | No | ||
| currency | No | USD | |
| daughters | No | ||
| estate_value | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description bears the full behavioral disclosure burden. It discloses the valid spouse values ('husband', 'wife', or None) and the return format ('share fractions and amounts per heir'). However, it does not mention edge cases, assumptions (e.g., what happens with invalid heir combinations), or any side effects, leaving some behavioral ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, consisting of two short sentences that each add distinct value: the first states the tool's purpose, the second clarifies a parameter and the return type. No filler or redundant phrasing, and the purpose is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (7 parameters, no output schema, no annotations), this description is too brief to be complete. It does not explain the inheritance rules, enumerate supported heirs, clarify booleans vs counts, or describe error behavior. The spouse parameter is the only one given meaningful context, leaving significant gaps for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for parameter meaning. It only documents the spouse parameter with its allowed values. The other six parameters (sons, daughters, father, mother, currency, estate_value) are left entirely to their schema titles/types, with no additional context or validation rules.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Calculate basic Faraid (Islamic inheritance) fixed shares', using the specific verb 'calculate' and resource 'Faraid fixed shares'. The qualifier 'basic' adds scope, and the return note distinguishes this from sibling calculation tools like calculate_zakat. It clearly states what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. The word 'basic' implies a limited subset of inheritance calculations but no explicit when-to-use or when-not-to-use statement is given. It does not reference any alternative inheritance calculation tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_silver_nisabA
Return the Zakat Nisab threshold based on 595 grams of silver at the given price.
| Name | Required | Description | Default |
|---|---|---|---|
| currency | No | USD | |
| silver_price_per_gram | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It adds a key behavioral detail: the threshold is specifically 595 grams of silver multiplied by the given price. It does not disclose return format, rounding behavior, or currency handling, but the core calculation is transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is front-loaded with the purpose and calculation basis. It contains no unnecessary words or repetition, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple calculation tool with only two parameters and no output schema, the description is mostly complete. It clearly states the calculation formula and the required input. The main gap is the lack of return format specification, but this is minor for such a straightforward computation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description must compensate. It clarifies that silver_price_per_gram is the price of a single gram of silver ('at the given price') and that 595 grams are used. However, the optional 'currency' parameter is not explained at all, leaving its role ambiguous despite having a default.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'Return the Zakat Nisab threshold' which clearly identifies the tool's function with a specific verb and resource. It also specifies the basis ('595 grams of silver') which distinguishes it from sibling tools like calculate_gold_nisab.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes it clear that this tool is for calculating the silver-based nisab threshold using a given silver price. However, it does not explicitly mention alternatives or exclusions, such as directing users to calculate_gold_nisab for gold-based nisab, so it lacks explicit when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_zakatC
Calculate Zakat due on wealth. wealth_type: cash, gold, silver, trade_goods. Provide gold or silver price per gram to determine nisab.
| Name | Required | Description | Default |
|---|---|---|---|
| amount | Yes | ||
| currency | No | USD | |
| wealth_type | Yes | ||
| gold_price_per_gram | No | ||
| silver_price_per_gram | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the need for gold/silver price per gram to determine nisab, but does not explain what happens when these are omitted, how the calculation is performed, or what the output represents. This is insufficient for a financial calculation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, consisting of two short sentences that front-load the main purpose. Every sentence adds useful information, with no redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 5 parameters, no output schema, and no annotations, the description is incomplete. It does not specify the return value format, the calculation methodology, or how optional prices interact with different wealth types. A user would need significant external knowledge to use this tool confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 0%, so the description must compensate. It adds valuable context by listing allowed wealth_type values and highlighting the role of gold/silver price per gram. However, it does not explain the meaning of 'amount' (is it total wealth?) or the currency parameter, leaving ambiguity in parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Calculate Zakat due on wealth.' It lists the wealth types (cash, gold, silver, trade_goods), making the scope explicit. However, it does not explicitly distinguish itself from sibling tools like calculate_gold_nisab and calculate_silver_nisab, which could handle gold/silver-specific calculations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit guidance on when to use this tool versus alternatives. It implies usage for wealth generally, but does not state conditions like 'use for mixed wealth' or exclude cases where gold/silver nisab calculators are more appropriate. There's also no mention of prerequisites beyond supplying prices.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
convert_gregorian_to_hijriA
Convert a Gregorian calendar date to its Hijri equivalent.
| Name | Required | Description | Default |
|---|---|---|---|
| day | Yes | ||
| year | Yes | ||
| month | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states the conversion action but gives no details about side effects, validation, or return format. For a pure conversion tool, this is minimally acceptable but offers no additional context beyond the name. The description does not contradict any annotations (none exist).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no wasted words. It is front-loaded with the verb 'Convert' and immediately specifies the source and target calendars. This is an example of efficient, minimal prose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (3 integer parameters, no output schema), the description covers the core purpose and implies the output ('its Hijri equivalent'). However, it omits potentially useful context such as the output format, date range handling, and the distinction from similar tools like 'get_hijri_date'. It is adequate but not complete for an agent that needs to handle edge cases or format expectations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not elaborate on the parameters. The only semantic hint is 'Gregorian calendar date,' implying year/month/day are Gregorian components. This provides minimal guidance but lacks critical details such as valid ranges (e.g., month 1-12, day 1-31) or whether the year is CE/AD. The description fails to compensate for the schema's lack of parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action: 'Convert a Gregorian calendar date to its Hijri equivalent.' The verb 'convert' plus the resource pair (Gregorian to Hijri) unambiguously identifies the tool's function. It naturally distinguishes from the sibling 'convert_hijri_to_gregorian' by specifying the conversion direction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The usage is implied by the description: use this when you have a Gregorian date and need the Hijri equivalent. However, there is no explicit guidance on when to choose this over alternatives like 'get_hijri_date' (which likely returns the current date) or what edge cases to consider. No exclusions or alternatives are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
convert_hijri_to_gregorianB
Convert a Hijri calendar date to its Gregorian equivalent.
| Name | Required | Description | Default |
|---|---|---|---|
| hijri_day | Yes | ||
| hijri_year | Yes | ||
| hijri_month | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden of behavioral disclosure. It only states the basic conversion action and does not mention output format, error handling, date range validation, or any side effects, leaving significant behavioral unknowns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no redundant words, effectively front-loading the core purpose. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of output schema and annotations, the description should provide context about return values, valid input ranges, or potential errors. It does none of this, leaving the tool under-specified for an agent that needs to know what to expect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description should compensate by explaining the parameters. It does not, offering no additional meaning beyond the parameter names (hijri_year, hijri_month, hijri_day) and their obvious roles in a Hijri date.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Convert'), the resource ('Hijri calendar date'), and the result ('Gregorian equivalent'). It also distinguishes from the sibling 'convert_gregorian_to_hijri' by explicitly specifying the conversion direction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the use case: converting a Hijri date to Gregorian. However, it provides no explicit guidance on alternatives or when not to use it, and does not reference the sibling tools such as convert_gregorian_to_hijri.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_asma_ul_husnaA
Return all 99 Names of Allah (Asma ul-Husna) with Arabic, transliteration, meaning, and explanation.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral disclosure burden. It explicitly states this is a retrieval operation ('Return all...') with no side effects, and it lists the exact data fields (Arabic, transliteration, meaning, explanation). It does not mention ordering, response format, or rate limits, but for a simple deterministic retrieval with zero parameters, this level of detail is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the primary purpose ('Return all 99 Names') followed by supporting detail (content fields). There is no redundancy or wasted wording, making it highly concise and appropriate for the tool's simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that the tool has no parameters, no output schema, and a straightforward purpose, the description fully covers what the tool does and what it returns. It specifies the complete set (99) and the fields included, which is adequate for an agent to select and invoke the tool correctly. Nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline according to the rubric is 4. The input schema is empty and the description correctly adds no parameter details, as there are none to explain. No further semantic value is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Return all 99 Names of Allah (Asma ul-Husna) with Arabic, transliteration, meaning, and explanation.' The verb 'Return' is specific, and the resource ('all 99 Names') is fully identified with details about the content. This distinguishes it from siblings like get_name_of_allah (single name) and search_asma_ul_husna (search functionality).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies a clear use case: use when you need the complete list of the 99 Names. It does not explicitly mention alternatives or exclusions, but the wording 'all 99 Names' naturally signals this is the comprehensive retrieval tool compared to singular or search variants. No explicit 'when not to use' guidance is provided, but the context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_azan_textA
Return the full Azan text. prayer: fajr, dhuhr, asr, maghrib, isha. language: arabic, transliteration, or both.
| Name | Required | Description | Default |
|---|---|---|---|
| prayer | Yes | ||
| language | No | both |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses the accepted values for prayer and language, but does not elaborate on return format, error behavior, or any other behavioral traits. The read-only nature is implied by 'Return' but not explicitly stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the purpose, and every word earns its place. It lists parameters and values without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only retrieval tool with no output schema, the description covers the essential context: what it returns (full Azan text), the supported prayers, and language options. It is largely complete, though it could mention the structure of the 'both' language option or emphasize the distinction from the schedule tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description compensates by enumerating valid values for prayer (fajr, dhuhr, asr, maghrib, isha) and language (arabic, transliteration, both). This adds meaningful semantics beyond the plain schema properties, though it does not address case sensitivity or invalid input handling.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns the full Azan text, using a specific verb and resource. It distinguishes from siblings like get_daily_azan_schedule by specifying the text of the azan rather than a schedule.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving azan text for a specified prayer and language, but it does not explicitly state when to use this tool versus alternatives, such as get_daily_azan_schedule, or provide exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_counter_recommendationA
Return the recommended repetition count and virtues for a specific dhikr by its ID.
| Name | Required | Description | Default |
|---|---|---|---|
| dhikr_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that the tool returns a repetition count and virtues, which is useful, but it does not mention error behaviors (e.g., invalid/nonexistent ID), data format, or whether the operation is read-only. The description gives some transparency but lacks depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that states the action and key output without waste. It is appropriately concise for a simple tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no output schema), the description is mostly sufficient but lacks detail about the output structure (e.g., what exactly 'virtues' includes) and edge-case behavior. It does not explain the meaning of 'recommended count' or how it relates to other adhkar tools, leaving some gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 0%, so the description must compensate for explaining the parameter. It only repeats 'by its ID' without elaborating on what a dhikr_id looks like, where to find it, or any constraints. This adds minimal value beyond the parameter name itself.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: returning the recommended repetition count and virtues for a specific dhikr by ID. It uses a specific verb ('Return') and names the resource (dhikr recommendation), distinguishing it from sibling list tools like get_morning_adhkar.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'by its ID' implies this tool is for retrieving a single dhikr's recommendation rather than listing all adhkar, but there is no explicit guidance on when to prefer this over sibling tools (e.g., get_morning_adhkar). Usage context is implied, not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_daily_azan_scheduleA
Return today's complete Azan schedule: adhan time and iqama time for all 5 daily prayers.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It accurately conveys a read-only lookup, but does not disclose potential dependencies like location, calculation method, or timezone, nor any caveats about what 'today' means. This is moderately transparent but could add more context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single well-structured sentence that front-loads the key action ('Return') and immediately specifies scope. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool with no output schema, the description is largely complete. It states exactly what is returned. It does not mention location/method dependencies, but that may be outside its scope given sibling tools like get_prayer_times exist.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline is 4. The description adds meaningful output context (adhan and iqama for all 5 prayers), going beyond an empty schema, though no parameter explanation is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns today's complete Azan schedule with both adhan and iqama times for all 5 daily prayers. It uses a specific verb and resource, and distinguishes itself from siblings like get_iqama_time (single time) or get_prayer_times (general times).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use when a complete daily schedule is needed, but does not explicitly discuss when to use this tool over alternatives such as get_monthly_prayer_calendar or get_prayer_times. It lacks clear exclusions or alternative references.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_dua_by_topicA
Return all du'a entries for a given topic. Use list_dua_topics to see available topics (e.g. travel, eating, anxiety, sleeping).
| Name | Required | Description | Default |
|---|---|---|---|
| topic | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the burden of behavioral disclosure. It states the core read behavior and gives examples, but does not disclose edge cases (e.g., empty results, invalid topics), pagination, or output format. This is acceptable for a simple lookup but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is only two sentences, with the main action front-loaded and the second sentence earning its place by pointing to a related tool. There is no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one required parameter and no output schema, the description covers the essential purpose, provides usage context via list_dua_topics, and gives examples. It does not describe the return structure in detail, but 'all du'a entries' implies a collection, which is sufficient for this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, but the description compensates by providing concrete examples (travel, eating, anxiety, sleeping) and directing the agent to list_dua_topics for valid topics. This adds meaningful semantics to the 'topic' parameter, though it does not fully specify all possible values or matching rules.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns all du'a entries for a given topic, using a specific verb and resource. It also references list_dua_topics, which helps distinguish this topic-based retrieval from other dua-related tools like search_dua.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells the agent to use list_dua_topics to see available topics, providing clear context for when to use this tool. However, it does not explicitly contrast with alternatives like search_dua, so it lacks full exclusionary guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_eid_datesA
Return the Gregorian dates of Eid al-Fitr and Eid al-Adha for a given year.
| Name | Required | Description | Default |
|---|---|---|---|
| gregorian_year | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the read-only nature via 'Return' and names both Eid dates, but it does not mention any constraints (e.g., valid year range), calculation method, or return format. This is adequate but not rich for a tool with no annotation support.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence with no filler: 'Return the Gregorian dates of Eid al-Fitr and Eid al-Adha for a given year.' Every word contributes to the meaning, making it concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (one parameter, no output schema, no annotations), and the description covers the core function completely. However, since there is no output schema, it would be marginally better to state the structure of the returned dates (e.g., object with keys for the two Eids). Still, the low complexity makes this a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for the parameter. It only says 'for a given year,' which essentially restates the schema's property name 'gregorian_year' and title 'Gregorian Year'. It adds no extra meaning about acceptable values, format, or behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: returning the Gregorian dates of Eid al-Fitr and Eid al-Adha for a given year. The specific verb 'Return' and the explicit resource (the two Eids' dates) distinguish it from sibling tools like get_islamic_events or get_ramadan_dates, which have broader or different scopes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool: when you need the Gregorian dates of the two major Islamic holidays for a specific year. It doesn't explicitly mention alternatives or exclusions, but the context is clear enough for an agent to select it appropriately among the sibling calendar tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_evening_adhkarA
Return the complete set of evening adhkar (Adhkar al-Masa) with Arabic, transliteration, translation, source, and recommended count.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states that the tool returns the complete set and enumerates the included fields (Arabic, transliteration, translation, source, recommended count), which goes beyond the tool name. It does not mention side effects, but for a simple read-only fetch, this level of detail is sufficient. No contradictions with annotations exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that directly states the action and the resource. The parenthetical clarification '(Adhkar al-Masa)' adds useful context without extra fluff. Every word earns its place, and there is no redundant or irrelevant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no parameters, no output schema), the description is quite complete. It specifies the exact content of the return set, which helps the agent understand what to expect. However, it does not explicitly indicate whether the return is an array or object, but this is a minor gap given the 'complete set' phrasing. Overall, it provides enough context for correct invocation and interpretation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the schema covers everything (100% coverage, vacuously). The description does not need to explain parameters. Per the rubric, a baseline of 4 is appropriate for no-parameter tools.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('Return') and resource ('the complete set of evening adhkar'), and it distinguishes itself from the sibling tool 'get_morning_adhkar' by specifying 'evening' and including the transliteration 'Adhkar al-Masa'. The listed content fields (Arabic, transliteration, translation, source, count) make the function unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving evening adhkar, but it does not explicitly state when to use it versus alternatives like 'get_morning_adhkar' or mention any exclusions. The context is clear from the tool name and description, but no direct 'when to use' or 'when not to use' guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_hijri_dateB
Return today's (or a given ISO date's) equivalent in the Islamic Hijri calendar.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It accurately describes the core read-only behavior, but lacks details on output format, timezone handling, or edge cases for invalid dates, leaving some behavioral aspects undisclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no wasted words, front-loading the action and resource immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with no output schema, the description covers the purpose and parameter semantics. However, it omits the return value format and fails to position itself among the sibling conversion tools, leaving the overall context incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description compensates for the schema's lack of detail by explaining that the 'date' parameter expects an ISO date and defaults to today when null. This adds meaningful clarification beyond the schema's bare anyOf string/null definition.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns the Hijri equivalent for today or a provided ISO date, using a specific verb and resource. However, it does not distinguish itself from the sibling tool convert_gregorian_to_hijri, which likely performs a similar conversion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus the sibling conversion tools. The description only states what it does, leaving the agent to infer usage without explicit alternatives or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_iqama_timeB
Return the Iqama time (adhan + configured offset) for a given prayer. prayer: fajr, dhuhr, asr, maghrib, isha.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | ||
| prayer | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description itself must disclose behavior. It does explain that the result is based on a configured offset applied to adhan, which is helpful. However, it fails to mention the optional date parameter, timezone considerations, or error behavior, leaving gaps in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence that front-loads the purpose and immediately lists valid prayer values. Every word earns its place with no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool, the core behavior is covered, but the optional date parameter is not explained and the return format is unspecified. Given no output schema, the description should provide more context to be fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does provide valid values for the 'prayer' parameter, but the 'date' parameter is completely ignored. Thus, only half of the parameters receive semantic explanation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns the Iqama time for a given prayer, using a specific formula ('adhan + configured offset'). It lists valid prayer values, distinguishing it from siblings like get_prayer_times or set_iqama_offset.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as get_prayer_times or get_daily_azan_schedule. The description only states the basic function, implying usage without explaining context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_islamic_eventsA
Return named Islamic events for a Hijri year. Optionally filter by hijri_month (1–12).
| Name | Required | Description | Default |
|---|---|---|---|
| hijri_year | Yes | ||
| hijri_month | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must convey safety and behavior. It implies a read-only operation by using 'Return', but does not disclose the return format, whether the year parameter has bounds, or what constitutes a 'named event'. The month range (1–12) is useful, but other behavioral details are omitted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that states the main action and optional filter with no filler. Every word serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with 2 parameters and no output schema or annotations. The description covers the core functionality and month filter, but it lacks details like return values, examples, or edge-case behavior. It is adequate as a minimal viable description but has room for improvement.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds the month range (1–12) and clarifies the filter is optional, which the schema only partially conveys via null default. However, it does not explain hijri_year's format, valid range, or semantics beyond the name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Return') and resource ('named Islamic events for a Hijri year'), clearly differentiating from siblings that target specific event types like Ramadan or Eid. The optional month filter is also mentioned, making the tool's scope explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this vs alternatives. It doesn't mention exclusions or situations where a sibling tool would be preferable, such as get_ramadan_dates or get_eid_dates for specific events. Only provides the basic operation without context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_monthly_prayer_calendarB
Return a full month's prayer schedule. month is 1-12.
| Name | Required | Description | Default |
|---|---|---|---|
| year | Yes | ||
| month | Yes | ||
| latitude | No | ||
| longitude | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full transparency burden. It only states the month range, but does not explain how year, latitude, longitude are used, nor the return format or defaults.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The entire description is one sentence plus a parenthetical on month, both useful and free of filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter tool with no output schema, the description is skeletal: it lacks information about calculation method, location defaults, and what constitutes a prayer schedule.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema descriptions cover 0% of parameters, so the description must compensate. It only clarifies month bounds; year, latitude, and longitude are left entirely unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description says 'Return a full month's prayer schedule', which is a specific verb+resource, and clarifies the month parameter is 1-12. It clearly distinguishes from sibling daily tools like get_daily_azan_schedule and get_prayer_times.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description only states what the tool does, not when to choose it over alternatives like get_daily_azan_schedule. Usage context is implied but no exclusions or alternative recommendations are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_morning_adhkarA
Return the complete set of morning adhkar (Adhkar al-Sabah) with Arabic, transliteration, translation, source, and recommended count.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It clearly states what the tool returns and the included fields, which is transparent for a simple read operation. It does not discuss side effects, but none are expected, and there are no hidden behaviors mentioned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, precise sentence that conveys all necessary information without repetition or unnecessary words. The structure is ideal for a no-argument tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no parameters and no output schema, the description lists all return fields, making it sufficiently complete. It does not describe the exact JSON shape, but that is not essential given the simple nature of the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so baseline for parameter semantics is 4. The description does not need to add parameter detail, and it correctly avoids inventing any.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the action ('Return') and the resource ('complete set of morning adhkar'), plus the content fields (Arabic, transliteration, translation, source, recommended count). This distinguishes it from sibling get_evening_adhkar.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The word 'morning' implies when to use but there is no explicit guidance about alternatives or exclusions. The description does not mention that this is for morning as opposed to get_evening_adhkar for evening, leaving usage to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_name_of_allahA
Look up a specific Name of Allah by number (1–99) or transliteration (e.g. 'Ar-Rahman' or 'rahman').
| Name | Required | Description | Default |
|---|---|---|---|
| identifier | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It explains the two accepted input formats but omits details such as return value, error handling, case sensitivity, or whether it returns a single result. This minimal disclosure leaves significant behavioral uncertainty.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that is front-loaded with the action and fully specifies the input modes. No unnecessary words are present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While the tool is simple, the description lacks any mention of return value or behavior, and it does not contextualize the tool against the many similar sibling tools. For a lookup tool with no output schema, this is a clear gap, though the core action is clear.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema only defines 'identifier' as a string with no description, and schema description coverage is 0%. The description compensates by explaining that the identifier can be a number (1–99) or a transliteration like 'Ar-Rahman', providing clear semantic understanding for the single parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: looking up a specific Name of Allah by numeric (1–99) or transliteration identifier. It uses a specific verb ('look up') and defines the resource and accepted identifiers, effectively distinguishing it from sibling search tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when the caller has a specific number or transliteration, but it does not explicitly mention when to use this tool over alternatives like search_asma_ul_husna or get_asma_ul_husna. No exclusions or alternative recommendations are provided, leaving guidance implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_next_prayerC
Return the name and time of the next upcoming prayer from right now.
| Name | Required | Description | Default |
|---|---|---|---|
| latitude | No | ||
| longitude | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It mentions 'from right now' (time sensitivity) but does not explain how location is resolved when latitude/longitude are omitted, what happens when no next prayer exists (e.g., end of day), or any side effects. The behavior is largely opaque.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with a clear verb and object. It is front-loaded with the primary action, contains no redundant words, and is appropriately sized for a simple tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has two optional parameters and no output schema, so the description is the only source for return value details. It states 'name and time' but not the format, whether the result is localized, or how edge cases (e.g., no upcoming prayer today) are handled. The lack of annotations further reduces completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has zero description coverage for latitude/longitude, and the tool description does not mention them at all. It fails to explain that these parameters are optional, how they influence the result, or what defaults apply. The description does nothing to compensate for the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Return' and clearly identifies the resource ('name and time of the next upcoming prayer') and scope ('from right now'). It distinguishes itself from siblings like get_time_until_next_prayer (which focuses on duration) and get_prayer_times (which returns full schedules).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention any exclusions, prerequisites, or comparison with sibling tools. The only implied context is 'from right now,' but there is no explicit 'use this when' language.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_prayer_duaA
Return du'as for a specific position in salah. position: ruku, sujood, tashahhud, after_salah.
| Name | Required | Description | Default |
|---|---|---|---|
| position | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of disclosing behavior. It only states what the tool returns, but does not disclose return format, error handling, or any side effects. This is insufficient for a tool with no annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, direct, and includes only essential information. It front-loads the purpose and clarifies the parameter without unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool, the description covers the purpose and parameter options. However, without an output schema, it does not explain the return format, and it does not differentiate from sibling tools, leaving some gaps for full comprehension.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides no description for the 'position' parameter (0% coverage), but the description supplies the accepted values (ruku, sujood, tashahhud, after_salah). This is critical for correct invocation and fully compensates for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool's purpose: returning du'as for a specific position in salah, with examples of positions. This is a specific verb+resource combination that distinguishes it from sibling dua/adkar tools like get_dua_by_topic or get_morning_adhkar.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. The description implies usage for prayer positions but does not explicitly state when not to use it or mention alternatives such as search_dua or list_dua_topics.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_prayer_timesB
Return all 5 daily prayer times plus Sunrise for a given date and location. Date is ISO 8601 (YYYY-MM-DD); defaults to today. Location defaults to configured coordinates.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | ||
| latitude | No | ||
| longitude | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. It does convey important behavior: the date defaults to today and location defaults to configured coordinates. Nevertheless, it omits details such as timezone handling, calculation method, or explicit read-only nature, though 'Return' implies a safe lookup.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences, front-loaded with the main action and resource, and contains no fluff or redundant information. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of an output schema and annotations, the description should provide more context. It tells the user what is returned (5 prayer times plus Sunrise) and the defaults, but it fails to list the specific prayer times or mention timezone considerations, leaving the agent with incomplete expectations for a tool in a crowded domain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds meaning to the 'date' parameter by specifying ISO 8601 format and its default, and it implies that location is represented by latitude/longitude. However, it does not clarify whether latitude and longitude must be provided together or how they relate to the configured coordinates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Return' and clearly identifies the resource: 'all 5 daily prayer times plus Sunrise for a given date and location.' This makes the tool's core function understandable, though it does not explicitly distinguish it from sibling tools like get_daily_azan_schedule or get_next_prayer.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool (for a given date and location) and mentions default behavior for date and location. However, it does not offer explicit guidance on when not to use it or what alternatives exist, leaving the agent to infer its niche among many prayer-related siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_qibla_directionA
Return the Qibla bearing in degrees and 16-point cardinal direction toward the Kaaba in Makkah.
| Name | Required | Description | Default |
|---|---|---|---|
| latitude | No | ||
| longitude | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral transparency. It states what is returned (bearing and cardinal direction) but does not disclose behavior for missing/invalid coordinates, whether coordinates are required, or any limitations. For a simple read-only calculation, this is moderate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. It precisely conveys the core action and output in minimal words, earning a perfect conciseness score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema, so the description should specify the return structure. It mentions 'bearing in degrees and 16-point cardinal direction' but not whether the return is a string, object, or array. It also omits edge-case handling for optional parameters (default null) and invalid inputs, leaving the agent with ambiguity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. However, it does not explicitly mention that the tool uses latitude and longitude as inputs or explain their roles. The parameter names are self-explanatory, but the description adds no semantic value beyond the schema, failing to bridge the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific verb 'Return', the resource 'Qibla bearing', and the output details (degrees and 16-point cardinal direction) toward the Kaaba. This uniquely distinguishes it from all sibling tools, none of which mention Qibla direction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The purpose is clear, so usage is implicitly inferred (use when Qibla direction is needed), but the description provides no explicit when-to-use guidance or exclusions. There are no alternatives mentioned, but that's acceptable given the tool's uniqueness. However, it does not state prerequisites like 'requires valid coordinates'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ramadan_datesB
Return the Gregorian start and end dates of Ramadan for a given year.
| Name | Required | Description | Default |
|---|---|---|---|
| gregorian_year | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full transparency burden. It clarifies that both input and output use the Gregorian calendar, which is important context. However, it does not disclose whether the dates are based on astronomical calculations, the exact return format, or potential approximation due to moon sighting—though these are minor for such a read-only tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence of 12 words. It contains no filler, directly states the action and outcome, and every word contributes meaning. Example of efficient specification.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
As a simple 1-parameter tool with no output schema or annotations, the description provides the core functionality but omits the return structure (e.g., whether dates are returned as a string, object, or array). It also lacks a note about calculation methodology, which could be relevant for a religious dates tool. Adequate for basic invocation but not fully transparent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, so the description must compensate. It only says 'for a given year', which adds minimal meaning beyond the parameter name `gregorian_year` already present in the schema. It fails to mention constraints like valid year ranges or expected date format, leaving the parameter semantics largely dependent on the schema name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's verb ('Return'), resource ('the Gregorian start and end dates of Ramadan'), and scope ('for a given year'). It directly distinguishes from sibling tools like `get_islamic_events` or `get_eid_dates` by focusing specifically on Ramadan's start and end dates in Gregorian terms.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as `get_islamic_events` or `convert_hijri_to_gregorian`. The description only states what it does, leaving it to the agent to infer from the tool name and siblings without explicit exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_server_infoA
Return the currently active server configuration: location, timezone, calculation method, madhab, and iqama offsets.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden. It clearly states the read-only nature ('Return') and specifies the fields returned, but does not disclose potential error conditions, data freshness, or whether any configuration values may be null. However, for a simple getter, the behavior is adequately conveyed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, well-structured sentence that front-loads the action ('Return') and then lists the details. No redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless getter, the description covers the key output fields. It lacks an output schema but compensates by enumerating the returned properties. It doesn't mention response format or potential errors, but given the tool's simplicity, it is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there are no parameter semantics to explain. The description correctly omits parameter details, and the empty schema is fully covered.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Return' and clearly identifies the resource (currently active server configuration) and lists the exact fields (location, timezone, calculation method, madhab, iqama offsets). This distinguishes it from sibling tools like get_prayer_times or set_iqama_offset.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for reading the server's current configuration but does not explicitly state when to use it over alternatives or mention any prerequisites. No exclusions or alternative tool references are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_sunnah_prayer_timesA
Return Duha (Ishraq) and Tahajjud time windows for a given date.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | ||
| latitude | No | ||
| longitude | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description shoulders the full burden of behavioral disclosure. It only states the primary behavior ('Return time windows') without revealing side effects, defaults for null parameters, timezone assumptions, or output format. The lack of any detail beyond the core action leaves the agent uninformed about edge cases and expected behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. It precisely states the tool's purpose without waste, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has three optional parameters, no output schema, and no annotations, so the description must carry more weight. It does not explain the structure of the returned time windows, how the optional parameters affect results, or any assumptions about location or date. The description is too sparse to fully support an agent in using the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description must explain the parameters, but it only mentions 'for a given date' without specifying the date format or the roles of latitude and longitude. It does not clarify whether these parameters are required, optional, or what happens when they are omitted, leaving the agent uncertain about how to invoke the tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: returning Duha (Ishraq) and Tahajjud time windows for a given date. It uses a specific verb ('Return') and identifies a distinct resource (Sunnah prayer time windows) that sets it apart from sibling tools like get_prayer_times or get_daily_azan_schedule.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context that this tool is specifically for Sunnah prayer times (Duha and Tahajjud) on a given date, implying it should be used when such windows are needed rather than the general prayer time tools. However, it does not explicitly state when not to use it or mention alternative tools for similar purposes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_time_until_next_prayerC
Return minutes until the next prayer and a human-readable countdown string (e.g. '2 hours 15 minutes').
| Name | Required | Description | Default |
|---|---|---|---|
| latitude | No | ||
| longitude | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It explains the output format but does not reveal how latitude/longitude are used, whether they are optional, what happens if not provided, or which calculation method is used for 'next prayer'. This leaves significant ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that wastes no words and includes a concrete example. It is concise, though slightly under-specified for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, no annotations, and two parameters with zero description coverage, this description is incomplete. It does not explain return structure beyond the example, how location is handled, default behavior, or potential errors. It leaves too many gaps for an agent to use it confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not mention latitude or longitude at all. The parameters are only defined by type and default, with no explanation of their meaning or how they affect the result. The description completely fails to compensate for the lack of schema documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: returning minutes until the next prayer plus a human-readable countdown string, with an example. This distinguishes it from siblings like get_next_prayer (which likely returns the prayer time) and get_prayer_times, though it does not explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus siblings. The description merely states what it returns, leaving the agent to infer usage context. There is no mention of exclusions, prerequisites, or alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_voluntary_fasting_datesA
Return all recommended voluntary fasting days in a given Gregorian month: Mondays/Thursdays, Ayyam al-Beed, Day of Arafah, 6 days of Shawwal.
| Name | Required | Description | Default |
|---|---|---|---|
| gregorian_year | Yes | ||
| gregorian_month | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must fully disclose behavior. It states what is returned (a list of voluntary fasting days) and the categories included, but does not mention how Gregorian-to-Hijri conversion is handled, potential conflicts with forbidden fasting days (e.g., Eid), or whether the dates follow local sightings. The description is transparent about content but not about edge cases or output format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that gets straight to the point. It front-loads the main action and lists the specific fasting categories, with no redundant words or fluff. Every word adds value, and the semicolon-style listing improves readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description leaves out critical context: the expected return format (e.g., array of date strings), whether dates are in Gregorian or Islamic calendar, and how the year/month inputs are used together. For a calendar tool relying on Hijri conversion, this is essential information. The description also doesn't address edge cases like months with no such days or overlapping fasts. It is not complete enough for an agent to know what to do with the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, but it only mentions 'Gregorian month' and omits explicit clarification of the year parameter. The parameter names in the schema are self-explanatory, but the description's phrasing 'in a given Gregorian month' doesn't explain that the year is required to compute the correct Hijri dates. No range or format guidance is provided, leaving ambiguity about the role of gregorian_year.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: returning all recommended voluntary fasting days in a given Gregorian month. It lists specific categories (Mondays/Thursdays, Ayyam al-Beed, Day of Arafah, 6 days of Shawwal), which distinguishes it from siblings like get_ramadan_dates or get_eid_dates. The verb 'Return' and resource 'recommended voluntary fasting days' are precise.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for voluntary fasting days but does not explicitly state when to prefer this over alternatives like get_islamic_events or get_ramadan_dates. There is no when-not-to-use guidance or mention of alternative tools for other Islamic dates. The distinction is clear from the name and content, but the description lacks explicit exclusions or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_calculation_methodsA
List all 10 supported prayer time calculation methods with their Fajr/Isha angles.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It specifies that exactly 10 methods are supported and that each includes Fajr/Isha angles, which covers the key behavior. As a simple read-only listing, no side effects or additional context are needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that states the action, the resource, and the specific details. Every word earns its place with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a simple zero-parameter listing tool with no output schema or annotations. The description fully covers what the tool returns (all 10 methods with their angles), which is sufficient for an agent to select and invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the description need not explain parameter semantics. The baseline of 4 is appropriate given the empty schema and the description's clarity about the tool's output.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('List'), the resource ('supported prayer time calculation methods'), and the specific content ('with their Fajr/Isha angles'). This distinguishes it from sibling tools like get_prayer_times, which retrieve actual prayer times rather than listing methods.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by stating what it does, but it does not explicitly say when to use this tool versus alternatives (e.g., to select a method for get_prayer_times). The context is clear, but there is no direct guidance on when to choose this over siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_dua_topicsA
List all available du'a topic slugs that can be used with get_dua_by_topic.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full behavioral burden. It adds context by stating the listing is 'all available' and that the slugs are intended for get_dua_by_topic. However, it does not disclose potential concerns such as pagination, ordering, or rate limits. The description does not mislead but lacks depth for an unannotated tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence of 13 words, front-loaded with the verb 'List'. It immediately states the resource and its purpose, with no extraneous words or repetition of schema information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool with no output schema, the description sufficiently explains the return value: available topic slugs for use with get_dua_by_topic. It also implies the output type (slugs). It could state whether the list is sorted, but 'all available' covers exhaustiveness, making this sufficiently complete for a simple listing tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the input schema already reflects this (100% coverage). The description adds no parameter-level detail because none exist, so the baseline score of 3 applies; no further information is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'List' with a clear resource ('all available du'a topic slugs') and explicitly states the downstream use with get_dua_by_topic. This distinguishes it from sibling tools like search_dua or get_dua_by_topic, which have different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies when to use this tool: when an agent needs to know valid topic slugs for get_dua_by_topic. It does not explicitly mention alternatives or exclusions, but the intended context is unambiguous given the phrase 'can be used with get_dua_by_topic'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_asma_ul_husnaA
Search the 99 Names of Allah by meaning, transliteration, or Arabic text.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of disclosing behavior. It only mentions the searchable fields but does not explain return format, result count, or confirm read-only nature. This leaves significant ambiguity for an agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, compact sentence that immediately states the action and scope. Every word earns its place with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description is too minimal to be complete. It fails to specify what the tool returns (e.g., a list of matches, a single name, or no match) or any pagination/ordering behavior. For a simple search tool, more context is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides no description for the 'query' parameter (0% coverage), so the description is the sole source of semantics. It effectively explains that the query can be a meaning, transliteration, or Arabic text, adding meaningful context beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Search the 99 Names of Allah' with explicit search fields (meaning, transliteration, Arabic text). This distinguishes it from sibling tools like get_asma_ul_husna (likely lists all names) and get_name_of_allah (likely returns a specific name).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is used when you have a query to search for a name by one of the three specified fields, but it does not explicitly state when to prefer this over alternatives or mention any exclusions. Usage context is clear but not fully explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_duaA
Search across all du'a and adhkar by Arabic text, transliteration, translation, or topic. Returns matched entries with which fields matched.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that the tool returns 'matched entries with which fields matched', giving insight into the return format. However, it doesn't explain matching behavior like substring vs. exact match or how results are ordered, though these are not critical for a basic search.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the resource and action, and no redundant words. The second sentence adds return-value detail without fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple two-parameter schema and no output schema, the description covers the core functionality and return info. It lacks explicit mention of limit semantics and result ordering, but for a search tool of this complexity, it's reasonably complete. The context signals show no nested objects, so additional parameter complexity isn't hidden.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains the semantic scope of the query parameter by listing searchable fields (Arabic text, transliteration, translation, topic). The limit parameter is not mentioned, but its purpose is somewhat self-evident from the schema's default value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states 'Search across all du'a and adhkar by Arabic text, transliteration, translation, or topic' which clearly identifies the tool as a cross-collection search with specific searchable fields. This distinguishes it from siblings like get_morning_adhkar, get_dua_by_topic, and search_asma_ul_husna.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage through the verb 'search' and the scope 'across all', but it does not explicitly state when to use this tool over alternatives like get_dua_by_topic. No exclusions or alternative references are provided, so the usage guidance is only implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_iqama_offsetA
Update the Iqama offset (minutes after adhan) for a prayer. Change is in-memory only and resets on server restart.
| Name | Required | Description | Default |
|---|---|---|---|
| prayer | Yes | ||
| offset_minutes | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the critical non-persistence trait ('in-memory only and resets on server restart'), which goes beyond the schema and is essential for an agent deciding whether to rely on the change. It does not mention auth or error behavior, but for a simple setter this is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One tightly written sentence plus a second sentence for the key behavioral caveat; no filler or repetition. Excellent structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter setter, the description covers the action, the offset meaning, and the ephemerality. However, the prayer parameter is left completely unspecified (no enum, no example), which an agent needs for correct invocation. This gap prevents a top completeness score.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must carry the semantics. It explains that offset_minutes is a duration in minutes after adhan, which is meaningful, but it does not enumerate acceptable prayer string values or their format. This partial compensation justifies an average score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action ('Update') on a specific resource ('Iqama offset') and defines the offset as 'minutes after adhan' for a prayer. This distinguishes it from the read-only sibling tools like get_iqama_time and get_prayer_times.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The verb 'Update' and the resource scope 'for a prayer' imply the tool is for changing a prayer's iqama offset, but there is no explicit guidance on when to use this versus reading via get_iqama_time, nor any exclusions or prerequisites. The context is reasonably clear but not explicitly differentiated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
34 tool updates
v0.1.0- First observed
calculate_fasting_times - First observed
calculate_gold_nisab - First observed
calculate_inheritance_basic - First observed
calculate_silver_nisab - First observed
calculate_zakat - First observed
convert_gregorian_to_hijri - First observed
convert_hijri_to_gregorian - First observed
get_asma_ul_husna - First observed
get_azan_text - First observed
get_counter_recommendation - First observed
get_daily_azan_schedule - First observed
get_dua_by_topic - First observed
get_eid_dates - First observed
get_evening_adhkar - First observed
get_hijri_date - First observed
get_iqama_time - First observed
get_islamic_events - First observed
get_monthly_prayer_calendar - First observed
get_morning_adhkar - First observed
get_name_of_allah - First observed
get_next_prayer - First observed
get_prayer_dua - First observed
get_prayer_times - First observed
get_qibla_direction - First observed
get_ramadan_dates - First observed
get_server_info - First observed
get_sunnah_prayer_times - First observed
get_time_until_next_prayer - First observed
get_voluntary_fasting_dates - First observed
list_calculation_methods - First observed
list_dua_topics - First observed
search_asma_ul_husna - First observed
search_dua - First observed
set_iqama_offset
TDQS
Multiple tools have unclear boundaries: get_hijri_date and convert_gregorian_to_hijri do nearly the same thing, get_daily_azan_schedule overlaps with get_prayer_times and get_iqama_time, and get_islamic_events overlaps with get_ramadan_dates/get_eid_dates. Agents may struggle to pick the right tool despite descriptions.
Most tools follow a consistent verb_noun pattern (get_, calculate_, convert_, list_, search_, set_). Minor deviations like get_name_of_allah vs. get_asma_ul_husna and the vague get_counter_recommendation prevent a perfect score.
34 tools is well above the 25+ threshold for 'too many'. While the domain is broad (prayer times, adhkar, dua, zakat, inheritance, etc.), this would be better split into focused servers to reduce cognitive load and selection errors.
The tool surface covers an impressively wide range of Islamic utilities: prayer times, qibla, azan, adhkar, dua, hijri calendar, zakat, inheritance, and names of Allah. Minor gaps remain, such as no config setters for location or calculation method beyond iqama offset, and no Zakat al-Fitr calculation.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Quran MCP server for translation, tafsir, mutashabihat, recitation playlists, and prayer times.
Islamic prayer times & calendar MCP (Aladhan API). Keyless.
Production-ready Muslim prayer reminder MCP with astronomical precision and theological disclosure.
This MCP server provides seamless access to Malaysia's government open data, including datasets, w…
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceAn MCP server that provides access to Malaysia prayer time data through Claude Desktop, enabling users to retrieve prayer times for specific zones, list available prayer zones, and check current prayer time status.MIT
- AlicenseAqualityDmaintenanceA comprehensive MCP server for calculating Jewish prayer times (zmanim) using the python-zmanim library, supporting multiple halachic opinions and global locations.61MIT
- AlicenseBqualityDmaintenanceAzan-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.34383MIT
- AlicenseAqualityAmaintenanceMCP server providing Malaysian/global prayer times (JAKIM + Aladhan fallback), nearest mosque/surau finder, and Islamic calendar events.41MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/bartest5/ahmedeltaher_azan-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server