Read a page
shamela_get_pageجلب صفحة
Fetch the full text of one Shamela page (book_id, page_id). Returns body (matn), foot (footnotes), comment (user notes), printed_page label, prev/next page ids, the chapter ancestor chain (root → leaf), and the category path. Set keep_html=true to preserve inline markers; default strips them. The book must be downloaded (BOOK_NOT_DOWNLOADED otherwise). For batch reads use shamela_get_pages_range; for full chapters use shamela_get_book_section. Long pages: the body is split into parts of ~4000 chars — body_part selects the 1-based part, and body_total_parts/body_has_more report the split (footnote/comment come with part 1; a _display hint advises when to ask the user how to show it).
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| book_id | Yes | The book id. | |
| page_id | Yes | The page id (Lucene/SQLite internal id, not the printed page number). | |
| body_part | No | For long pages: when the body exceeds ~4000 characters it is split into parts. Pass the 1-based part to read (default 1). The response reports body_part/body_total_parts/body_has_more; request the next part by incrementing. The footnote/comment are returned with part 1. | |
| keep_html | No | If true, preserve inline HTML markers (e.g. <span data-type='title'>). Default false strips them for plain Arabic display. | |
| response_format | No | Output format for the human-readable text. 'markdown' (default) is best for direct display; 'json' returns the same data as a single JSON code block; 'none' skips the rendered text entirely and returns a one-line pointer, leaving `structuredContent` as the whole answer. The structured data is returned in `structuredContent` regardless of this setting, so a caller that parses it should pass 'none' — the character budget is measured over BOTH channels, and the unread copy is otherwise spending most of it. Requires the 'response_format.none' capability (see shamela_brief). | markdown |