Skip to main content
Glama

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.

MCP client
Glama
MCP server

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.

100% free. Your data is private.
Tool DescriptionsA

Average 4.7/5 across 16 of 16 tools scored.

Server CoherenceA
Disambiguation5/5

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.

Naming Consistency4/5

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.

Tool Count4/5

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.

Completeness4/5

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 tools
ayah_mutashabihatRepeated phrases in an ayahA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
ayahYesAyah number within the selected surah.
surahYesSurah number from 1 to 114.
same_surah_onlyNoWhen true, only include repeated phrase matches found in the same surah as the input ayah.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNo
phrasesYes
ayah_keyNo
surah_idNo
ayah_wordsNo
phrase_idsYes
surah_nameNo
ayah_numberNo
errorMessageNo
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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_tafsirQuran tafsirA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
queriesYesTafsir queries. Each query defines an ayah range plus tafsir slugs or languages.

Output Schema

ParametersJSON Schema
NameRequiredDescription
ayahsYes
errorNo
total_ayahsYes
errorMessageNo
tafsir_languagesYes
tafsir_slugs_usedYes
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 translationsA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
queriesYesTranslation queries. Each query defines an ayah range plus languages or slugs.

Output Schema

ParametersJSON Schema
NameRequiredDescription
ayahsYes
errorNo
total_ayahsYes
errorMessageNo
languages_usedYes
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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)A
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
queriesYesTafsir queries. Each query defines an ayah range plus tafsir slugs or languages.
Behavior4/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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)A
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
queriesYesTranslation queries. Each query defines an ayah range plus languages or slugs.
Behavior4/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 recitersA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNo
recitersYes
totalCountYes
errorMessageNo
Behavior4/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 collectionsA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
languagesNoOptional ISO 639-1 language code filters (for example ['en', 'ar']).

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNo
tafsirsYes
totalCountYes
errorMessageNo
languagesFilterNo
Behavior3/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 translationsA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
localeNoOptional locale/language code for response localization (for example 'en' or 'ar').
languageNoOptional ISO 639-1 language code filter (for example 'en'). Do not pass language names like 'english'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNo
totalCountYes
errorMessageNo
translationsYes
languageFilterNo
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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)A
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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)A
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
languagesNoOptional ISO 639-1 language code filters (for example ['en', 'ar']).
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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)A
Read-only
Inspect

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

ParametersJSON Schema
NameRequiredDescriptionDefault
localeNoOptional locale/language code for response localization (for example 'en' or 'ar').
languageNoOptional ISO 639-1 language code filter (for example 'en'). Do not pass language names like 'english'.
Behavior4/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 QuranA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
phrase_idNoMutashabihat phrase ID. Provide phrase_id or phrase_text, but not both.
phrase_textNoArabic phrase text to search for. Provide phrase_text or phrase_id, but not both.
same_surah_onlyNoWhen true, only include occurrences from the same surah as each matched ayah.

Output Schema

ParametersJSON Schema
NameRequiredDescription
ayahsNo
countNo
errorNo
foundYes
matchNo
sourceNo
surahsNo
phrase_idNo
occurrencesYes
phrase_textNo
errorMessageNo
closest_matchNo
not_found_reasonNo
not_found_messageNo
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 audioA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
queriesYesAudio playlist queries. Each query defines an ayah range and optional reciter.
default_reciter_idNoDefault reciter ID used when a query omits reciter_id.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNo
itemsYes
errorsNo
queriesNo
total_ayahsNo
errorMessageNo
unique_recitersNo
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 timesA
Read-only
Inspect

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

ParametersJSON Schema
NameRequiredDescriptionDefault
cityYesCity name for prayer time calculation (for example 'Cairo').
methodNoPrayer time calculation method (for example 'ISNA', 'MWL', or 'Makkah').ISNA
countryNoOptional country name to disambiguate city lookup (for example 'Egypt').

Output Schema

ParametersJSON Schema
NameRequiredDescription
cityNo
dateNo
errorNo
methodNo
countryNo
errorCodeNo
coordinatesNo
prayerTimesNo
errorMessageNo
prayerTimesRawNo
formattedAddressNo
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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)A
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch 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_resultsNoMaximum number of ayah results to return (1-100, default 20).
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

Discussions

No comments yet. Be the first to start the discussion!

Try in Browser

Your Connectors

Sign in to create a connector for this server.

Resources