MCP 서버

orthotomeo

io.github.jrainsberger/orthotomeo
교육 지식 및 문서 검색 및 리서치 공개 · 연결 가능 MCP 2025-11-25

이 MCP로 할 수 있는 일

Supports scripture study across Greek New Testament, Hebrew Old Testament, and Septuagint corpora with verse retrieval, concordances, morphology, lexicon data, manuscript attestation, and citations.

attestation
Manuscript attestation
Returns the WHNT-style Type/Editions manuscript-tradition columns as neutral text-critical data (e.g. Mark 16:9-20 = Type KO) - which editions carry a word, with no argument for or against a variant.
읽기 전용
입력 스키마
{'type': 'object', 'required': ['book', 'chapter', 'verse', 'corpus'], 'properties': {'book': {'type': 'string', 'description': 'USFM book code (e.g. GEN, PSA, MAT, REV) or the full English book name, any case (e.g. Genesis, matthew)'}, 'word': {'type': ['null', 'integer'], 'description': '1-based word_no within the verse; omit for every word in the verse'}, 'verse': {'type': 'integer', 'description': 'verse number'}, 'corpus': {'type': 'string', 'description': 'word-tagged corpus: TAGNT, TAHOT, Swete, OSS-LXX-lemma'}, 'chapter': {'type': 'integer', 'description': 'chapter number'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['citations', 'engine'], 'properties': {'engine': {'type': 'string'}, 'sources': {'type': 'object', 'additionalProperties': {'type': 'object', 'required': ['name', 'file', 'license'], 'properties': {'file': {'type': 'string'}, 'name': {'type': 'string'}, 'license': {'type': 'string'}, 'attribution': {'type': 'string'}, 'homepage_url': {'type': 'string'}}, 'additionalProperties': False}}, 'citations': {'type': ['null', 'array'], 'items': {'type': 'object', 'required': ['ref', 'edition', 'text', 'locator', 'confidence'], 'properties': {'ref': {'type': 'object', 'required': ['book', 'chapter', 'verse'], 'properties': {'book': {'type': 'string'}, 'verse': {'type': 'integer'}, 'chapter': {'type': 'integer'}}, 'additionalProperties': False}, 'text': {'type': 'string'}, 'lemma': {'type': 'string'}, 'caveat': {'type': 'string'}, 'dstrong': {'type': 'string'}, 'edition': {'type': 'string'}, 'grammar': {'type': 'string'}, 'locator': {'type': 'string'}, 'translit': {'type': 'string'}, 'confidence': {'type': 'string'}, 'attestation': {'type': 'string'}, 'manuscripts': {'type': 'string'}}, 'additionalProperties': False}}}, 'additionalProperties': False}
cite
Format citation
Renders Citations (from any of the above tools) as quoted, fully-attributed Markdown bullets - the only sanctioned bridge from a query result to pastable study-document text.
읽기 전용
입력 스키마
{'type': 'object', 'required': ['citations'], 'properties': {'citations': {'type': 'array', 'items': {'type': 'object', 'required': ['ref', 'edition', 'text', 'locator', 'confidence'], 'properties': {'ref': {'type': 'object', 'required': ['book', 'chapter', 'verse'], 'properties': {'book': {'type': 'string'}, 'verse': {'type': 'integer'}, 'chapter': {'type': 'integer'}}, 'additionalProperties': False}, 'text': {'type': 'string'}, 'lemma': {'type': 'string'}, 'caveat': {'type': 'string'}, 'dstrong': {'type': 'string'}, 'edition': {'type': 'string'}, 'grammar': {'type': 'string'}, 'locator': {'type': 'string'}, 'translit': {'type': 'string'}, 'confidence': {'type': 'string'}, 'attestation': {'type': 'string'}, 'manuscripts': {'type': 'string'}}, 'additionalProperties': False}, 'description': 'Citations previously returned by another tool call, to render as a pastable reference block'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['text', 'engine'], 'properties': {'text': {'type': 'string'}, 'engine': {'type': 'string'}}, 'additionalProperties': False}
concord_lemma
Search concordance (lemma)
Complete-or-fail concordance: every words row in corpus whose lemma, dStrong, or (with by="surface") exact inflected surface form matches query. Route lemma/Strong's-number/surface-word lookups here, never by writing SQL or guessing occurrences from memory. This deployment caps one concordance result at 2000 occurrences and refuses anything broader, reporting the exact match count in the error. Call count first when a query might be broad - count is never capped.
읽기 전용
입력 스키마
{'type': 'object', 'required': ['query', 'corpus'], 'properties': {'by': {'type': 'string', 'description': 'optional match column override: lemma, dstrong, or surface. Omit for auto-detect (dStrong shape, else lemma) - surface must always be requested explicitly, it is never guessed'}, 'query': {'type': 'string', 'description': 'a lemma (e.g. ἄφεσις), a disambiguated Strong\'s number (e.g. G0859, H7225G), or (with by="surface") the exact inflected word as it appears in the verse'}, 'corpus': {'type': 'string', 'description': 'word-tagged corpus to search: TAGNT (Greek NT), TAHOT (Hebrew OT), Swete (LXX surface), OSS-LXX-lemma (LXX lemma)'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['citations', 'engine'], 'properties': {'engine': {'type': 'string'}, 'sources': {'type': 'object', 'additionalProperties': {'type': 'object', 'required': ['name', 'file', 'license'], 'properties': {'file': {'type': 'string'}, 'name': {'type': 'string'}, 'license': {'type': 'string'}, 'attribution': {'type': 'string'}, 'homepage_url': {'type': 'string'}}, 'additionalProperties': False}}, 'citations': {'type': ['null', 'array'], 'items': {'type': 'object', 'required': ['ref', 'edition', 'text', 'locator', 'confidence'], 'properties': {'ref': {'type': 'object', 'required': ['book', 'chapter', 'verse'], 'properties': {'book': {'type': 'string'}, 'verse': {'type': 'integer'}, 'chapter': {'type': 'integer'}}, 'additionalProperties': False}, 'text': {'type': 'string'}, 'lemma': {'type': 'string'}, 'caveat': {'type': 'string'}, 'dstrong': {'type': 'string'}, 'edition': {'type': 'string'}, 'grammar': {'type': 'string'}, 'locator': {'type': 'string'}, 'translit': {'type': 'string'}, 'confidence': {'type': 'string'}, 'attestation': {'type': 'string'}, 'manuscripts': {'type': 'string'}}, 'additionalProperties': False}}}, 'additionalProperties': False}
concord_phrase
Search concordance (phrase)
Complete-or-fail multi-word concordance: every occurrence, within one verse, of tokens (lemma strings) appearing in order within window intervening words of each other (window=0 = strictly adjacent). This is the tool for a phrase query like εἰς ἄφεσιν. This deployment caps one concordance result at 2000 occurrences and refuses anything broader, reporting the exact match count in the error. Call count first when a query might be broad - count is never capped.
읽기 전용
입력 스키마
{'type': 'object', 'required': ['tokens', 'corpus', 'window'], 'properties': {'corpus': {'type': 'string', 'description': 'word-tagged corpus to search: TAGNT, TAHOT, Swete, OSS-LXX-lemma'}, 'tokens': {'type': 'array', 'items': {'type': 'string'}, 'description': 'ordered lemma strings to find co-occurring within one verse, e.g. ["εἰς","ἄφεσις"]'}, 'window': {'type': 'integer', 'description': 'max words allowed between consecutive tokens; 0 = strictly adjacent'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['citations', 'engine'], 'properties': {'engine': {'type': 'string'}, 'sources': {'type': 'object', 'additionalProperties': {'type': 'object', 'required': ['name', 'file', 'license'], 'properties': {'file': {'type': 'string'}, 'name': {'type': 'string'}, 'license': {'type': 'string'}, 'attribution': {'type': 'string'}, 'homepage_url': {'type': 'string'}}, 'additionalProperties': False}}, 'citations': {'type': ['null', 'array'], 'items': {'type': 'object', 'required': ['ref', 'edition', 'text', 'locator', 'confidence'], 'properties': {'ref': {'type': 'object', 'required': ['book', 'chapter', 'verse'], 'properties': {'book': {'type': 'string'}, 'verse': {'type': 'integer'}, 'chapter': {'type': 'integer'}}, 'additionalProperties': False}, 'text': {'type': 'string'}, 'lemma': {'type': 'string'}, 'caveat': {'type': 'string'}, 'dstrong': {'type': 'string'}, 'edition': {'type': 'string'}, 'grammar': {'type': 'string'}, 'locator': {'type': 'string'}, 'translit': {'type': 'string'}, 'confidence': {'type': 'string'}, 'attestation': {'type': 'string'}, 'manuscripts': {'type': 'string'}}, 'additionalProperties': False}}}, 'additionalProperties': False}
count
Count occurrences
Occurrence tally (total + per-book breakdown) for the identical query concord_lemma would match. count.Total always equals len(concord_lemma(...)) - use this to sanity-check a concordance result, or when only the number matters.
읽기 전용
입력 스키마
{'type': 'object', 'required': ['query', 'corpus'], 'properties': {'by': {'type': 'string', 'description': 'optional match column override: lemma, dstrong, or surface, same as concord_lemma'}, 'query': {'type': 'string', 'description': 'a lemma, dStrong, or (with by="surface") exact inflected word, same as concord_lemma'}, 'corpus': {'type': 'string', 'description': 'word-tagged corpus: TAGNT, TAHOT, Swete, OSS-LXX-lemma'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['total', 'by_book'], 'properties': {'total': {'type': 'integer'}, 'by_book': {'type': 'object', 'additionalProperties': {'type': 'integer'}}}, 'additionalProperties': False}
get_passage
Get passage text
Returns get_verse's result for every canonical verse in a contiguous, single-book range, in order - verse boundaries preserved, never concatenated into one blob.
읽기 전용
입력 스키마
{'type': 'object', 'required': ['book', 'start_chapter', 'start_verse', 'end_chapter', 'end_verse', 'editions'], 'properties': {'book': {'type': 'string', 'description': 'USFM book code (e.g. GEN, PSA, MAT, REV) or the full English book name, any case (e.g. Genesis, matthew)'}, 'editions': {'type': 'array', 'items': {'type': 'string'}, 'description': 'verse-text editions to fetch verbatim text from: KJV, ASV, WEB, BSB, Brenton'}, 'end_verse': {'type': 'integer', 'description': 'last verse of the range, inclusive'}, 'end_chapter': {'type': 'integer', 'description': 'last chapter of the range, inclusive'}, 'start_verse': {'type': 'integer', 'description': 'first verse of the range, inclusive'}, 'start_chapter': {'type': 'integer', 'description': 'first chapter of the range, inclusive'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['citations', 'engine'], 'properties': {'engine': {'type': 'string'}, 'sources': {'type': 'object', 'additionalProperties': {'type': 'object', 'required': ['name', 'file', 'license'], 'properties': {'file': {'type': 'string'}, 'name': {'type': 'string'}, 'license': {'type': 'string'}, 'attribution': {'type': 'string'}, 'homepage_url': {'type': 'string'}}, 'additionalProperties': False}}, 'citations': {'type': ['null', 'array'], 'items': {'type': 'object', 'required': ['ref', 'edition', 'text', 'locator', 'confidence'], 'properties': {'ref': {'type': 'object', 'required': ['book', 'chapter', 'verse'], 'properties': {'book': {'type': 'string'}, 'verse': {'type': 'integer'}, 'chapter': {'type': 'integer'}}, 'additionalProperties': False}, 'text': {'type': 'string'}, 'lemma': {'type': 'string'}, 'caveat': {'type': 'string'}, 'dstrong': {'type': 'string'}, 'edition': {'type': 'string'}, 'grammar': {'type': 'string'}, 'locator': {'type': 'string'}, 'translit': {'type': 'string'}, 'confidence': {'type': 'string'}, 'attestation': {'type': 'string'}, 'manuscripts': {'type': 'string'}}, 'additionalProperties': False}}}, 'additionalProperties': False}
get_verse
Get verse text
Returns verbatim verse text with provenance for one canonical reference, one Citation per requested edition (KJV, ASV, WEB, BSB, Brenton).
읽기 전용
입력 스키마
{'type': 'object', 'required': ['book', 'chapter', 'verse', 'editions'], 'properties': {'book': {'type': 'string', 'description': 'USFM book code (e.g. GEN, PSA, MAT, REV) or the full English book name, any case (e.g. Genesis, matthew)'}, 'verse': {'type': 'integer', 'description': 'verse number'}, 'chapter': {'type': 'integer', 'description': 'chapter number'}, 'editions': {'type': 'array', 'items': {'type': 'string'}, 'description': 'verse-text editions to fetch verbatim text from: KJV, ASV, WEB, BSB, Brenton'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['citations', 'engine'], 'properties': {'engine': {'type': 'string'}, 'sources': {'type': 'object', 'additionalProperties': {'type': 'object', 'required': ['name', 'file', 'license'], 'properties': {'file': {'type': 'string'}, 'name': {'type': 'string'}, 'license': {'type': 'string'}, 'attribution': {'type': 'string'}, 'homepage_url': {'type': 'string'}}, 'additionalProperties': False}}, 'citations': {'type': ['null', 'array'], 'items': {'type': 'object', 'required': ['ref', 'edition', 'text', 'locator', 'confidence'], 'properties': {'ref': {'type': 'object', 'required': ['book', 'chapter', 'verse'], 'properties': {'book': {'type': 'string'}, 'verse': {'type': 'integer'}, 'chapter': {'type': 'integer'}}, 'additionalProperties': False}, 'text': {'type': 'string'}, 'lemma': {'type': 'string'}, 'caveat': {'type': 'string'}, 'dstrong': {'type': 'string'}, 'edition': {'type': 'string'}, 'grammar': {'type': 'string'}, 'locator': {'type': 'string'}, 'translit': {'type': 'string'}, 'confidence': {'type': 'string'}, 'attestation': {'type': 'string'}, 'manuscripts': {'type': 'string'}}, 'additionalProperties': False}}}, 'additionalProperties': False}
interlinear
Interlinear reading view
Returns a row-aligned reading view for every word in a verse (or one word, if word is given): original text, transliteration, gloss (via lexicon_lookup), grammar, and manuscript attestation stacked per word - the composed display shape for a study reading view, built on parse and lexicon_lookup rather than any new query. This is the most complete per-word view; use parse or attestation when you want only one of those facets.
읽기 전용
입력 스키마
{'type': 'object', 'required': ['book', 'chapter', 'verse', 'corpus'], 'properties': {'book': {'type': 'string', 'description': 'USFM book code (e.g. GEN, PSA, MAT, REV) or the full English book name, any case (e.g. Genesis, matthew)'}, 'word': {'type': ['null', 'integer'], 'description': '1-based word_no within the verse; omit for every word in the verse'}, 'verse': {'type': 'integer', 'description': 'verse number'}, 'corpus': {'type': 'string', 'description': 'word-tagged corpus: TAGNT, TAHOT, Swete, OSS-LXX-lemma'}, 'chapter': {'type': 'integer', 'description': 'chapter number'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['words', 'engine'], 'properties': {'words': {'type': ['null', 'array'], 'items': {'type': 'object', 'required': ['ref', 'edition', 'text', 'confidence'], 'properties': {'ref': {'type': 'object', 'required': ['book', 'chapter', 'verse'], 'properties': {'book': {'type': 'string'}, 'verse': {'type': 'integer'}, 'chapter': {'type': 'integer'}}, 'additionalProperties': False}, 'text': {'type': 'string'}, 'gloss': {'type': 'string'}, 'lemma': {'type': 'string'}, 'caveat': {'type': 'string'}, 'dstrong': {'type': 'string'}, 'edition': {'type': 'string'}, 'grammar': {'type': 'string'}, 'translit': {'type': 'string'}, 'confidence': {'type': 'string'}, 'attestation': {'type': 'string'}, 'manuscripts': {'type': 'string'}}, 'additionalProperties': False}}, 'engine': {'type': 'string'}, 'sources': {'type': 'object', 'additionalProperties': {'type': 'object', 'required': ['name', 'file', 'license'], 'properties': {'file': {'type': 'string'}, 'name': {'type': 'string'}, 'license': {'type': 'string'}, 'attribution': {'type': 'string'}, 'homepage_url': {'type': 'string'}}, 'additionalProperties': False}}}, 'additionalProperties': False}
lemmatize
List lemmas
Returns the ordered lemma list for a verse (words with no lemma are omitted, not fabricated).
읽기 전용
입력 스키마
{'type': 'object', 'required': ['book', 'chapter', 'verse', 'corpus'], 'properties': {'book': {'type': 'string', 'description': 'USFM book code (e.g. GEN, PSA, MAT, REV) or the full English book name, any case (e.g. Genesis, matthew)'}, 'verse': {'type': 'integer', 'description': 'verse number'}, 'corpus': {'type': 'string', 'description': 'word-tagged corpus: TAGNT, TAHOT, Swete, OSS-LXX-lemma'}, 'chapter': {'type': 'integer', 'description': 'chapter number'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['citations', 'engine'], 'properties': {'engine': {'type': 'string'}, 'sources': {'type': 'object', 'additionalProperties': {'type': 'object', 'required': ['name', 'file', 'license'], 'properties': {'file': {'type': 'string'}, 'name': {'type': 'string'}, 'license': {'type': 'string'}, 'attribution': {'type': 'string'}, 'homepage_url': {'type': 'string'}}, 'additionalProperties': False}}, 'citations': {'type': ['null', 'array'], 'items': {'type': 'object', 'required': ['ref', 'edition', 'text', 'locator', 'confidence'], 'properties': {'ref': {'type': 'object', 'required': ['book', 'chapter', 'verse'], 'properties': {'book': {'type': 'string'}, 'verse': {'type': 'integer'}, 'chapter': {'type': 'integer'}}, 'additionalProperties': False}, 'text': {'type': 'string'}, 'lemma': {'type': 'string'}, 'caveat': {'type': 'string'}, 'dstrong': {'type': 'string'}, 'edition': {'type': 'string'}, 'grammar': {'type': 'string'}, 'locator': {'type': 'string'}, 'translit': {'type': 'string'}, 'confidence': {'type': 'string'}, 'attestation': {'type': 'string'}, 'manuscripts': {'type': 'string'}}, 'additionalProperties': False}}}, 'additionalProperties': False}
lexicon_lookup
Lexicon lookup
Resolves a disambiguated Strong's number (dStrong) to its lexicon entry: lemma, transliteration, gloss, and - for a Greek entry only - a fuller definition (Abbott-Smith 1922, Public Domain). A Hebrew entry's definition field is always omitted: it is abridged BDB via Online Bible, which requires permission not yet obtained, so only its gloss is ever returned. Not to be confused with the get_verse/get_passage tools, which resolve a Ref to translated verse text, not a dStrong to a dictionary entry.
읽기 전용
입력 스키마
{'type': 'object', 'required': ['dstrong'], 'properties': {'dstrong': {'type': 'string', 'description': "a disambiguated Strong's number, e.g. G0859, H7225G"}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['dstrong', 'language', 'lemma', 'translit', 'gloss'], 'properties': {'gloss': {'type': 'string'}, 'lemma': {'type': 'string'}, 'dstrong': {'type': 'string'}, 'language': {'type': 'string'}, 'translit': {'type': 'string'}, 'definition': {'type': ['null', 'string']}}, 'additionalProperties': False}
parse
Parse morphology
Returns dStrong + expanded morphology (via the T6 morph_codes table) for every word in a verse, or one word if word is given. LXX corpora (Swete, OSS-LXX-lemma) are always Flagged - neither carries morphology.
읽기 전용
입력 스키마
{'type': 'object', 'required': ['book', 'chapter', 'verse', 'corpus'], 'properties': {'book': {'type': 'string', 'description': 'USFM book code (e.g. GEN, PSA, MAT, REV) or the full English book name, any case (e.g. Genesis, matthew)'}, 'word': {'type': ['null', 'integer'], 'description': '1-based word_no within the verse; omit for every word in the verse'}, 'verse': {'type': 'integer', 'description': 'verse number'}, 'corpus': {'type': 'string', 'description': 'word-tagged corpus: TAGNT, TAHOT, Swete, OSS-LXX-lemma'}, 'chapter': {'type': 'integer', 'description': 'chapter number'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['citations', 'engine'], 'properties': {'engine': {'type': 'string'}, 'sources': {'type': 'object', 'additionalProperties': {'type': 'object', 'required': ['name', 'file', 'license'], 'properties': {'file': {'type': 'string'}, 'name': {'type': 'string'}, 'license': {'type': 'string'}, 'attribution': {'type': 'string'}, 'homepage_url': {'type': 'string'}}, 'additionalProperties': False}}, 'citations': {'type': ['null', 'array'], 'items': {'type': 'object', 'required': ['ref', 'edition', 'text', 'locator', 'confidence'], 'properties': {'ref': {'type': 'object', 'required': ['book', 'chapter', 'verse'], 'properties': {'book': {'type': 'string'}, 'verse': {'type': 'integer'}, 'chapter': {'type': 'integer'}}, 'additionalProperties': False}, 'text': {'type': 'string'}, 'lemma': {'type': 'string'}, 'caveat': {'type': 'string'}, 'dstrong': {'type': 'string'}, 'edition': {'type': 'string'}, 'grammar': {'type': 'string'}, 'locator': {'type': 'string'}, 'translit': {'type': 'string'}, 'confidence': {'type': 'string'}, 'attestation': {'type': 'string'}, 'manuscripts': {'type': 'string'}}, 'additionalProperties': False}}}, 'additionalProperties': False}
resolve_ref
Resolve reference
Reports, for every per-verse content edition (KJV, ASV, WEB, BSB, Brenton, TAGNT, TAHOT, Swete, OSS-LXX-lemma), whether a canonical reference has a counterpart there and where. Cross-edition divergence (a T4b merge/renumber/divide, or a reference simply missing from an edition) is reported as Caveats - never a silent shift.
읽기 전용
입력 스키마
{'type': 'object', 'required': ['book', 'chapter', 'verse'], 'properties': {'book': {'type': 'string', 'description': 'USFM book code (e.g. GEN, PSA, MAT, REV) or the full English book name, any case (e.g. Genesis, matthew)'}, 'verse': {'type': 'integer', 'description': 'verse number'}, 'chapter': {'type': 'integer', 'description': 'chapter number'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['ref', 'addresses', 'caveats'], 'properties': {'ref': {'type': 'object', 'required': ['book', 'chapter', 'verse'], 'properties': {'book': {'type': 'string'}, 'verse': {'type': 'integer'}, 'chapter': {'type': 'integer'}}, 'additionalProperties': False}, 'caveats': {'type': ['null', 'array'], 'items': {'type': 'string'}}, 'addresses': {'type': ['null', 'array'], 'items': {'type': 'object', 'required': ['edition', 'file', 'locator', 'exists'], 'properties': {'file': {'type': 'string'}, 'exists': {'type': 'boolean'}, 'edition': {'type': 'string'}, 'locator': {'type': 'string'}}, 'additionalProperties': False}}}, 'additionalProperties': False}
추가됨
resolve_ref
2026년 9월 17일 12:42 PM
추가됨
parse
2026년 9월 17일 12:42 PM
추가됨
lexicon_lookup
2026년 9월 17일 12:42 PM
추가됨
lemmatize
2026년 9월 17일 12:42 PM
추가됨
interlinear
2026년 9월 17일 12:42 PM
추가됨
get_verse
2026년 9월 17일 12:42 PM
추가됨
get_passage
2026년 9월 17일 12:42 PM
추가됨
count
2026년 9월 17일 12:42 PM
추가됨
concord_phrase
2026년 9월 17일 12:42 PM
추가됨
concord_lemma
2026년 9월 17일 12:42 PM
추가됨
cite
2026년 9월 17일 12:42 PM
추가됨
attestation
2026년 9월 17일 12:42 PM