AskSakina Islamic Knowledge
Server Details
Curated Islamic MCP: Quran (Arabic + Pickthall), 440 du'as, 99 Names, crisis-aware.
- Status
- Healthy
- Uptime
- 99.7% over 38 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- yserrag/asksakina-mcp
- GitHub Stars
- 0
- Server Listing
- AskSakina Islamic Knowledge MCP Server
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 4 tools
Each tool targets a distinct resource: thematic verse search, du'a by life context, a Name of Allah, and a single verse by reference. The only plausible confusion is between find_verses and get_quran_verse, but the keyword-search vs. surah/ayah-lookup split is clearly signalled in the descriptions.
All four names are snake_case verb_noun and read predictably (get_dua, get_name_of_allah, get_quran_verse). The single deviation is 'find_' for the search tool and singular/plural resource naming, both of which reflect real semantic differences rather than arbitrary style drift.
Four tools for a curated Islamic-knowledge domain is lean but each one covers a genuine content corpus (Quran index, du'a corpus, 99 Names). Nothing is redundant, though the surface sits near the thin end of well-scoped.
Core retrieval is covered, but the surface has notable gaps for the stated domain: no hadith search, no tafsir/exegesis, no way to look up a du'a by name or keyword (only by life context), and no listing/browsing aid for surahs or Names. Agents will hit dead ends on common follow-up questions.
Available Tools
4 toolsfind_versesfind_versesAInspect
Searches AskSakina's thematic index for Quran verses by topic keyword. Returns reference, Tanzil Arabic and Pickthall English. Quote the Arabic exactly.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of verses to return; default 5, max 10. | |
| query | Yes | Topic or keyword, e.g. 'patience', 'grief', 'gratitude', 'hope'. | |
| locale | No | Selects the in-country crisis resources if one is needed; defaults to "en". Translations are Pickthall English. | |
| audience | No | Optional: curious, revert or practising, from the user's own self-description only. Teaching context attaches whenever an entry exists; omit when the audience is unknown. |
Output Schema
| Name | Required | Description |
|---|---|---|
| content | Yes | |
| _sakina_meta | Yes | |
| crisis_resource | No | Present this block exactly, before anything else, and add nothing religious when content_type is crisis_resource_only. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral burden. It usefully states what is returned and warns to quote the Arabic exactly, but it does not describe read-only/search behavior, permissions, rate limits, or failure modes.
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 short sentences, front-loaded with purpose and followed by return format and the key quoting instruction. 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?
Given full schema coverage and an output schema, the description is nearly sufficient: it covers purpose, return composition, and a critical usage rule. The main gap is not explicitly routing against the sibling get_quran_verse.
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 the parameter meanings are already fully documented. The description mentions topic keyword and return fields but adds no syntax, constraints, or semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb, resource, and retrieval mode: search a thematic index for Quran verses by topic keyword. This clearly separates it from exact-reference retrieval, but it does not explicitly name or contrast the sibling get_quran_verse.
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 topic-keyword scope implies when to use this tool, but there is no explicit when-not guidance or reference to alternatives such as get_quran_verse. An agent can infer usage but must rely on the tool name and schema for routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_duaget_duaAInspect
Returns du'as from a curated du'a corpus for a life context (e.g. anxiety, travel, gratitude), with source and grading where recorded. Show any crisis_resource block verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | A du'a id taken from a related reference in an earlier response. Send this or context, not both. | |
| limit | No | Number of du'as to return for a context; default 3, max 10. The response says how many more exist. Ignored with id. | |
| locale | No | Locale; defaults to "en". Du'a records are English for every locale; a crisis resource is given in the request locale, or, with no locale or "en", in the language of the crisis words (Indonesian, Urdu, Arabic, Turkish, Bengali or Persian). | |
| offset | No | Number of du'as to skip before the page, for paging with limit; default 0. Ignored with id, and on the bereaved set. | |
| context | No | Life context to match against. Examples: 'anxiety', 'morning', 'travel', 'forgiveness', 'gratitude'. Send this or id, not both. | |
| audience | No | Optional: curious, revert or practising, from the user's own self-description only. Teaching context attaches whenever an entry exists; omit when the audience is unknown. |
Output Schema
| Name | Required | Description |
|---|---|---|
| content | Yes | |
| _sakina_meta | Yes | |
| crisis_resource | No | Present this block exactly, before anything else, and add nothing religious when content_type is crisis_resource_only. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does meaningful work: it discloses that results carry source and grading 'where recorded', and adds a safety-critical behavioral rule to render any crisis_resource block verbatim. It does not cover paging behavior or what an id lookup returns, but the crisis-handling instruction is exactly the kind of context annotations could never provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, both front-loaded and non-redundant: the first defines what is returned and the scoping input, the second is an operational instruction that changes agent behavior. Nothing could be removed without loss.
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?
An output schema exists, so return values need not be described, and the schema itself richly documents all parameters. The description is nearly sufficient, with the only real gap being the id-lookup mode, which an agent would only discover by reading the schema.
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 six parameters are already documented, including the id/context exclusivity, limit defaults, and the unusual locale rule. The description only echoes the context parameter's purpose via examples, adding no meaning beyond the schema. 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?
States a specific verb and resource ('Returns du'as from a curated du'a corpus') plus the scoping concept ('for a life context') with concrete examples (anxiety, travel, gratitude). The resource is clearly distinct from siblings like get_quran_verse or get_name_of_allah, but the description never explicitly contrasts with 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?
The 'life context' framing implies when to reach for this tool, and the examples make the intended trigger concrete. However, it omits the id-based lookup path entirely (only the schema reveals 'id' takes precedence and is mutually exclusive with 'context'), and gives no when-not-to-use guidance or mention of the sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_name_of_allahget_name_of_allahBInspect
Returns one of the 99 Names of Allah by number (1-99) or by name: Arabic, transliteration, meaning, reflection and Quranic references. Quote the Arabic exactly.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Name input — Latin transliteration ('Al-Hakam'), Arabic ('الحكم'), or English meaning ('The Judge'). | |
| locale | No | Locale for meaning + reflection. Defaults to "en"; "tr" returns the English meaning and reflection. | |
| number | No | Number of the Name in the canonical list, 1-99. | |
| audience | No | Optional: curious, revert or practising, from the user's own self-description only. Teaching context attaches whenever an entry exists; omit when the audience is unknown. |
Output Schema
| Name | Required | Description |
|---|---|---|
| content | Yes | |
| _sakina_meta | Yes | |
| crisis_resource | No | Present this block exactly, before anything else, and add nothing religious when content_type is crisis_resource_only. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose the content payload (Arabic, transliteration, meaning, reflection, Quranic references) plus the Arabic verbatim constraint. However, it is silent on the notable fact that all four parameters are optional — it never says what happens if neither name nor number is supplied, nor how out-of-range or unmatched input is handled.
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 front-loaded sentences with zero waste: the payload list comes first, then the single actionable formatting constraint. Nothing is repeated and nothing is padding.
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?
An output schema exists, so return values needn't be explained, and the schema fully covers parameters. The remaining gap is invocation correctness: with 0 required parameters, the description should state that a name or number must be supplied, otherwise an agent could call it with an empty object and not know what to expect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and each parameter (name, locale, number, audience) is documented in the schema with examples and enum semantics. The description only restates the number range and name lookup, adding no meaning beyond the schema, so the 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?
States a specific verb (Returns) and a precisely bounded resource (one of the 99 Names of Allah) with both lookup keys (number 1-99 or name). It distinguishes itself from find_verses/get_dua/get_quran_verse implicitly because the entity is unique, but it never addresses the overlap with get_quran_verse for the 'Quranic references' it also returns.
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?
There is no when-to-use, when-not, or alternative guidance — nothing tells the agent when to reach for this versus get_quran_verse when the user asks about a Quranic reference. The only instruction-adjacent text ('Quote the Arabic exactly') governs output handling, not tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_quran_verseget_quran_verseAInspect
Returns one Quran verse by surah and ayah number: Tanzil Uthmani Arabic and Pickthall English, with citation. Quote the Arabic exactly; do not paraphrase either text.
| Name | Required | Description | Default |
|---|---|---|---|
| ayah | Yes | Ayah (verse) number within the surah | |
| surah | Yes | Surah number, 1-114 | |
| locale | No | Translation locale; defaults to "en" (Pickthall). Urdu, Indonesian and Turkish translations are not yet available: "ur", "id" and "tr" return Pickthall English with a note. | |
| audience | No | Optional: curious, revert or practising, from the user's own self-description only. Teaching context attaches whenever an entry exists; omit when the audience is unknown. |
Output Schema
| Name | Required | Description |
|---|---|---|
| content | Yes | |
| _sakina_meta | Yes | |
| crisis_resource | No | Present this block exactly, before anything else, and add nothing religious when content_type is crisis_resource_only. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden and usefully discloses the returned content: Tanzil Uthmani Arabic, Pickthall English, and a citation. It also adds an important output constraint to quote exactly and not paraphrase, though it does not describe invalid-reference behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition is two front-loaded sentences with no wasted language. The second sentence earns its place by adding a concrete quotation constraint.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the rich input schema and the presence of an output schema, the description is nearly complete for exact verse retrieval and quotation behavior. The main remaining gap is routing guidance versus find_verses, plus no explicit statement about invalid surah/ayah handling.
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 the schema already documents surah, ayah, locale fallback behavior, and audience. The description restates the required surah/ayah lookup but adds little parameter meaning beyond what the schema provides, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: returns one Quran verse by surah and ayah number, with named Arabic and English sources plus citation. The singular exact-verse scope clearly distinguishes it from the sibling find_verses tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The required surah and ayah inputs imply use for exact-reference lookup, but the description never explicitly says when to choose this over find_verses or when not to use it. Usage is therefore implied rather than fully guided.
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.
4 tool updates
- Changed
find_verses1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": true, + "properties": { + "_sakina_meta": { + "additionalProperties": true, + "properties": { + "content_type": { + "enum": [ + "verse_collection", + "not_found", + "crisis_resource_only" + ], + "type": "string" + }, + "disclaimer": { + "type": "string" + }, + "disclaimer_locale": { + "const": "en", + "type": "string" + }, + "educational_context": { + "type": "string" + }, + "llm_directives": { + "additionalProperties": true, + "properties": { + "CRITICAL_RULES": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "CRITICAL_RULES" + ], + "type": "object" + }, + "presentation_contract": { + "additionalProperties": true, + "properties": {}, + "type": "object" + }, + "source": { + "type": "string" + }, + "version": { + "type": "string" + } + }, + "required": [ + "version", + "source", + "content_type", + "disclaimer", + "llm_directives", + "presentation_contract", + "educational_context" + ], + "type": "object" + }, + "content": { + "anyOf": [ + { + "additionalProperties": true, + "properties": { + "matched_themes": { + "items": { + "additionalProperties": true, + "properties": { + "theme": { + "type": "string" + } + }, + "required": [ + "theme" + ], + "type": "object" + }, + "type": "array" + }, + "no_results": { + "type": "boolean" + }, + "query": { + "type": "string" + }, + "total_results": { + "type": "integer" + }, + "verses": { + "items": { + "additionalProperties": true, + "properties": { + "arabic": { + "type": "string" + }, + "reference": { + "type": "string" + }, + "relevance_note": { + "type": "string" + }, + "surah_name_arabic": { + "type": "string" + }, + "surah_name_english": { + "type": "string" + }, + "translation": { + "type": "string" + }, + "translation_source": { + "type": "string" + } + }, + "required": [ + "reference", + "surah_name_english", + "surah_name_arabic", + "arabic", + "translation", + "translation_source", + "relevance_note" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "query", + "matched_themes", + "verses", + "total_results", + "no_results" + ], + "type": "object" + }, + { + "additionalProperties": true, + "properties": { + "available_themes": { + "items": { + "type": "string" + }, + "type": "array" + }, + "no_results": { + "type": "boolean" + }, + "reason": { + "type": "string" + }, + "requested": { + "additionalProperties": true, + "properties": { + "query": { + "type": "string" + } + }, + "required": [ + "query" + ], + "type": "object" + }, + "total_results": { + "type": "integer" + }, + "verses": { + "items": {}, + "type": "array" + } + }, + "required": [ + "requested", + "verses", + "total_results", + "no_results", + "reason", + "available_themes" + ], + "type": "object" + }, + { + "additionalProperties": true, + "properties": { + "reason": { + "type": "string" + }, + "requested": { + "additionalProperties": true, + "properties": { + "query": { + "type": "string" + } + }, + "required": [ + "query" + ], + "type": "object" + }, + "withheld": { + "type": "string" + } + }, + "required": [ + "requested", + "withheld", + "reason" + ], + "type": "object" + } + ] + }, + "crisis_resource": { + "additionalProperties": true, + "description": "Present this block exactly, before anything else, and add nothing religious when content_type is crisis_resource_only.", + "properties": { + "crisis_type": { + "type": "string" + }, + "directive": { + "type": "string" + }, + "level": { + "enum": [ + "hard", + "soft" + ], + "type": "string" + }, + "locale": { + "type": "string" + }, + "text": { + "type": "string" + } + }, + "required": [ + "level", + "locale", + "directive", + "text" + ], + "type": "object" + } + }, + "required": [ + "_sakina_meta", + "content" + ], + "type": "object" +}
- Changed
get_dua1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": true, + "properties": { + "_sakina_meta": { + "additionalProperties": true, + "properties": { + "content_type": { + "enum": [ + "dua_collection", + "not_found", + "crisis_resource_only" + ], + "type": "string" + }, + "disclaimer": { + "type": "string" + }, + "disclaimer_locale": { + "const": "en", + "type": "string" + }, + "educational_context": { + "type": "string" + }, + "llm_directives": { + "additionalProperties": true, + "properties": { + "CRITICAL_RULES": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "CRITICAL_RULES" + ], + "type": "object" + }, + "presentation_contract": { + "additionalProperties": true, + "properties": {}, + "type": "object" + }, + "source": { + "type": "string" + }, + "version": { + "type": "string" + } + }, + "required": [ + "version", + "source", + "content_type", + "disclaimer", + "llm_directives", + "presentation_contract", + "educational_context" + ], + "type": "object" + }, + "content": { + "anyOf": [ + { + "additionalProperties": true, + "properties": { + "context": { + "type": "string" + }, + "duas": { + "items": { + "additionalProperties": true, + "properties": { + "arabic": { + "type": "string" + }, + "context_tags": { + "items": { + "type": "string" + }, + "type": "array" + }, + "dua_block": { + "type": "string" + }, + "grading": { + "type": "string" + }, + "grading_status": { + "type": "string" + }, + "source": { + "type": "string" + }, + "title": { + "type": "string" + }, + "translation": { + "type": "string" + }, + "transliteration": { + "type": "string" + } + }, + "required": [ + "dua_block", + "title", + "arabic", + "transliteration", + "translation", + "source", + "grading", + "grading_status", + "context_tags" + ], + "type": "object" + }, + "type": "array" + }, + "grading_summary": { + "additionalProperties": true, + "properties": { + "graded": { + "type": "integer" + }, + "not_a_narration": { + "type": "integer" + }, + "not_recorded": { + "type": "integer" + }, + "quranic": { + "type": "integer" + } + }, + "required": [ + "quranic", + "graded", + "not_a_narration", + "not_recorded" + ], + "type": "object" + }, + "id": { + "type": "string" + }, + "matched_by": { + "additionalProperties": true, + "properties": { + "method": { + "type": "string" + } + }, + "required": [ + "method" + ], + "type": "object" + }, + "total_available": { + "type": "integer" + }, + "total_results": { + "type": "integer" + }, + "truncated": { + "type": "boolean" + } + }, + "required": [ + "duas", + "total_results" + ], + "type": "object" + }, + { + "additionalProperties": true, + "properties": { + "reason": { + "type": "string" + }, + "requested": { + "additionalProperties": true, + "properties": { + "context": { + "type": "string" + }, + "id": { + "type": "string" + } + }, + "type": "object" + } + }, + "required": [ + "requested", + "reason" + ], + "type": "object" + }, + { + "additionalProperties": true, + "properties": { + "reason": { + "type": "string" + }, + "requested": { + "additionalProperties": true, + "properties": { + "context": { + "type": "string" + }, + "id": { + "type": "string" + } + }, + "type": "object" + }, + "withheld": { + "type": "string" + } + }, + "required": [ + "requested", + "withheld", + "reason" + ], + "type": "object" + } + ] + }, + "crisis_resource": { + "additionalProperties": true, + "description": "Present this block exactly, before anything else, and add nothing religious when content_type is crisis_resource_only.", + "properties": { + "crisis_type": { + "type": "string" + }, + "directive": { + "type": "string" + }, + "level": { + "enum": [ + "hard", + "soft" + ], + "type": "string" + }, + "locale": { + "type": "string" + }, + "text": { + "type": "string" + } + }, + "required": [ + "level", + "locale", + "directive", + "text" + ], + "type": "object" + } + }, + "required": [ + "_sakina_meta", + "content" + ], + "type": "object" +}
- Changed
get_name_of_allah1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": true, + "properties": { + "_sakina_meta": { + "additionalProperties": true, + "properties": { + "content_type": { + "enum": [ + "name_of_allah", + "not_found", + "crisis_resource_only" + ], + "type": "string" + }, + "disclaimer": { + "type": "string" + }, + "disclaimer_locale": { + "const": "en", + "type": "string" + }, + "educational_context": { + "type": "string" + }, + "llm_directives": { + "additionalProperties": true, + "properties": { + "CRITICAL_RULES": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "CRITICAL_RULES" + ], + "type": "object" + }, + "presentation_contract": { + "additionalProperties": true, + "properties": {}, + "type": "object" + }, + "source": { + "type": "string" + }, + "version": { + "type": "string" + } + }, + "required": [ + "version", + "source", + "content_type", + "disclaimer", + "llm_directives", + "presentation_contract", + "educational_context" + ], + "type": "object" + }, + "content": { + "anyOf": [ + { + "additionalProperties": true, + "properties": { + "arabic": { + "type": "string" + }, + "english_meaning": { + "type": "string" + }, + "name_block": { + "type": "string" + }, + "number": { + "type": "integer" + }, + "quranic_references": { + "items": { + "type": "string" + }, + "type": "array" + }, + "reflection": { + "type": "string" + }, + "related": { + "items": { + "additionalProperties": true, + "properties": { + "call": { + "additionalProperties": true, + "properties": { + "arguments": { + "additionalProperties": true, + "properties": {}, + "type": "object" + }, + "tool": { + "type": "string" + } + }, + "required": [ + "tool", + "arguments" + ], + "type": "object" + }, + "kind": { + "type": "string" + }, + "label": { + "type": "string" + } + }, + "required": [ + "kind", + "label", + "call" + ], + "type": "object" + }, + "type": "array" + }, + "teach": { + "additionalProperties": true, + "properties": { + "audience": { + "type": "string" + }, + "record_id": { + "type": "string" + } + }, + "required": [ + "record_id", + "audience" + ], + "type": "object" + }, + "transliteration": { + "type": "string" + } + }, + "required": [ + "name_block", + "number", + "arabic", + "transliteration", + "english_meaning", + "reflection", + "quranic_references" + ], + "type": "object" + }, + { + "additionalProperties": true, + "properties": { + "reason": { + "type": "string" + }, + "requested": { + "additionalProperties": true, + "properties": { + "locale": { + "type": "string" + }, + "name": { + "type": "string" + }, + "number": { + "type": "number" + } + }, + "type": "object" + } + }, + "required": [ + "requested", + "reason" + ], + "type": "object" + }, + { + "additionalProperties": true, + "properties": { + "reason": { + "type": "string" + }, + "requested": { + "additionalProperties": true, + "properties": { + "name": { + "type": "string" + } + }, + "type": "object" + }, + "withheld": { + "type": "string" + } + }, + "required": [ + "requested", + "withheld", + "reason" + ], + "type": "object" + } + ] + }, + "crisis_resource": { + "additionalProperties": true, + "description": "Present this block exactly, before anything else, and add nothing religious when content_type is crisis_resource_only.", + "properties": { + "crisis_type": { + "type": "string" + }, + "directive": { + "type": "string" + }, + "level": { + "enum": [ + "hard", + "soft" + ], + "type": "string" + }, + "locale": { + "type": "string" + }, + "text": { + "type": "string" + } + }, + "required": [ + "level", + "locale", + "directive", + "text" + ], + "type": "object" + } + }, + "required": [ + "_sakina_meta", + "content" + ], + "type": "object" +}
- Changed
get_quran_verse1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": true, + "properties": { + "_sakina_meta": { + "additionalProperties": true, + "properties": { + "content_type": { + "enum": [ + "quran_verse", + "not_found" + ], + "type": "string" + }, + "disclaimer": { + "type": "string" + }, + "disclaimer_locale": { + "const": "en", + "type": "string" + }, + "educational_context": { + "type": "string" + }, + "llm_directives": { + "additionalProperties": true, + "properties": { + "CRITICAL_RULES": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "CRITICAL_RULES" + ], + "type": "object" + }, + "presentation_contract": { + "additionalProperties": true, + "properties": {}, + "type": "object" + }, + "source": { + "type": "string" + }, + "version": { + "type": "string" + } + }, + "required": [ + "version", + "source", + "content_type", + "disclaimer", + "llm_directives", + "presentation_contract", + "educational_context" + ], + "type": "object" + }, + "content": { + "anyOf": [ + { + "additionalProperties": true, + "properties": { + "arabic_text": { + "type": "string" + }, + "ayah": { + "type": "integer" + }, + "related": { + "items": { + "additionalProperties": true, + "properties": { + "call": { + "additionalProperties": true, + "properties": { + "arguments": { + "additionalProperties": true, + "properties": {}, + "type": "object" + }, + "tool": { + "type": "string" + } + }, + "required": [ + "tool", + "arguments" + ], + "type": "object" + }, + "kind": { + "type": "string" + }, + "label": { + "type": "string" + } + }, + "required": [ + "kind", + "label", + "call" + ], + "type": "object" + }, + "type": "array" + }, + "surah_name_arabic": { + "type": "string" + }, + "surah_name_english": { + "type": "string" + }, + "surah_number": { + "type": "integer" + }, + "teach": { + "additionalProperties": true, + "properties": { + "audience": { + "type": "string" + }, + "record_id": { + "type": "string" + } + }, + "required": [ + "record_id", + "audience" + ], + "type": "object" + }, + "translation": { + "type": "string" + }, + "translation_language": { + "type": "string" + }, + "translation_note": { + "type": "string" + }, + "translation_source": { + "type": "string" + } + }, + "required": [ + "surah_number", + "surah_name_arabic", + "surah_name_english", + "ayah", + "arabic_text", + "translation", + "translation_source", + "translation_language" + ], + "type": "object" + }, + { + "additionalProperties": true, + "properties": { + "reason": { + "type": "string" + }, + "requested": { + "additionalProperties": true, + "properties": { + "ayah": { + "type": "number" + }, + "locale": { + "type": "string" + }, + "surah": { + "type": "number" + } + }, + "type": "object" + } + }, + "required": [ + "requested", + "reason" + ], + "type": "object" + } + ] + }, + "crisis_resource": { + "additionalProperties": true, + "description": "Present this block exactly, before anything else, and add nothing religious when content_type is crisis_resource_only.", + "properties": { + "crisis_type": { + "type": "string" + }, + "directive": { + "type": "string" + }, + "level": { + "enum": [ + "hard", + "soft" + ], + "type": "string" + }, + "locale": { + "type": "string" + }, + "text": { + "type": "string" + } + }, + "required": [ + "level", + "locale", + "directive", + "text" + ], + "type": "object" + } + }, + "required": [ + "_sakina_meta", + "content" + ], + "type": "object" +}
1 tool update
- Changed
get_dua1 field changed- changed
Input schema / properties / locale / descriptionPrevious value: -"Locale; defaults to \"en\". Du'a records are English for every locale; a crisis resource is given in the request locale, or, with no locale or \"en\", in the language of the crisis words (Indonesian, Urdu, Arabic or Turkish; Bengali and Persian get the English text with local helplines)."New value: +"Locale; defaults to \"en\". Du'a records are English for every locale; a crisis resource is given in the request locale, or, with no locale or \"en\", in the language of the crisis words (Indonesian, Urdu, Arabic, Turkish, Bengali or Persian)."
1 tool update
- Changed
get_dua1 field changed- changed
Input schema / properties / locale / descriptionPrevious value: -"Locale; defaults to \"en\". Du'a records are English for every locale; a crisis resource is given in the request locale, or, with no locale or \"en\", in the language of the crisis words (Indonesian, Urdu, Arabic or Turkish)."New value: +"Locale; defaults to \"en\". Du'a records are English for every locale; a crisis resource is given in the request locale, or, with no locale or \"en\", in the language of the crisis words (Indonesian, Urdu, Arabic or Turkish; Bengali and Persian get the English text with local helplines)."
1 tool update
- Changed
get_dua1 field changed- changed
Input schema / properties / locale / descriptionPrevious value: -"Locale; defaults to \"en\". Du'a records are English for every locale; a crisis resource is given in the request locale."New value: +"Locale; defaults to \"en\". Du'a records are English for every locale; a crisis resource is given in the request locale, or, with no locale or \"en\", in the language of the crisis words (Indonesian, Urdu, Arabic or Turkish)."
4 tool updates
- Changed
find_verses1 field changed- changed
Input schema / properties / locale / enumPrevious value: -[ - "en", - "id", - "ur", - "ar" -]New value: +[ + "en", + "id", + "ur", + "ar", + "tr" +]
- Changed
get_dua2 fields changed- changed
Input schema / properties / locale / descriptionPrevious value: -"Translation locale; defaults to \"en\". v1 returns English content for all locales."New value: +"Locale; defaults to \"en\". Du'a records are English for every locale; a crisis resource is given in the request locale." - changed
Input schema / properties / locale / enumPrevious value: -[ - "en", - "id", - "ur", - "ar" -]New value: +[ + "en", + "id", + "ur", + "ar", + "tr" +]
- Changed
get_name_of_allah2 fields changed- changed
Input schema / properties / locale / descriptionPrevious value: -"Locale for meaning + reflection. Defaults to \"en\"."New value: +"Locale for meaning + reflection. Defaults to \"en\"; \"tr\" returns the English meaning and reflection." - changed
Input schema / properties / locale / enumPrevious value: -[ - "en", - "id", - "ur", - "ar" -]New value: +[ + "en", + "id", + "ur", + "ar", + "tr" +]
- Changed
get_quran_verse2 fields changed- changed
Input schema / properties / locale / descriptionPrevious value: -"Translation locale; defaults to \"en\" (Pickthall). Urdu and Indonesian translations are not yet available: \"ur\" and \"id\" return Pickthall English with a note."New value: +"Translation locale; defaults to \"en\" (Pickthall). Urdu, Indonesian and Turkish translations are not yet available: \"ur\", \"id\" and \"tr\" return Pickthall English with a note." - changed
Input schema / properties / locale / enumPrevious value: -[ - "en", - "id", - "ur", - "ar" -]New value: +[ + "en", + "id", + "ur", + "ar", + "tr" +]
4 tool updates
- Changed
find_verses1 field changed- changed
Input schema / properties / audience / descriptionPrevious value: -"Optional: curious, revert or practising. Returns pre-authored teaching context where available; omit for the standard record."New value: +"Optional: curious, revert or practising, from the user's own self-description only. Teaching context attaches whenever an entry exists; omit when the audience is unknown."
- Changed
get_dua3 fields changed- changed
Input schema / properties / audience / descriptionPrevious value: -"Optional: curious, revert or practising. Returns pre-authored teaching context where available; omit for the standard record."New value: +"Optional: curious, revert or practising, from the user's own self-description only. Teaching context attaches whenever an entry exists; omit when the audience is unknown." - added
Input schema / properties / limitAdded value: +{ + "description": "Number of du'as to return for a context; default 3, max 10. The response says how many more exist. Ignored with id.", + "maximum": 10, + "minimum": 1, + "type": "integer" +} - added
Input schema / properties / offsetAdded value: +{ + "description": "Number of du'as to skip before the page, for paging with limit; default 0. Ignored with id, and on the bereaved set.", + "minimum": 0, + "type": "integer" +}
- Changed
get_name_of_allah1 field changed- changed
Input schema / properties / audience / descriptionPrevious value: -"Optional: curious, revert or practising. Returns pre-authored teaching context where available; omit for the standard record."New value: +"Optional: curious, revert or practising, from the user's own self-description only. Teaching context attaches whenever an entry exists; omit when the audience is unknown."
- Changed
get_quran_verse1 field changed- changed
Input schema / properties / audience / descriptionPrevious value: -"Optional: curious, revert or practising. Returns pre-authored teaching context where available; omit for the standard record."New value: +"Optional: curious, revert or practising, from the user's own self-description only. Teaching context attaches whenever an entry exists; omit when the audience is unknown."
4 tool updates
- Changed
find_verses1 field changed- added
Input schema / properties / audienceAdded value: +{ + "description": "Optional: curious, revert or practising. Returns pre-authored teaching context where available; omit for the standard record.", + "enum": [ + "curious", + "revert", + "practising" + ], + "type": "string" +}
- Changed
get_dua4 fields changed- added
Input schema / properties / audienceAdded value: +{ + "description": "Optional: curious, revert or practising. Returns pre-authored teaching context where available; omit for the standard record.", + "enum": [ + "curious", + "revert", + "practising" + ], + "type": "string" +} - changed
Input schema / properties / context / descriptionPrevious value: -"Life context to match against. Examples: 'anxiety', 'morning', 'travel', 'forgiveness', 'gratitude'."New value: +"Life context to match against. Examples: 'anxiety', 'morning', 'travel', 'forgiveness', 'gratitude'. Send this or id, not both." - added
Input schema / properties / idAdded value: +{ + "description": "A du'a id taken from a related reference in an earlier response. Send this or context, not both.", + "pattern": "^[A-Za-z0-9-]{3,40}$", + "type": "string" +} - removed
Input schema / requiredRemoved value: -[ - "context" -]
- Changed
get_name_of_allah1 field changed- added
Input schema / properties / audienceAdded value: +{ + "description": "Optional: curious, revert or practising. Returns pre-authored teaching context where available; omit for the standard record.", + "enum": [ + "curious", + "revert", + "practising" + ], + "type": "string" +}
- Changed
get_quran_verse1 field changed- added
Input schema / properties / audienceAdded value: +{ + "description": "Optional: curious, revert or practising. Returns pre-authored teaching context where available; omit for the standard record.", + "enum": [ + "curious", + "revert", + "practising" + ], + "type": "string" +}
4 tool updates
- First observed
find_verses - First observed
get_dua - First observed
get_name_of_allah - First observed
get_quran_verse
Related MCP Connectors
Quran MCP — Al-Quran Cloud API. Surahs (chapters), ayahs (verses), translations, and full-text…
Islamic prayer times & calendar MCP (Aladhan API). Keyless.
Prayer times, Qibla, Hijri calendar, 99 Names, Quran audio, Bangladesh offsets. English + Bengali.
Production-ready Muslim prayer reminder MCP with astronomical precision and theological disclosure.
Related MCP Servers
- AlicenseBqualityCmaintenanceAn MCP server providing comprehensive Islamic utilities, including prayer times, azan, Hijri calendar, du'a, zakat, and the 99 Names of Allah.34MIT
- AlicenseAqualityCmaintenanceProvides read-only access to Quran data — reciters, surahs, full-text search, ayah retrieval, prayer times, live radio stations, and Hijri dates — so AI agents can answer Islamic content queries. Runs locally via stdio or remotely over stateless HTTP for Claude, ChatGPT, and other MCP clients.8ISC
- FlicenseNot gradedqualityDmaintenanceProvides canonical Quran text, translations, and tafsir commentary via MCP for accurate AI citation.120-
- AlicenseAqualityCmaintenanceServes a scholar-approved Islamic corpus of Qur'an and hadith passages to any MCP client with server-side refusal enforcement. Enables natural-language questioning, retrieval, policy checking, and honest corpus coverage reporting while preventing fabricated answers.6MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.