Quran MCP — Al-Quran Cloud API. Surahs (chapters), ayahs (verses), translations, and full-text search. Keyless.
Quran MCP has well-structured tool definitions with clear naming (verb_noun pattern) and comprehensive descriptions (avg 180 chars). All 4 tools have proper input schemas with typed parameters and descriptions. However, output schemas are not formally documented, responses are inferred from code. Parameter descriptions lack format constraints (e.g., edition enum values, surah range validation). Error handling is minimal; API errors return generic {error, message} without recovery guidance. No tool annotations (readOnlyHint, idempotentHint) despite all tools being read-only. Missing pagination support for search_quran despite potentially large result sets.
Get a single ayah (verse) of the Quran by reference — either surah:ayah (e.g. "2:255" for Ayat al-Kursi) or a global ayah number (1-6236). Returns the verse text in the chosen edition (translation like en.asad / en.sahih, or Arabic via quran-uthmani).
Get the full text of a surah (chapter) of the Quran by its number (1-114). Returns every ayah (verse) in the chosen edition. Use an English translation edition (e.g. en.asad, en.sahih) for English, or quran-uthmani for the Arabic text.
List all 114 surahs (chapters) of the Quran with their Arabic name, English name, English translation, ayah (verse) count, and revelation type (Meccan/Medinan).
Search the Quran for a keyword across ayahs (verses). Returns matching verses (up to 30) with their surah (chapter) and ayah number. Defaults to the en.asad English translation; pass another edition to search a different translation or Arabic (quran-uthmani).
Output schemas not formally documented. Responses are inferred from callTool implementation; LLMs cannot predict return structure before execution.
Edition parameter accepts free-form strings (e.g., 'en.asad', 'en.sahih', 'quran-uthmani') without enum constraint. LLMs may hallucinate invalid edition IDs.
search_quran returns up to 30 matches but lacks pagination (limit, offset, next_cursor). Large result sets risk context window exhaustion.
Error responses are generic {error, message} without recovery guidance. LLMs cannot determine if error is retryable or user-fixable.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | 2026-07-28+ | v2 |
No tool annotations (readOnlyHint, idempotentHint) despite all tools being read-only and safe to retry. Agents cannot infer safety properties.