Skip to main content
Glama

Get a file

get_file
Read-only

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.

Input Schema

NameRequiredDescriptionDefault
kindYes
surahNoSurah number, 1-114; needed for all but audio
tafsirNoFor text: the Tafsir al-Muyassar under each ayah
reciterNoFor audio and timing: reciter id; defaults to the site's own
translationNoFor text: a translation id to put under each ayah, e.g. "hilali"; for data: the translation to give whole

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changed
    • changedInput schema / properties / kind / enum
      Previous value: -[
      -  "text",
      -  "audio"
      -]New value: +[
      +  "text",
      +  "audio",
      +  "timing",
      +  "font",
      +  "data"
      +]
    • changedInput schema / properties / reciter / description
      Previous 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"
    • changedInput schema / properties / surah / description
      Previous value: -"Surah number, 1-114; needed for text"New value: +"Surah number, 1-114; needed for all but audio"
    • changedInput schema / properties / translation / description
      Previous 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"
  2. Added

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnly=true, destructive=false, openWorld=false, so the safety profile is covered. The description adds real context beyond that: the tool returns links rather than content, the concrete file formats, and a default behavior ('reciter... defaults to the site's own'). It omits link lifetime, rate limits, and payload sizes, keeping it at a 4.

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?

Purpose is front-loaded and every clause maps to a distinct kind, so little is wasted. However, it is a single dense sentence with nested quoted terms and semicolons that is harder to scan than a short bulleted structure would be.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description correctly carries the burden of explaining return values (links, .txt, MP3, timing JSON, QCF V2 fonts) and does so for every kind. Minor gaps remain around what a returned link looks like and its validity period, which keeps it just under complete.

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's enum values carry no per-value descriptions, so the description is the only place that explains what each kind actually yields, and it does so thoroughly for all five. It also reinforces conditional parameter use (tafsir and translation for text, reciter for audio and timing, omitting surah for audio), adding meaning beyond the 80%-covered schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource ('Links to download a surah's files') and enumerates every value of the kind enum with concrete formats (.txt, MP3, JSON, fonts). This clearly separates it from siblings like get_ayah and get_recitation, which return content rather than download links. The only weakness is the slightly awkward 'Links to download' phrasing, but the intent is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied per kind: text/audio/timing/font/data each get a usage clause, and it explicitly says to 'leave out the surah for all of a reciter's' audio, which is a genuine when-to-use rule. It also flags 'data' as 'for developers'. It stops short of naming sibling alternatives (e.g. preferring get_recitation for playback) or stating exclusions, so it falls short of a 5.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.