Skip to main content
Glama

Read Scripture word for word from a stored text

read_scripture
Read-onlyIdempotent

PURPOSE: Read the Bible word for word from a stored text, never from memory: a passage by reference, a verse in its context, every verse containing given words, one verse side by side in several translations, the Hebrew or Greek words behind a verse, the passages readers link to it, a check of whether quoted words are real Scripture, the list of stored translations, or a recommendation of which translation to read. The default text is the King James Version the app ships; 69 stored public domain or freely licensed Bibles, with the Hebrew and Greek, are read by translation or language. Copyrighted Bibles (the NIV, NASB, NIrV, Amplified and every other licensed version) are read in the app and are never returned by any tool. WHEN TO USE: whenever you will quote or examine Scripture and know the reference or the words, or need to check a quotation before repeating it. WHEN NOT: verses for a feeling or need, a topic, the words of Jesus on a theme, or the verse of the day: find_scripture_for. A parable, doctrine or the gospel explained: learn_the_faith. MODES (required parameters in brackets): passage [reference] one verse, a range inside one chapter, or a whole chapter. context [reference] the passage with the verses around it (around, default 2). search [query] verses containing all the words, or an exact phrase in double quotes, a page at a time (book, testament, whole_words, limit, cursor, parallel). compare [reference] one verse in up to six translations side by side (translations, include_original). original_words [reference] each Hebrew or Greek word with its Strong's number, lexicon entry, parsing and the KJV words it became (strong keeps one number, e.g. "G25"). cross_references [reference] linked passages from OpenBible.info with votes (limit, include_text). verify [quote] checks the words against every held translation (reference optional). translations [none] every stored translation with language, canon and license (language filters; include_license_text). which_translation [optional need: first_time, study, memorize, children, listen, free, spanish, portuguese, or the person's own words] recommends translations in the house's own words with where each can be read (public domain here, in the app, or not available yet) and the page https://living-bread.org/bible-translations; it never returns licensed text. PARAMETERS: translation and language apply to passage, context, search and cross_references; compare takes a list in translations. Ranges across chapters are not supported. OUTPUT: mode, answered_by (the implementation used) and that mode's fields: passage gives ref, text, verses [{verse, text}], translation, translation_name, source, read_more; context gives passage, before and after; search gives total_matches, results and next_cursor; compare gives rows per translation; original_words gives verses[].words with strong, lemma, definition and morph; cross_references gives references with votes; verify gives verdict (verbatim, close_but_differs with a word diff, or not_found), best_match with SHA-256 hashes; translations gives the list. Every Scripture answer carries evidence (translation, license, corpus version, SHA-256 per passage) and content_layers. BEHAVIOR: read only and deterministic; the texts are bundled, no network call. An unparseable reference, an unknown translation, or a book a translation does not hold returns an error with try_instead; a search with no match returns count 0 and result_state empty. Parameters a mode does not use are ignored and named in ignored_params. NETWORK MODE languages [optional language]: which languages hold a stored Bible, under what license, and which Gospel pathway pages exist, so you never promise a text that is not held (answered by kingdom_languages). Access: no sign-in; shared limit of 300 requests a minute per IP.

Input Schema

NameRequiredDescriptionDefault
bookNoFor search: one book to search, e.g. "Psalms", "1 Cor".
modeYesWhich kind of answer: passage, context, search, compare, original_words, cross_references, verify, translations, which_translation, languages. Each mode, and the parameters it needs, is explained in the description.
needNoFor which_translation: what the reader needs, in a few words or one of first_time, study, memorize, children, listen, free, spanish, portuguese (default first_time).
limitNoFor search (page size, default 10, max 20) and cross_references (default 6, max 12).
queryNoFor search: words that must all appear ("mercy truth"), or an exact phrase in double quotes. Case-insensitive.
quoteNoFor verify: the exact words to check, as they would be quoted.
aroundNoFor context: verses to read on each side (default 2).
cursorNoOpaque paging token: next_cursor from the previous answer of the same call. Omit for the first page.
strongNoFor original_words: keep only the words with this Strong's number, e.g. "G25" or "H1254".
languageNoThe person's BCP-47 language, e.g. "es", "pt-BR", "sw". Picks the best stored public domain or freely licensed Bible for it; translation wins over it.
parallelNoFor search: a translation id read beside each verse found, e.g. "kjv".
referenceNoBook, chapter and optional verse or range as a reader writes it: "John 3:16", "Psalm 23", "1 Cor 13:4-7". Required for passage, context, compare, original_words and cross_references; optional for verify (the reference the words are attributed to).
testamentNoFor search: "old" or "new" to search one testament.
translationNoA stored translation id from read_scripture mode translations, e.g. "bsb", "web", "dra", "rv1909", "cuv". Default: the King James Version, or the best stored Bible for language.
whole_wordsNoFor search: true (default) matches whole words only; false matches inside words.
include_textNoFor cross_references: true (default) reads each linked passage; false returns references and votes only.
translationsNoFor compare: up to six translation ids, e.g. ["kjv","bsb","dra","rv1909"].
include_originalNoFor compare: true (default) adds the Hebrew or Greek line.
include_license_textNoFor translations: true returns each license statement in full.

Output Schema

NameRequiredDescriptionDefault
okNoAlways true on a successful answer (errors come back as isError, never here).
idsNoUp to 25 ids found in this answer, for follow-up calls.
modeYesThe mode that answered.
licenseNoLicense URL of the returned data (CC BY 4.0 unless stated).
evidenceNoPresent when Scripture was read: translation, canon, corpus version, attribution, and a SHA-256 per passage.
freshnessNoHow current the answer is: kind (scheduled | recently_observed | verified_live | record), retrieved_at, available_now (true only when activity was verified live).
source_urlNoThe first public web page this answer came from or points to.
visibilityNo"public" for shared data, "yours" for the signed-in believer's own data.
answered_byYesThe implementation that answered (the same tool name the signed-in endpoint lists).
attributionNoCredit line for the data: The Living Bread (living-bread.org).
next_actionsNoUp to 4 links the person can open next.
result_stateNo"empty" when nothing matched (count 0, no results); the text then says so plainly.
content_flagsNo["instruction_like_text_removed"] when retrieved text was withheld.
content_layersNoWhich fields are Scripture and which are human interpretation or reflection.
ignored_paramsNoParameters given that this mode does not use.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • changedInput schema / properties / mode / description
      Previous value: -"Which kind of answer: passage, context, search, compare, original_words, cross_references, verify, translations, languages. Each mode, and the parameters it needs, is explained in the description."New value: +"Which kind of answer: passage, context, search, compare, original_words, cross_references, verify, translations, which_translation, languages. Each mode, and the parameters it needs, is explained in the description."
    • changedInput schema / properties / mode / enum
      Previous value: -[
      -  "passage",
      -  "context",
      -  "search",
      -  "compare",
      -  "original_words",
      -  "cross_references",
      -  "verify",
      -  "translations",
      -  "languages"
      -]New value: +[
      +  "passage",
      +  "context",
      +  "search",
      +  "compare",
      +  "original_words",
      +  "cross_references",
      +  "verify",
      +  "translations",
      +  "which_translation",
      +  "languages"
      +]
    • addedInput schema / properties / need
      Added value: +{
      +  "description": "For which_translation: what the reader needs, in a few words or one of first_time, study, memorize, children, listen, free, spanish, portuguese (default first_time).",
      +  "maxLength": 80,
      +  "type": "string"
      +}
  2. Changed2 schema fields changed
    • changedInput schema / properties / mode / description
      Previous value: -"Which kind of answer: passage, context, search, compare, original_words, cross_references, verify, translations. Each mode, and the parameters it needs, is explained in the description."New value: +"Which kind of answer: passage, context, search, compare, original_words, cross_references, verify, translations, languages. Each mode, and the parameters it needs, is explained in the description."
    • changedInput schema / properties / mode / enum
      Previous value: -[
      -  "passage",
      -  "context",
      -  "search",
      -  "compare",
      -  "original_words",
      -  "cross_references",
      -  "verify",
      -  "translations"
      -]New value: +[
      +  "passage",
      +  "context",
      +  "search",
      +  "compare",
      +  "original_words",
      +  "cross_references",
      +  "verify",
      +  "translations",
      +  "languages"
      +]
  3. Added

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive/closed-world, and the description adds real behavior beyond them: texts are bundled with no network call, errors return try_instead, an empty search returns count 0 with result_state empty, unused parameters are ignored and named in ignored_params, no sign-in required, and a shared 300 req/min per IP limit. Copyrighted Bibles never being returned by any tool is an important constraint disclosed nowhere else.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is front-loaded and header-structured (PURPOSE / WHEN TO USE / MODES / PARAMETERS / OUTPUT / BEHAVIOR), which helps scanning a ten-mode tool. However the MODES and OUTPUT sections largely re-encode what the input schema and output schema already state, so a meaningful share of this dense ~400-word block does not earn its place.

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?

For a 19-parameter, 10-mode tool with an output schema and full annotations, the description still covers the gaps: routing, mode/parameter coupling, error semantics, paging via next_cursor, licensing/evidence fields, and access limits. An agent has everything needed to select a mode and call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so per-parameter meaning is already documented, but the description adds cross-parameter rules the schema cannot express: which parameters apply to which modes, that compare takes the list form of translations, that translation wins over language, and that cross-chapter ranges are unsupported. The MODES list restates the schema's own "For X:" prefixes, so it is additive rather than a full 5.

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?

Opens with an explicit verb+resource ("Read the Bible word for word from a stored text, never from memory") and then enumerates all ten answer shapes the tool can produce. It names the siblings it is not (find_scripture_for, learn_the_faith) so an agent can route without opening any schema.

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?

Has dedicated WHEN TO USE and WHEN NOT sections, and the WHEN NOT side names the alternative tool plus the condition that selects it (feelings/topics/verse-of-the-day → find_scripture_for; parable/doctrine → learn_the_faith). Nothing about routing is left to inference.

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.

Resources