Skip to main content
Glama
2yousefreda

Islamic Content MCP Server

islamhouse_library

Retrieve Islamic books, audios, videos, fatwas, articles, and author metadata from IslamHouse Library. Filter by type, language, category, author, and popularity.

Instructions

Access IslamHouse Library for books, audios, videos, fatwas, articles, and author metadata. Excludes Quran recitations (use 'islamhouse_quran') and Hadith texts (use 'hadeethenc_services').

Behavior: Read-only, idempotent, public access (no auth/rate limits). Cached dynamically with real-time freshness. Fallback to English on missing translations; returns empty arrays for unknown IDs; returns 400 error payload on invalid actions or malformed parameters.

Usage Guidelines:

  • Use for: Scholarly books, articles, fatwas, multimedia, and author biographies.

  • Do NOT use for: Raw Quran text/audio ('islamhouse_quran' / 'quran_services') or Hadith collections ('hadeethenc_services').

Parameters & Enums:

  • action: API operation (see Action Groups below).

  • type: Content format enum: books, audios, videos, fatwas, articles.

  • period: Trending window enum: daily, weekly, monthly.

  • sort: Ordering enum: popular, newest, oldest.

  • kind: Scope filter enum: main, sub.

  • language, siteLang, contentLang, slang, locale: 2-letter ISO-639-1 codes (e.g., 'en', 'ar').

  • page, limit: Integer pagination controls.

  • id, categoryId, authorId: Positive integer identifiers.

Action Groups & Returns:

  • Taxonomy (list_categories, list_types, get_categories_tree): Requires language -> Array of { id: number, name: string, parentId?: number }.

  • Listings (list_items, get_latest_items, get_highlighted_items): Uses page, limit, type, [categoryId/authorId/period/sort/contentLang] -> { data: ItemSummary[], total: number, page: number }.

  • Aggregations (get_items_count): Uses type, [categoryId/contentLang] -> { type: string, total: number }.

  • Details (get_item_details, get_item_attachments, get_item_translations): Requires id, [language] -> Detailed { id, title, description, attachments: Attachment[], locales: string[] }.

  • Authors (get_author_details, list_authors): Uses id, page, limit, [language, kind, locale, sort] -> Author profile with { id, name, biography, itemsCount: number }.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
idNo
kindNo
pageNo
sortNo
typeNo
limitNo
slangNo
actionYesRequired. Action to perform, e.g. 'get_types', 'get_categories', 'get_categories_tree', 'get_child_categories', 'get_category_basic', 'get_sub_categories', 'get_category_types', 'get_category_languages', 'list_items', 'get_author_items', 'get_category_items', 'get_latest_items', 'get_highlighted_items', 'get_items_count', 'get_item_details', 'get_item_attachments', 'get_item_tree', 'get_item_card_translations', 'get_item_translations', 'get_author_details', 'list_authors', 'get_author_card_translations', 'get_author_available_types', 'get_author_available_locales', 'list_languages', 'get_language_terms', 'get_language_availability'
localeNo
periodNo
authorIdNo
languageNo
siteLangNo
categoryIdNo
contentLangNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / action / description
      Previous value: -"Required. Action to perform, e.g. 'get_types', 'get_categories', 'get_categories_tree', 'get_child_categories', 'get_category_basic', 'get_sub_categories', 'get_category_types', 'get_category_languages', 'list_items', 'get_author_items', 'get_category_items', 'get_latest_items', 'get_highlighted_items', 'get_items_count', 'get_item_details', 'get_item_attachments', 'get_item_tree', 'get_item_card_translations', 'get_item_translations', 'list_authors', 'get_author_details', 'get_author_card_translations', 'get_author_available_types', 'get_author_available_locales', 'list_languages', 'get_language_terms', 'get_language_availability'"New value: +"Required. Action to perform, e.g. 'get_types', 'get_categories', 'get_categories_tree', 'get_child_categories', 'get_category_basic', 'get_sub_categories', 'get_category_types', 'get_category_languages', 'list_items', 'get_author_items', 'get_category_items', 'get_latest_items', 'get_highlighted_items', 'get_items_count', 'get_item_details', 'get_item_attachments', 'get_item_tree', 'get_item_card_translations', 'get_item_translations', 'get_author_details', 'list_authors', 'get_author_card_translations', 'get_author_available_types', 'get_author_available_locales', 'list_languages', 'get_language_terms', 'get_language_availability'"
  2. Changed14 schema fields changedv1.1.12
    • removedInput schema / properties / authorId / description
      Removed value: -"Author ID"
    • removedInput schema / properties / categoryId / description
      Removed value: -"Category ID"
    • removedInput schema / properties / contentLang / description
      Removed value: -"Content language code (ISO-639-1)"
    • removedInput schema / properties / id / description
      Removed value: -"Positive integer identifier"
    • removedInput schema / properties / kind / description
      Removed value: -"Scope filter enum: main, sub"
    • removedInput schema / properties / language / description
      Removed value: -"Language code (ISO-639-1)"
    • removedInput schema / properties / limit / description
      Removed value: -"Pagination limit"
    • removedInput schema / properties / locale / description
      Removed value: -"Locale format (e.g. ar-SA)"
    • removedInput schema / properties / page / description
      Removed value: -"Page number"
    • removedInput schema / properties / period / description
      Removed value: -"Trending window enum: daily, weekly, monthly"
    • removedInput schema / properties / siteLang / description
      Removed value: -"Site language code (ISO-639-1)"
    • removedInput schema / properties / slang / description
      Removed value: -"Source language code (ISO-639-1)"
    • removedInput schema / properties / sort / description
      Removed value: -"Ordering enum: popular, newest, oldest"
    • removedInput schema / properties / type / description
      Removed value: -"Content format enum: books, audios, videos, fatwas, articles"
  3. Changed14 schema fields changedv1.1.11
    • addedInput schema / properties / authorId / description
      Added value: +"Author ID"
    • addedInput schema / properties / categoryId / description
      Added value: +"Category ID"
    • addedInput schema / properties / contentLang / description
      Added value: +"Content language code (ISO-639-1)"
    • addedInput schema / properties / id / description
      Added value: +"Positive integer identifier"
    • addedInput schema / properties / kind / description
      Added value: +"Scope filter enum: main, sub"
    • addedInput schema / properties / language / description
      Added value: +"Language code (ISO-639-1)"
    • addedInput schema / properties / limit / description
      Added value: +"Pagination limit"
    • addedInput schema / properties / locale / description
      Added value: +"Locale format (e.g. ar-SA)"
    • addedInput schema / properties / page / description
      Added value: +"Page number"
    • addedInput schema / properties / period / description
      Added value: +"Trending window enum: daily, weekly, monthly"
    • addedInput schema / properties / siteLang / description
      Added value: +"Site language code (ISO-639-1)"
    • addedInput schema / properties / slang / description
      Added value: +"Source language code (ISO-639-1)"
    • addedInput schema / properties / sort / description
      Added value: +"Ordering enum: popular, newest, oldest"
    • addedInput schema / properties / type / description
      Added value: +"Content format enum: books, audios, videos, fatwas, articles"
  4. Addedv1.1.2

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Since no annotations are provided, the description carries the full burden. It discloses key behavioral traits: 'Read-only, idempotent, public access (no auth/rate limits). Cached dynamically with real-time freshness. Fallback to English on missing translations; returns empty arrays for unknown IDs; returns 400 error payload on invalid actions or malformed parameters.' This covers safety, error handling, and caching behavior comprehensively.

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 long, but it is organized into clearly labeled sections (Behavior, Usage Guidelines, Parameters & Enums, Action Groups & Returns) and front-loaded with the core purpose and exclusions. While every section earns its place, the density of information makes it slightly less concise than it could be. A tight, structured 4.

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 (15 parameters, many actions) and the lack of an output schema, the description is exceptionally complete. It provides return shapes for each action group (e.g., taxonomy returns array of {id, name, parentId?}, listings return {data, total, page}, details return {id, title, description, attachments, locales}), plus error behavior and fallback rules. Nothing an agent needs to invoke it correctly is missing.

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?

The schema coverage is only 7%, so the description must compensate. It does so extensively: it defines each parameter (type, period, sort, kind, language variants, pagination, IDs) with enums and formats, and further groups actions and specifies which parameters apply to each action group (e.g., 'Listings' use page/limit/type, 'Details' require id). This adds substantial meaning beyond the bare 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's purpose: 'Access IslamHouse Library for books, audios, videos, fatwas, articles, and author metadata.' It immediately differentiates itself from siblings by naming exclusions: 'Excludes Quran recitations (use 'islamhouse_quran') and Hadith texts (use 'hadeethenc_services').' This makes the tool's scope unambiguous and distinct.

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?

A dedicated 'Usage Guidelines' section explicitly lists what to use the tool for and what not to use it for, citing the exact sibling tools to use instead ('islamhouse_quran' / 'quran_services' and 'hadeethenc_services'). This provides clear, actionable routing guidance with no ambiguity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.