Read Quran Today
Server Details
The Quran (Madinah Mushaf): Arabic, 127 translations, tafsir, word by word and recitations
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- ahmad-anbarje/Quran-On-Web
- GitHub Stars
- 0
TDQS
Scored across 10 tools
Most tools target clearly distinct resources: get_ayah vs get_tafsir vs word_by_word differ by output granularity, and the list_* and search tools are unambiguous. However, get_file is a catch-all that overlaps with get_ayah (text), word_by_word (word data), and get_recitation (audio/timing), so an agent wanting a recitation or Arabic text has two plausible entry points.
Most names follow a clean verb_noun or list_* convention (get_ayah, get_recitation, get_tafsir, list_reciters, list_surahs, list_translations, send_feedback). Two names deviate: the bare verb 'search' and the noun phrase 'word_by_word', but the set remains largely predictable.
Ten tools is a well-scoped surface for a Quran reading/data API, with each tool earning its place across lookup, listing, search, and feedback functions. No filler or redundancy that bloats the set.
The surface covers the domain thoroughly: surah metadata, ayah text with translation, tafsir, word-by-word breakdown, recitations with timing, reciter and translation listings, search, developer data files, and feedback. Read-only data access has no obvious dead ends for a Quran-reading workflow.
Available Tools
10 toolsget_ayahGet ayahsARead-onlyInspect
The Arabic of one ayah or a run of them (up to 50), with a translation. Defaults to the King Fahd Complex English (Hilali & Muhsin Khan).
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Last ayah, for a run; defaults to the first | |
| ayah | Yes | First ayah | |
| surah | Yes | Surah number, 1-114 | |
| translation | No | Translation id, e.g. "hilali", "sahih", "urdu_junagarhi"; "none" for the Arabic alone |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered. The description adds a real behavioral constraint not present in the schema – the run is capped at 50 ayahs, a limit the schema does not enforce – plus the default translation. It says nothing about ordering of results, which is the remaining gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero filler: the resource and its scope come first, the default second. Nothing repeats the title and nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, read-only lookup with full schema coverage and annotations carrying the safety profile, the description covers resource, scope cap, and default translation. Only result ordering and the per-ayah pairing of Arabic with translation are left implicit, minor omissions for this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters are already documented, including the 'to' default and the surah range. The description adds only the identity of the default translation (Hilali & Muhsin Khan), one useful clarification for the un-enumerated translation id, which does not justify going above the baseline.
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?
States a specific verb (retrieves/appears implicitly) and resource (the Arabic of one ayah or a run) plus the inclusion of a translation, so an agent knows exactly what comes back. It does not explicitly differentiate itself from get_tafsir or word_by_word, which cover adjacent ground.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not, and no mention of consulting list_translations before picking an id, even though translation ids are given only as loose examples. Usage is implied by the resource itself (reading scripture text), which is adequate but leaves sibling selection to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_fileGet a fileARead-onlyInspect
Links to download a surah's files: "text", the Arabic (optionally with a translation and the Tafsir al-Muyassar) as a .txt; "audio", its recording as an MP3 (leave out the surah for all of a reciter's); "timing", where each ayah and word of a recording starts and ends, as JSON; "font", the mushaf's fonts for the surah's pages (QCF V2, one a page) with the glyphs each ayah is written in; "data", for developers, the whole data sets (the Uthmani text, a translation or the tafsir in one file, the mushaf layout, word by word), with their sources.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | ||
| surah | No | Surah number, 1-114; needed for all but audio | |
| tafsir | No | For text: the Tafsir al-Muyassar under each ayah | |
| reciter | No | For audio and timing: reciter id; defaults to the site's own | |
| translation | No | For text: a translation id to put under each ayah, e.g. "hilali"; for data: the translation to give whole |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds real behavioral context that annotations cannot: each kind yields a download link, timing is JSON, fonts are one-per-page QCF V2, and data gives whole datasets with sources — valuable since no output schema exists. It stops short of noting rate limits, auth, or link expiry.
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 purpose is front-loaded in the opening clause, then the kind list follows. It is one dense sentence but every clause carries distinct information (format, scope, special cases). Slightly heavy for a single sentence but not padded.
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 5-parameter tool with no output schema and only annotations for safety, the description supplies the missing return-value semantics per kind, which is the main completeness risk here. Remaining gaps are minor: no sibling routing and no note on link lifetime or defaults beyond reciter.
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 80% schema coverage the baseline is 3, and the description earns above that: it effectively documents the undescribed `kind` enum by explaining what each of the five values produces, and clarifies the surah-omission rule for audio. It does not add much on `translation` or `reciter` beyond what the schema already states.
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?
States a specific verb and resource ("Links to download a surah's files") and then enumerates each of the five file kinds with a concrete artifact description (.txt, MP3, JSON timing, QCF V2 fonts, raw data sets). An agent can tell this is a bulk-file/download tool rather than an item lookup, though it does not explicitly contrast with get_recitation or get_tafsir, which overlap with the audio and tafsir paths.
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?
Guidance is implied through the per-kind descriptions and one conditional note ("leave out the surah for all of a reciter's"), so an agent can infer which kind to pick. However, there is no explicit statement of when to use this tool versus siblings like get_recitation (audio), get_tafsir, or word_by_word, which are clearly adjacent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_recitationGet a recitationBRead-onlyInspect
The recording of a surah: a link to the MP3, its length, and where each ayah starts and ends, in seconds, with a link that starts at a given ayah.
| Name | Required | Description | Default |
|---|---|---|---|
| ayah | No | An ayah to start the link at | |
| surah | Yes | Surah number, 1-114 | |
| reciter | No | Reciter id; defaults to the site's own |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description's real contribution is disclosing the return payload (MP3 link, duration, ayah offsets, ayah-anchored link), which is useful given there is no output schema, but it says nothing about defaults or failure behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence that front-loads the resource and enumerates the payload without waste. It reads as a sentence fragment, which slightly weakens the opening but costs no clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of describing the return value and does so well, listing the link, length, and ayah boundaries. The remaining gap is routing to list_reciters for the reciter id, which is minor for a 3-parameter read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all three parameters are documented in the schema, including the reciter default and surah range. The description's 'link that starts at a given ayah' restates the ayah parameter's role without adding format details. Baseline 3 applies.
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 specifies the resource concretely: the recording of a surah with MP3 link, length, and per-ayah timings. It reads as a noun fragment rather than an explicit verb, so it lacks the 'retrieve/get' framing, and it doesn't distinguish itself from siblings like get_ayah or list_reciters by name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus get_ayah (text) or word_by_word, and no mention that list_reciters supplies valid reciter ids. The agent must infer selection and prerequisite discovery on its own.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tafsirGet tafsirBRead-onlyInspect
The Tafsir al-Muyassar (King Fahd Complex, Arabic) of one ayah or a run of them, up to 50.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | ||
| ayah | Yes | ||
| surah | Yes | Surah number, 1-114 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds useful behavioral context by identifying the specific Arabic commentary edition and the 50-ayah range limit, but it does not explain output shape, missing-commentary behavior, or multi-ayah return format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence fragment with no filler, and the edition, language, and range are stated immediately. It is efficient, though the fragmentary phrasing omits an explicit verb.
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 low-complexity read-only retrieval tool with annotations and no output schema, it gives the commentary edition, language, and range. It still does not explain the return structure for a multi-ayah request or what happens when tafsir is unavailable, so it is only adequately complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33%, with only surah documented as 1-114. The phrase 'one ayah or a run of them, up to 50' does clarify that ayah is the start and 'to' is an optional end capped at 50, but it leaves constraints such as whether 'to' must be at least ayah or within the same surah unstated.
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 names the specific commentary edition and source (Tafsir al-Muyassar, King Fahd Complex, Arabic) and scopes it to one ayah or a run up to 50. It is clear what resource is returned, though it does not explicitly contrast itself with get_ayah or search.
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?
Usage is only implied by the word 'tafsir'; there is no explicit when-to-use guidance and no mention of alternatives such as get_ayah for plain text or search for discovery. The 50-ayah cap is a scope limit, not guidance on tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_recitersList the recitersCRead-onlyInspect
The recordings on offer: id, reciter, and what tells two recordings by one voice apart.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered. The description adds a hint about returned fields (id, reciter, disambiguator), which is useful, but the phrasing is vague and it doesn't say whether the result is a full catalog or filtered.
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?
It is a single short sentence, so it isn't bloated, but the front-loading is poor: the lead is a subordinate fragment ('The recordings on offer:') rather than the action, and the wording is cryptic ('what tells two recordings by one voice apart').
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description is the only source for return values, and it gestures at three fields without naming them or explaining their use. For a lookup tool that other siblings depend on, that leaves an agent guessing at structure and identifiers.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4. There is nothing parameter-wise to compensate for, and the description correctly implies no input is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description describes the payload ("id, reciter, and what tells two recordings by one voice apart") but never states the action clearly – it never says it lists/returns reciters. It also confuses levels, describing 'recordings' rather than reciters, so an agent reading only the description would be unsure whether this enumerates reciters or recordings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use or when-not-to-use guidance, and no mention of siblings such as list_surahs or list_translations that share the 'list' role. The agent must infer that this is the lookup tool for reciter ids needed by get_recitation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_surahsList the surahsARead-onlyInspect
All 114 surahs: number, names, ayah count and mushaf pages.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds substantive context the annotations do not: the exact record shape returned (number, names, ayah count, mushaf pages), which matters because no output schema exists. It stops short of stating ordering or completeness guarantees.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded clause with no waste; the quantity (114) and the returned fields are both stated immediately. Nothing could be removed without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-param, no-output-schema listing tool whose annotations already cover safety, the description gives enough to call it correctly and anticipate the result. Minor gap: ordering of the list and whether results are static/full is left unstated.
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?
Zero parameters, so the baseline is 4. The description correctly implies the tool takes no arguments by framing it as returning 'All 114 surahs' unconditionally.
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?
Names a specific resource (surahs) and enumerates the fields returned: number, names, ayah count, mushaf pages. It is clearly distinguishable from siblings like get_ayah, get_tafsir, and list_reciters, though it does not explicitly contrast itself with any of them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidance, and no alternative is named. Usage is strongly implied by the zero-parameter listing nature and the clear sibling set, but the agent must infer it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_translationsList the translationsARead-onlyInspect
The translations on offer, optionally for one language: id, language, translator. Also which languages have word-by-word meanings.
| Name | Required | Description | Default |
|---|---|---|---|
| language | No | A language name or code to narrow to, e.g. "urdu" or "ur" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the description's job is lighter. It adds genuine context beyond that by disclosing what the response contains (id, language, translator) and an extra payload — which languages have word-by-word meanings — which an agent would not otherwise anticipate.
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?
It's a single short sentence plus one clarifying clause, front-loading the resource before the optional filter. Phrasing like 'on offer' is slightly informal but nothing is redundant.
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?
There is no output schema, and the description compensates by enumerating the returned fields and the additional language-availability information. Minor gaps remain — whether multiple translations can share a language, or ordering — but for a zero-required-parameter list tool this is adequately complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter is documented in the schema, including a language-name-or-code example. The description only restates that the filter is optional and scoped to one language, adding no matching or formatting detail beyond the schema's baseline.
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 names the resource (translations) and the fields returned (id, language, translator), which lets an agent tell it apart from siblings like list_reciters or list_surahs. It reads as a noun phrase without an explicit verb ('The translations on offer'), so the listing action is only implied rather than stated.
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?
'Optionally for one language' signals the filtering use case, which is the main usage cue. There is no explicit when-to-use guidance, no statement of when not to filter, and no reference to alternative tools for related needs (e.g., word_by_word).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchSearch the QuranARead-onlyInspect
Ayahs containing the words given: in the Arabic (diacritics optional) or, with "translation", in that translation. Up to 50 results, each with its reference and link.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Default 10 | |
| query | Yes | ||
| translation | No | Search this translation instead of the Arabic, e.g. "hilali" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only/open-world behavior, and the description adds genuinely new context: a hard cap of 50 results and the per-result shape (reference + link). It doesn't say whether matching is exact/whole-word/phrase or how ranking works, but it goes meaningfully 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?
A single sentence with no waste: the matching rule, language/translation switch, result cap, and return shape are all packed in and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, yet the description supplies the return fields and result ceiling, which is the key missing piece. Remaining gaps are minor: no mention of the 2-character minimum or how results are ordered.
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 67% schema coverage, the description compensates well for query (Arabic words, diacritics optional) and translation (searches that translation instead of Arabic). Only limit is left to the schema's weak 'Default 10' note, which the description never reinforces.
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?
States a specific verb+resource: returns 'Ayahs containing the words given', narrowed to Arabic text or a named translation. That scope naturally separates it from get_ayah/get_tafsir siblings, though those alternatives are never named explicitly.
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?
Usage is implied (word/phrase lookup via the query parameter) but the description gives no explicit when-to-use, when-not, or pointer to siblings like get_ayah for exact references or list_translations before picking a translation value.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_feedbackReport a problemAInspect
Send the reader's report to readqurantoday.com: a problem with the site's text, a translation, the tafsir or a recitation, or a suggestion. Only when the reader asks to report or suggest something; send what they said, in their words, and the ayah or reciter it is about. Never on your own initiative.
| Name | Required | Description | Default |
|---|---|---|---|
| ayah | No | ||
| kind | Yes | "bug" for something wrong | |
| No | Only if the reader gives it, for a reply | ||
| surah | No | ||
| message | Yes | The report, in the reader's words | |
| reciter | No | Reciter id, for a problem with a recitation |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare openWorldHint=true and readOnlyHint=false, and the description corroborates this by naming the external destination and the consent precondition, plus that the message must be the reader's own words rather than a paraphrase. It does not disclose what happens after sending (confirmation, failure modes, whether the email address is stored), which is the remaining gap for an irreversible outbound action.
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?
Three dense sentences with no filler: destination and subject matter first, triggering condition second, content requirements third. The prohibitive clause lands last, which is the right emphasis for a write action.
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 6-parameter outbound send with no output schema, the description covers who triggers it, what to send, and in what form. Missing only post-send behavior and any note on the surah/ayah pairing and optional email, which keeps it just short of fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
At 67% schema coverage, the description adds real meaning: it maps the report subject matter onto the 'kind' enum ('a problem with... a suggestion'), constrains 'message' to the reader's verbatim words, and explains that 'ayah'/'reciter' identify what the report is about. It leaves 'surah' undocumented in both description and schema, and never mentions 'email', so it does not fully compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Send the reader's report to readqurantoday.com') and enumerates exactly what counts as a report: text problem, translation, tafsir, recitation, or suggestion. This is clearly distinguished from every sibling tool, all of which are read-only retrieval tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit positive trigger ('Only when the reader asks to report or suggest something') and an explicit prohibition ('Never on your own initiative'), which is exactly the guidance needed for an outward-facing action. No inference required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
word_by_wordWord by wordARead-onlyInspect
Each word of an ayah: its Latin reading and its meaning, in English or one of the other languages that have word meanings.
| Name | Required | Description | Default |
|---|---|---|---|
| ayah | Yes | ||
| surah | Yes | Surah number, 1-114 | |
| language | No | Language code for the meanings; default "en" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds useful output context—Latin reading and word meaning—but does not describe permissions, error behavior, or response structure beyond that.
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 definition is a single compact sentence that front-loads the core resource and output content. There is no redundant or wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only lookup without an output schema, the description adequately explains what is returned and the language option. It leaves some gaps around exact return structure and when to prefer sibling tools, but conveys enough for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%, so the schema documents surah and partially documents language/default behavior. The description reinforces that language selects English or another language with word meanings, but it adds no further semantics for the required surah and ayah parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource and output: per-word Latin reading and meaning for an ayah, including language options. It is more specific than the sibling get_ayah by signaling word-level granularity, though it uses a noun phrase rather than an explicit verb like 'retrieve' or 'get'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Each word of an ayah' implies the tool should be used when word-level breakdown is needed, but there is no explicit guidance about when to choose it over get_ayah, get_tafsir, or other siblings. Alternatives and exclusions are left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
- Changed
get_file4 fields changed- changed
Input schema / properties / kind / enumPrevious value: -[ - "text", - "audio" -]New value: +[ + "text", + "audio", + "timing", + "font", + "data" +] - changed
Input schema / properties / reciter / descriptionPrevious value: -"For audio: reciter id; defaults to the site's own"New value: +"For audio and timing: reciter id; defaults to the site's own" - changed
Input schema / properties / surah / descriptionPrevious value: -"Surah number, 1-114; needed for text"New value: +"Surah number, 1-114; needed for all but audio" - changed
Input schema / properties / translation / descriptionPrevious value: -"For text: a translation id to put under each ayah, e.g. \"hilali\""New value: +"For text: a translation id to put under each ayah, e.g. \"hilali\"; for data: the translation to give whole"
- Added
send_feedback
1 tool update
- Added
get_file
8 tool updates
- First observed
get_ayah - First observed
get_recitation - First observed
get_tafsir - First observed
list_reciters - First observed
list_surahs - First observed
list_translations - First observed
search - First observed
word_by_word
Related MCP Connectors
Quran: Quran API Service with 90+ different languages and 400+ translations.
Curated Islamic MCP: Quran (Arabic + Pickthall), 440 du'as, 99 Names, crisis-aware.
Classical Islamic library (Shamela, 8,594 books): verbatim Arabic cited by volume and page. No key.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceProvides canonical Quran text, translations, and tafsir commentary via MCP for accurate AI citation.117-
- FlicenseNot gradedqualityBmaintenanceEnables AI assistants to retrieve canonical Quran text, translations, scholarly tafsir, full-text search, and word-level morphology from verified Quran data.-
- FlicenseNot gradedqualityDmaintenanceValidates Arabic Quran recitations for single verse, full surah, juz, page, or any consecutive verse range, supporting standard Arabic, Uthmani script, and full tashkeel validation.-
- AlicenseAqualityDmaintenanceProvides AI assistants with comprehensive access to Islamic resources including Quran verses with translations, Tafsir commentary, Hadith collections, and audio recitations. Enables users to explore Islamic texts, get daily inspiration, and access scholarly interpretations through natural language queries.1812 npm10MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.