Tarteel MCP Server
Server Details
Quran MCP server for translation, tafsir, mutashabihat, recitation playlists, and prayer times.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
Glama MCP Gateway
Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.
Full call logging
Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.
Tool access control
Enable or disable individual tools per connector, so you decide what your agents can and cannot do.
Managed credentials
Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.
Usage analytics
See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.
Tool Definition Quality
Average 4.7/5 across 16 of 16 tools scored.
Each tool has a clearly distinct purpose, especially with the clear separation between DEFAULT widget tools and their INTERNAL text-only counterparts. The descriptions provide explicit guidance on when to use each, virtually eliminating ambiguity.
Most tools follow a consistent 'action_object' pattern in snake_case. However, there is a slight inconsistency between 'ayah_search' (DEFAULT) and 'search_ayahs_text' (internal), where the order flips. Overall, still very readable and predictable.
16 tools is reasonable for a Quranic MCP server covering search, tafsir, translation, recitation, prayer times, and mutashabihat. The paired widget/internal tools double the count but each serves a unique purpose, so the scope feels appropriate.
The surface covers all major Quran-related operations: search, tafsir, translation, listening, and prayer times. A minor gap is the lack of a direct tool to fetch the plain Arabic text of an ayah without using search or translation.
Available Tools
16 toolsayah_mutashabihatRepeated phrases in an ayahARead-onlyInspect
Show repeated phrase metadata for one ayah with an interactive display. Use this when: the user asks which phrases in a specific ayah repeat elsewhere; the user needs phrase IDs and counts before calling phrase_mutashabihat.
| Name | Required | Description | Default |
|---|---|---|---|
| ayah | Yes | Ayah number within the selected surah. | |
| surah | Yes | Surah number from 1 to 114. | |
| same_surah_only | No | When true, only include repeated phrase matches found in the same surah as the input ayah. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| phrases | Yes | |
| ayah_key | No | |
| surah_id | No | |
| ayah_words | No | |
| phrase_ids | Yes | |
| surah_name | No | |
| ayah_number | No | |
| errorMessage | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, covering safety and scope. The description adds valuable context about the 'interactive display' behavior and the tool's role in a workflow (preparing for phrase_mutashabihat), which goes beyond what annotations provide. 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 perfectly concise and well-structured. It uses two sentences: the first states the purpose, and the second provides clear usage guidelines. Every word earns its place with no redundancy or unnecessary 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 moderate complexity, rich annotations (readOnlyHint, destructiveHint, openWorldHint), 100% schema coverage, and existence of an output schema, the description is complete. It explains the tool's purpose, usage context, and workflow role without needing to detail parameters or return values, which are covered elsewhere.
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 100%, with all parameters well-documented in the schema. The description doesn't add any additional parameter semantics beyond what's in the schema, but it doesn't need to since the schema is comprehensive. Baseline 3 is appropriate when schema coverage is complete.
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: 'Show repeated phrase metadata for one ayah with an interactive display.' It specifies the exact resource (ayah) and action (show repeated phrase metadata), and distinguishes it from sibling tools like phrase_mutashabihat by focusing on a single ayah rather than phrase-level analysis.
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 provides usage guidelines: 'Use this when: the user asks which phrases in a specific ayah repeat elsewhere; the user needs phrase IDs and counts before calling phrase_mutashabihat.' This gives clear scenarios for when to use this tool versus alternatives, including a specific sibling tool reference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ayah_searchSearch the Quran by Arabic textARead-onlyInspect
DEFAULT tool for user-facing Quran search. Use this for ANY user-facing search — 'find ayahs that contain X', 'where does X appear in the Quran', 'search the Quran for X', or similar. This is the FINAL tool call for these requests; do not follow it with search_ayahs_text. Shows matches in an interactive widget the user can browse. Query is Arabic script only (diacritics and punctuation are ignored). A numeric-only query matches ayahs by that ordinal number (for example '255' returns ayahs ending in ':255'). ONLY skip this widget and use search_ayahs_text when EITHER (a) the user explicitly asks for plain text / raw results, OR (b) the results will be fed into another tool in the same turn without being shown. When in doubt, use this widget.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query in Arabic script. Diacritics and punctuation are stripped automatically; matching is diacritic-insensitive and ranked by BM25 relevance. Numeric fragments (e.g. '255') match ayahs with that ordinal number. | |
| max_results | No | Maximum number of ayah results to return (1-100, default 20). |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| query | Yes | |
| results | Yes | |
| errorMessage | No | |
| total_results | Yes | |
| strategy_summary | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. Description adds valuable behavioral context: shows matches in an interactive widget, query is Arabic script only with diacritics ignored, numeric-only query matches by ordinal number, and it is the final tool call for these requests.
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?
Front-loaded with purpose and usage guidelines; every sentence adds value. Slightly verbose but still efficient for the amount of information conveyed.
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 (search with widget, multiple siblings, 2 params, output schema present), the description covers all key aspects: usage scenarios, query behavior, output format (widget), exclusions, and finality of the call.
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 100% with descriptions for both parameters. Description adds meaning beyond schema: explains Arabic script requirement, diacritic handling, numeric query behavior (ordinal matching), and the BM25 relevance ranking for query 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?
Description clearly states it's the default tool for user-facing Quran search, provides examples ('find ayahs that contain X'), and explicitly distinguishes from sibling search_ayahs_text by stating when each should be used.
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?
Explicitly states when to use (ANY user-facing search) and when not to use (when plain text/raw results are requested or results will be fed into another tool). Names the alternative (search_ayahs_text) and provides clear 'when in doubt' guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ayah_tafsirQuran tafsirARead-onlyInspect
DEFAULT tool for user-facing tafsir display. Use this for ANY user-facing request to show/see tafsir commentary on a Quran ayah — including 'show me the tafsir of…', 'what does Ibn Kathir say about…', 'explain this ayah'. This is the FINAL tool call for these requests; do not follow it with get_tafsir_text. ONLY skip this widget and use get_tafsir_text when EITHER (a) the user explicitly asks for plain text / raw text / text-only output, OR (b) the result will be piped into another tool in the same turn without being shown to the user. When in doubt, use this widget. SLUG HANDLING: If the user names a specific tafsir (e.g. 'Ibn Kathir', 'Mokhtasar', 'Maarif-ul-Quran', 'Tazkirul Quran'), ALWAYS call lookup_tafsirs first to resolve the exact slug — do not guess the slug from the name. Guessed slugs fail validation. If the user only specifies a language ('English tafsir', 'Arabic tafsir'), you may pass 'languages' without a slug. Each query must include at least one of languages or tafsir_slugs. Use ayah keys in 'surah:ayah' format (for example '2:255'). Limits: max 20 queries per request and max 50 total ayah+tafsir items.
| Name | Required | Description | Default |
|---|---|---|---|
| queries | Yes | Tafsir queries. Each query defines an ayah range plus tafsir slugs or languages. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ayahs | Yes | |
| error | No | |
| total_ayahs | Yes | |
| errorMessage | No | |
| tafsir_languages | Yes | |
| tafsir_slugs_used | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnlyHint=true, destructiveHint=false), the description adds critical behavioral details: limits (max 20 queries, 50 items), slug resolution requirement, ayah key format, and the constraint that each query must include languages or tafsir_slugs. No contradictions with annotations.
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?
Well-structured and front-loaded. First sentence states purpose; subsequent sentences provide usage rules, slug handling, and limits. Every sentence adds value with no repetition 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?
Given the complexity of tafsir selection, the description covers all essential aspects: purpose, usage guidelines, slug resolution, parameter constraints, limits. Output schema exists, so return values are covered elsewhere. Complete for agent decision-making.
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 100%, so baseline is 3. However, the description adds value beyond the schema by explaining when to omit fields (e.g., 'languages' or 'tafsir_slugs' can be omitted but at least one required), format examples, and slug handling logic. Adds a necessary constraint not in 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 it is for user-facing tafsir display, with specific verb-resource combinations like 'show/see tafsir commentary'. It distinguishes itself from sibling 'get_tafsir_text' by specifying when to use each tool.
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?
Provides explicit guidance: use for ANY user-facing request, skip only for plain text or piping. Also includes slug handling instructions: call lookup_tafsirs first, do not guess slugs. Explicit alternatives given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ayah_translationQuran translationsARead-onlyInspect
DEFAULT tool for user-facing translation display. Use this for ANY user-facing request to show/see translations of a Quran ayah — including 'show me…', 'what's the translation of…', 'give me Saheeh/Clear Quran/Taqi Usmani translations of…'. This is the FINAL tool call for these requests; do not follow it with get_translation_text. ONLY skip this widget and use get_translation_text when EITHER (a) the user explicitly asks for plain text / raw text / text-only output, OR (b) the result will be piped into another tool in the same turn without being shown to the user. When in doubt, use this widget. SLUG HANDLING: If the user names a specific translator (e.g. 'Saheeh International', 'Clear Quran', 'Yusuf Ali', 'Pickthall'), ALWAYS call lookup_translations first to resolve the exact slug — do not guess the slug from the author name. Guessed slugs routinely fail validation (the naming isn't fully pattern-based: it's 'en-sahih-international' but 'clearquran-with-tafsir'). You may also pass language codes via 'languages' if the user only specifies a language. Each query must include at least one of languages or translations. Use ayah keys in 'surah:ayah' format (for example '2:255'). In queries[].languages use ISO 639-1 codes (for example 'en', 'ur'), not language names. Do not use 'ar'; Arabic translation is unsupported in this tool.
| Name | Required | Description | Default |
|---|---|---|---|
| queries | Yes | Translation queries. Each query defines an ayah range plus languages or slugs. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ayahs | Yes | |
| error | No | |
| total_ayahs | Yes | |
| errorMessage | No | |
| languages_used | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond readOnlyHint and destructiveHint annotations, the description discloses that Arabic is unsupported, that guessed slugs fail validation, and that this widget is for display only. Adds significant 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?
Description is dense with valuable information but somewhat long. However, it is well-structured with clear sections (DEFAULT, SLUG HANDLING) and front-loaded with the most critical use case.
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, schema richness, and sibling tools, the description is thorough. It covers when to use, formatting details, common pitfalls, and exclusions, making it complete for safe 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?
Despite 100% schema coverage, the description adds crucial meaning: explains slug format (with examples), ISO 639-1 codes, ayah key format, and the requirement for at least one of languages/translations. Greatly enhances param understanding.
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?
Clearly states it is the DEFAULT tool for user-facing translation display, distinguishes from get_translation_text, and specifies the resource (Quran translations) and action (show/display).
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?
Explicitly states when to use vs get_translation_text, rules for slug handling (use lookup_translations), language code format, and ayah key format. Provides clear decision criteria and exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tafsir_textQuran tafsir (data only)ARead-onlyInspect
INTERNAL/preparatory tool — text-only, no widget rendered. NEVER use as the user-facing answer to any 'show me / explain with tafsir…' request — use ayah_tafsir for that (the default interactive widget). Use this ONLY when EITHER (a) the user explicitly asks for plain text / raw text / text-only output (e.g. 'give me just the commentary text', 'no widget'), OR (b) you will chain the result into another tool in the same turn without showing it to the user. When in doubt, prefer ayah_tafsir. Do not follow ayah_tafsir with this tool — that is duplicated work. Each query must include at least one of languages or tafsir_slugs. Use ayah keys in 'surah:ayah' format (for example '2:255'). Limits: max 20 queries per request and max 50 total ayah+tafsir items.
| Name | Required | Description | Default |
|---|---|---|---|
| queries | Yes | Tafsir queries. Each query defines an ayah range plus tafsir slugs or languages. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is clear. The description adds behavioral context: 'text-only, no widget rendered', 'INTERNAL/preparatory tool', and that it returns data suitable for chaining. No contradictions. Adds value beyond annotations.
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 moderately long but well-structured, front-loading the critical warning. Each sentence serves a purpose, though some minor redundancy could be reduced. Overall efficient for the amount of guidance provided.
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 nested parameters, the description covers usage constraints, input format, limits, alternatives, and chaining behavior. It is complete enough for an agent to correctly select and invoke the tool without 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 has 100% description coverage, so baseline is 3. The description adds context beyond the schema: it explains the 'surah:ayah' format with example '2:255', specifies limits (max 20 queries, max 50 items), and clarifies that each query must include at least one of languages or tafsir_slugs. This adds meaningful guidance.
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 it is an internal/preparatory text-only tool, distinguishes from ayah_tafsir, and specifies it should not be used as a user-facing answer. The verb 'get' combined with 'text' and the explicit exclusion of widget rendering makes the purpose 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 provides explicit when-to-use (plain text request or chaining) and when-not-to-use (user-facing tafsir requests, duplicating ayah_tafsir). It names the alternative tool (ayah_tafsir) and warns against redundant chaining. Excellent guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_translation_textQuran translations (data only)ARead-onlyInspect
INTERNAL/preparatory tool — text-only, no widget rendered. NEVER use as the user-facing answer to any 'show me / what's the translation of…' request — use ayah_translation for that (the default interactive widget). Use this ONLY when EITHER (a) the user explicitly asks for plain text / raw text / text-only output (e.g. 'give me just the text', 'no widget'), OR (b) you will chain the result into another tool in the same turn without showing it to the user (e.g. summarize then call play_ayahs). When in doubt, prefer ayah_translation. Do not follow ayah_translation with this tool — that is duplicated work. Each query must include at least one of languages or translations. Use ayah keys in 'surah:ayah' format (for example '2:255'). In queries[].languages use ISO 639-1 codes (for example 'en', 'ur'), not language names. Do not use 'ar'; Arabic translation is unsupported in this tool.
| Name | Required | Description | Default |
|---|---|---|---|
| queries | Yes | Translation queries. Each query defines an ayah range plus languages or slugs. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true (safe read). Description adds key context: no widget rendered, internal/preparatory nature, and input format rules (surah:ayah, ISO codes). Does not contradict annotations and provides behavioral insight beyond annotations.
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 front-loaded with key purpose and usage rules. Every sentence adds value, but the text is somewhat lengthy. Could be slightly more concise while retaining all 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 complex input schema (nested array with 4 subfields), no output schema, and 17 sibling tools, the description is highly complete. It covers the tool's role, input constraints, ordering relative to siblings, and when to avoid. No essential context 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?
Schema coverage is 100% with descriptions for all parameters. Description adds meaning: ayah key format example '2:255', ISO 639-1 requirement, prohibition of Arabic, and that each query must include at least one of languages or translations. This clarifies usage beyond 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 retrieves translation text as plain text, no widget. It distinguishes from the sibling ayah_translation by specifying it's internal/preparatory and not user-facing. The verb 'get' and resource 'translation text' are specific and 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?
Explicitly states when to use: user asks for plain text or chaining without showing. Explicitly states when not to use: never as user-facing answer, prefer ayah_translation for default, avoid Arabic. Names alternative ayah_translation and warns against duplicated work.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_recitersBrowse Quran recitersARead-onlyInspect
DEFAULT tool for user-facing reciter-listing questions. Use this for ANY user-facing query like 'what reciters are available', 'who can recite for me', 'list Quran reciters'. This is the FINAL tool call for these requests; do not follow it with lookup_reciters. Shows the catalog in an interactive widget the user can browse. ONLY use lookup_reciters instead when EITHER (a) the user explicitly asks for plain text / raw data, OR (b) you will pipe the result into another tool (e.g. play_ayahs) in the same turn without showing the list. When in doubt, use this widget.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| reciters | Yes | |
| totalCount | Yes | |
| errorMessage | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint, openWorldHint. Description adds that this tool shows an interactive widget and is the FINAL call for these requests (no follow-up with lookup_reciters). This adds behavioral insight beyond annotations.
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 somewhat verbose but every sentence adds value. It front-loads the primary purpose and usage constraints. Could potentially be tightened slightly, but still effective.
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 zero parameters, presence of annotations, and an output schema (not detailed but known to exist), the description fully covers what the tool does and when to use it vs. alternatives. No gaps remain.
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?
No parameters exist, so the baseline is 4. The description does not need to explain parameters; it instead focuses on behavioral context. With 100% schema coverage (no parameters), it adds sufficient meaning.
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 it is the DEFAULT tool for user-facing reciter-listing questions, using specific verb 'Browse' and resource 'Quran reciters'. It distinguishes itself from the sibling tool 'lookup_reciters' by explaining that this tool shows an interactive widget.
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?
Explicitly tells when to use ('what reciters are available', 'who can recite for me') and when NOT to use (when user wants plain text or pipe to another tool). Names the alternative tool 'lookup_reciters' and gives a clear rule: 'When in doubt, use this widget.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_tafsirsBrowse tafsir collectionsARead-onlyInspect
DEFAULT tool for user-facing tafsir-listing questions. Use this for ANY user-facing query like 'what tafsirs are supported', 'list English tafsirs', 'which tafsir collections do you have'. This is the FINAL tool call for these requests; do not follow it with lookup_tafsirs. Shows the catalog in an interactive widget the user can browse. ONLY use lookup_tafsirs instead when EITHER (a) the user explicitly asks for plain text / raw data, OR (b) you will pipe the result into ayah_tafsir in the same turn without showing the list. When in doubt, use this widget.
| Name | Required | Description | Default |
|---|---|---|---|
| languages | No | Optional ISO 639-1 language code filters (for example ['en', 'ar']). |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| tafsirs | Yes | |
| totalCount | Yes | |
| errorMessage | No | |
| languagesFilter | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds minimal extra beyond stating it shows an interactive widget, but does not elaborate on behavior like return format, pagination, or performance. No contradiction with annotations.
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 paragraph. Every sentence provides essential guidance (default nature, usage rules, alternative distinction). 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 simple listing tool with one optional parameter, annotations covering safety, and an output schema present, the description covers purpose, usage, and alternatives completely. No 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 provides 100% coverage for the single optional parameter, including a description and example. The tool description adds no additional meaning beyond what is already in 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 is for browsing tafsir collections for user-facing queries, with a specific verb ('browse', 'list') and distinguishes it from the sibling tool lookup_tafsirs.
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?
Explicitly specifies when to use this tool (user-facing queries, final call) and when to use the alternative lookup_tafsirs (plain text or piping), with 'when in doubt, use this widget'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_translationsBrowse Quran translationsARead-onlyInspect
DEFAULT tool for user-facing translation-listing questions. Use this for ANY user-facing query like 'what English translations are available', 'list French translations', 'which translators can I choose from'. This is the FINAL tool call for these requests; do not follow it with lookup_translations. Shows the catalog in an interactive widget the user can browse. Use ISO 639-1 codes like 'en', not names like 'english'. ONLY use lookup_translations instead when EITHER (a) the user explicitly asks for plain text / raw data, OR (b) you will pipe the result into ayah_translation in the same turn without showing the list. When in doubt, use this widget. Returned language_name values are display labels. Rows without usable slugs are filtered out.
| Name | Required | Description | Default |
|---|---|---|---|
| locale | No | Optional locale/language code for response localization (for example 'en' or 'ar'). | |
| language | No | Optional ISO 639-1 language code filter (for example 'en'). Do not pass language names like 'english'. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| totalCount | Yes | |
| errorMessage | No | |
| translations | Yes | |
| languageFilter | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes beyond annotations: discloses interactive widget, filters rows without slugs, notes language_name as display labels. No contradiction with annotations.
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?
Front-loaded with purpose and usage, but somewhat lengthy. Every sentence adds value; minor trimming possible but justified by richness.
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 sibling tools and annotations, description fully covers selection criteria and behavior. Output schema exists, so return details not 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?
Schema coverage is 100%, baseline 3. Description adds value by emphasizing ISO 639-1 codes for the language parameter, but locale parameter is already well-described in 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?
Clearly states it is the default tool for user-facing translation-listing questions, with examples. Distinct from lookup_translations and explicitly marks it as the final call.
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?
Provides explicit when-to-use (user-facing queries), when-not-to-use (plain text or piped), and alternatives (lookup_translations). Also specifies ISO 639-1 codes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lookup_recitersBrowse Quran reciters (data only)ARead-onlyInspect
INTERNAL/preparatory tool — text-only, no widget rendered. NEVER use as the user-facing answer to a 'what reciters are available' question — use list_reciters for that (the default interactive widget). Use this ONLY when EITHER (a) the user explicitly asks for plain text / raw data / no widget, OR (b) you will chain the result into play_ayahs in the same turn without showing the raw list (e.g. user asks to play audio by a named reciter; call this to resolve reciter_id, then call play_ayahs). When in doubt, prefer list_reciters.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and destructiveHint=false, so the agent knows it's a safe read operation. The description adds that it's text-only, no widget, and internal/preparatory, which provides useful behavioral context beyond the annotations. No contradictions.
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 three sentences, front-loaded with the most critical information (internal, text-only, no widget). Every sentence adds value, and there is no redundancy or fluff. 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 zero-parameter tool with no output schema, the description fully covers what the tool does, its context of use, and its relationship to sibling tools. It is complete and leaves no gaps for the agent.
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 schema description coverage is 100% by default. The description does not add parameter information, which is unnecessary. With 0 parameters, a baseline of 4 is appropriate.
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 'Browse Quran reciters (data only)' and specifies it's an internal/preparatory tool that returns plain text without a widget. It distinguishes itself from list_reciters, which is the interactive widget for user-facing answers. Purpose is specific and 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 explicitly tells when to use (when plain text is requested or chaining to play_ayahs without showing raw data) and when not to use (prefer list_reciters for user-facing answers). It names the alternative tool (list_reciters) and provides clear decision criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lookup_tafsirsBrowse tafsir collections (data only)ARead-onlyInspect
INTERNAL/preparatory tool — text-only, no widget rendered. NEVER use as the user-facing answer to a 'what tafsirs are supported' question — use list_tafsirs for that (the default interactive widget). Use this ONLY when EITHER (a) the user explicitly asks for plain text / raw data / no widget, OR (b) you will chain the result into ayah_tafsir in the same turn without showing the raw list (e.g. resolve a named tafsir to its slug, then call ayah_tafsir). When in doubt, prefer list_tafsirs.
| Name | Required | Description | Default |
|---|---|---|---|
| languages | No | Optional ISO 639-1 language code filters (for example ['en', 'ar']). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and destructiveHint=false. Description adds that it is text-only, no widget, and internal/preparatory, which provides additional behavioral context beyond the annotations.
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 and front-loaded with key distinctions. However, it could be slightly shorter by merging the two sentences.
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 tool (one optional parameter, read-only, no output schema), the description fully covers its purpose, usage, and limitations in the context of sibling tools.
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 100% (the 'languages' parameter is documented in the schema). The description does not add extra meaning about the parameter, so baseline 3 is appropriate.
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 it is an internal/preparatory tool for browsing tafsir collections in text-only mode, and explicitly distinguishes it from list_tafsirs, which is the user-facing widget.
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?
Explicit usage guidance: never use as direct answer to user, use only when plain text requested or when chaining to ayah_tafsir, and default to list_tafsirs when in doubt.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lookup_translationsBrowse Quran translations (data only)ARead-onlyInspect
INTERNAL/preparatory tool — text-only, no widget rendered. NEVER use as the user-facing answer to a 'what translations are available' question — use list_translations for that (the default interactive widget). Use this ONLY when EITHER (a) the user explicitly asks for plain text / raw data / no widget, OR (b) you will chain the result into ayah_translation in the same turn without showing the raw list (e.g. resolve a named translator to the correct slug, then call ayah_translation). When in doubt, prefer list_translations. Use ISO 639-1 codes like 'en', not names like 'english'.
| Name | Required | Description | Default |
|---|---|---|---|
| locale | No | Optional locale/language code for response localization (for example 'en' or 'ar'). | |
| language | No | Optional ISO 639-1 language code filter (for example 'en'). Do not pass language names like 'english'. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true and destructiveHint=false; the description adds that the tool is internal/preparatory, returns text-only results with no widget. This context about the internal nature and non-interactive behavior goes beyond what annotations capture, though additional details like rate limits or authorization are not needed for this simple 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 a single, well-structured paragraph that front-loads the key purpose ('INTERNAL/preparatory tool — text-only') and then provides usage rules. It contains no unnecessary words, but the density of information could be slightly improved with bullet points for 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 the tool's simplicity (2 optional parameters, no output schema) and the rich context from annotations and sibling tools, the description completely covers what an agent needs to know: when to use it vs alternatives, the data-only nature, and proper parameter usage. No gaps remain.
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 covers both parameters with descriptions (100% coverage). The description reinforces the correct usage of language codes ('ISO 639-1 codes like 'en', not names like 'english''), adding practical guidance beyond the schema's basic description. This clarifies the expected format for the language 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 browses Quran translations as text-only data, explicitly distinguishing itself from the interactive widget sibling list_translations. The verb 'browse' and resource 'translations (data only)' are specific, and the scope is well-defined.
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?
Explicitly states when NOT to use (as user-facing answer) and when TO use: plain text requests or chaining into ayah_translation. Also provides a default recommendation ('when in doubt, prefer list_translations'). This provides clear decision guidance for the AI agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
phrase_mutashabihatWhere a phrase appears in the QuranARead-onlyInspect
Show phrase mutashabihat occurrences with an interactive display. Use this when: the user provides phrase text and asks where it appears; the user has a phrase_id (for example from ayah_mutashabihat) and wants all matches.
| Name | Required | Description | Default |
|---|---|---|---|
| phrase_id | No | Mutashabihat phrase ID. Provide phrase_id or phrase_text, but not both. | |
| phrase_text | No | Arabic phrase text to search for. Provide phrase_text or phrase_id, but not both. | |
| same_surah_only | No | When true, only include occurrences from the same surah as each matched ayah. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ayahs | No | |
| count | No | |
| error | No | |
| found | Yes | |
| match | No | |
| source | No | |
| surahs | No | |
| phrase_id | No | |
| occurrences | Yes | |
| phrase_text | No | |
| errorMessage | No | |
| closest_match | No | |
| not_found_reason | No | |
| not_found_message | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds valuable behavioral context beyond what annotations provide. While annotations already declare readOnlyHint=true, openWorldHint=false, and destructiveHint=false, the description reveals this is an interactive display tool (suggesting potential UI elements or pagination) and clarifies the relationship with ayah_mutashabihat for obtaining phrase_id. It doesn't contradict annotations but provides additional operational 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?
The description is perfectly concise and well-structured with two sentences: the first states the core functionality, and the second provides specific usage scenarios. Every word earns its place, with no redundancy or unnecessary elaboration, 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?
Given the tool's moderate complexity, comprehensive annotations (readOnly, non-destructive, closed-world), 100% schema coverage, and the presence of an output schema, the description provides exactly what's needed. It explains the purpose, usage context, and behavioral aspects without needing to cover technical details already documented elsewhere.
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 100% schema description coverage, the input schema already fully documents all three parameters, including their types, constraints, and the mutual exclusivity rule between phrase_id and phrase_text. The description doesn't add any parameter-specific information beyond what's in the schema, so it meets the baseline expectation without adding extra 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?
The description clearly states the tool's purpose with specific verbs ('Show phrase mutashabihat occurrences with an interactive display') and distinguishes it from siblings by focusing on phrase-level mutashabihat occurrences rather than ayah-level analysis or other Quranic functions. It explicitly identifies the resource (phrase mutashabihat occurrences) and the interactive nature of the display.
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 explicit usage guidelines with two clear scenarios: when the user provides phrase text and asks where it appears, and when the user has a phrase_id from ayah_mutashabihat and wants all matches. It names a specific sibling tool (ayah_mutashabihat) as a potential source for phrase_id, giving concrete context for when to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
play_ayahsPlay Quran audioARead-onlyInspect
Play Quranic ayah audio with an interactive player widget. Use this when: the user asks to play/listen to ayahs. RECITER HANDLING: If the user names a specific reciter (e.g. 'Husary', 'Minshawi', 'Al-Afasy', 'Abdul Basit'), ALWAYS call lookup_reciters first to resolve the exact reciter_id — do not guess the ID. Guessed IDs routinely point at the wrong reciter. If the user doesn't specify a reciter, omit reciter_id entirely so default_reciter_id applies. Use ayah keys in 'surah:ayah' format (for example '1:1'). In each query, reciter_id is optional and defaults to default_reciter_id if omitted. Limits: max 50 queries and max 200 total ayahs per request.
| Name | Required | Description | Default |
|---|---|---|---|
| queries | Yes | Audio playlist queries. Each query defines an ayah range and optional reciter. | |
| default_reciter_id | No | Default reciter ID used when a query omits reciter_id. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| items | Yes | |
| errors | No | |
| queries | No | |
| total_ayahs | No | |
| errorMessage | No | |
| unique_reciters | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, covering safety and scope. The description adds valuable behavioral context beyond annotations: the interactive player widget detail, the critical reciter resolution workflow (calling lookup_reciters), and specific limits (max 50 queries, max 200 total ayahs). No contradiction with annotations exists.
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 efficiently structured with clear sections (purpose, usage conditions, reciter handling, format example, defaults, limits). Every sentence serves a distinct purpose: the first states the core function, the second provides usage context, and subsequent sentences offer critical implementation details 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?
Given the tool's complexity (multiple queries with optional parameters), rich annotations, and the presence of an output schema, the description is complete. It covers purpose, usage guidelines, parameter semantics, behavioral limits, and integration with sibling tools (lookup_reciters). No gaps remain for effective agent 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?
With 100% schema description coverage, the baseline is 3. The description adds meaningful semantic context: it explains the 'surah:ayah' format with an example ('1:1'), clarifies reciter_id handling (defaults to default_reciter_id if omitted, with a resolution workflow), and mentions the max limits which aren't in the parameter descriptions. This provides practical usage guidance 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 specific action ('Play Quranic ayah audio with an interactive player widget') and distinguishes it from siblings like ayah_search, ayah_tafsir, or ayah_translation by focusing on audio playback rather than text retrieval or analysis. The verb+resource combination is precise and 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 provides explicit guidance on when to use this tool ('when the user asks to play/listen to ayahs') and detailed instructions on reciter handling, including when to call lookup_reciters first and when to omit reciter_id. It also distinguishes usage from text-based sibling tools by focusing on audio playback.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prayer_timesIslamic prayer timesARead-onlyInspect
Get Islamic prayer times for a city with an interactive timetable display. Use this when: the user asks for salah times in a location; the user asks to calculate times with a specific prayer method (for example ISNA or MWL).
| Name | Required | Description | Default |
|---|---|---|---|
| city | Yes | City name for prayer time calculation (for example 'Cairo'). | |
| method | No | Prayer time calculation method (for example 'ISNA', 'MWL', or 'Makkah'). | ISNA |
| country | No | Optional country name to disambiguate city lookup (for example 'Egypt'). |
Output Schema
| Name | Required | Description |
|---|---|---|
| city | No | |
| date | No | |
| error | No | |
| method | No | |
| country | No | |
| errorCode | No | |
| coordinates | No | |
| prayerTimes | No | |
| errorMessage | No | |
| prayerTimesRaw | No | |
| formattedAddress | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds valuable context beyond annotations: it mentions 'interactive timetable display' which suggests richer output than basic data, and specifies calculation methods. Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the description doesn't need to repeat safety aspects. 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 perfectly structured with two sentences: first states the core functionality, second provides explicit usage guidelines. Every word earns its place with zero redundancy, and the 'Use this when:' format makes guidelines immediately accessible.
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 moderate complexity, rich annotations (readOnlyHint, openWorldHint), 100% schema coverage, and existence of an output schema, the description provides complete contextual information. It covers purpose, usage scenarios, and behavioral context without needing to explain parameters or return values that are already documented elsewhere.
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 100% schema description coverage, the input schema already thoroughly documents all three parameters (city, method, country) with descriptions, enum values, defaults, and constraints. The description mentions 'specific prayer method (for example ISNA or MWL)' which aligns with but doesn't significantly expand upon the schema's method parameter 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 purpose with specific verbs ('Get Islamic prayer times') and resources ('for a city'), distinguishing it from sibling tools focused on Quranic content like ayah search, tafsir, or reciters. It explicitly mentions 'interactive timetable display' which adds unique functionality not implied by the name alone.
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 explicit usage guidelines with 'Use this when:' followed by two concrete scenarios: when users ask for prayer times in a location, and when they ask to calculate times with specific methods like ISNA or MWL. This clearly defines when to use this tool versus alternatives (though no explicit exclusions are needed given distinct sibling tools).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_ayahs_textSearch the Quran by Arabic text (data only)ARead-onlyInspect
INTERNAL/preparatory tool — text-only, no widget rendered. NEVER use as the user-facing answer to a search query — use ayah_search for that (the default interactive widget). Use this ONLY when EITHER (a) the user explicitly asks for plain text / raw results / no widget, OR (b) you will chain the resolved ayah keys into another tool in the same turn (play_ayahs, ayah_tafsir, or ayah_translation) without showing the raw search results to the user. When in doubt, prefer ayah_search. Do not follow ayah_search with this tool — that is duplicated work. Query is Arabic script only; diacritics and punctuation are ignored. A numeric-only query matches ayahs by that ordinal number.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query in Arabic script. Diacritics and punctuation are stripped automatically; matching is diacritic-insensitive and ranked by BM25 relevance. Numeric fragments (e.g. '255') match ayahs with that ordinal number. | |
| max_results | No | Maximum number of ayah results to return (1-100, default 20). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, non-destructive. Description adds diacritic-insensitive matching, BM25 ranking, and numeric query behavior, which are useful beyond annotations.
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?
Front-loaded with purpose and usage warnings. Every sentence adds unique value. No redundancy. Appropriate length 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, description explains it returns raw text and suggests chaining to other tools. All necessary context for correct usage is provided.
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 100%, baseline 3. Description adds meaning for 'query' (diacritic stripping, numeric matching) but 'max_results' only restates schema defaults. Overall adds some 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?
The description clearly states it's a text-only search tool for the Quran, distinguishing itself from ayah_search (the interactive widget). The verb 'search' and resource 'ayahs' are specific and 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?
Explicitly tells when to use (user asks for plain text, chaining) and when not to (user-facing answer, after ayah_search). Provides clear alternatives and exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Claim this connector by publishing a /.well-known/glama.json file on your server's domain with the following structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"maintainers": [{ "email": "your-email@example.com" }]
}The email address must match the email associated with your Glama account. Once published, Glama will automatically detect and verify the file within a few minutes.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!