Two transports over one read-only engine: a GET-only JSON API, and twelve MCP tools for an AI assistant. Both return the same shapes, so a client that knows one knows the other.
Every response is complete or it is an error. Nothing is truncated, sampled, or summarized. A query matching more than the cap is refused outright, with the exact count, rather than returning a partial list.
Every endpoint that returns text returns the same envelope: the rows, a per-edition provenance map added once (not repeated per row), and the engine build that produced it.
locatorWhere the row lives in its own source file - the receipt for the citation.confidenceHigh for a direct row; Flagged when the result was reached through cross-edition alignment or a gap. A Flagged row always carries a caveat.caveatPresent only when something must be said out loud - a renumbering, a recension divergence, or an absence. Never silent.engineThe build that produced the result, so a citation stays re-derivable.All endpoints are GET. There is no mutation surface of any kind. A book may be a USFM code or a full English name, in any case (MAT, mat, Matthew).
| Endpoint | Parameters | Returns |
|---|---|---|
/verse |
book chapter verse editions |
Verbatim text for one reference, one citation per requested edition. Also reports prev_ref and next_ref for verse-by-verse reading; either is omitted when there is no neighbour. |
/passage |
book start_chapter start_verse end_chapter end_verse editions |
The same, for a contiguous range within one book. Verse boundaries preserved, never concatenated. |
/concord |
query corpus by phrase window |
Every occurrence of a lemma, dStrong, or surface form - or of a phrase, with window words allowed between tokens (0 = adjacent). Results are returned in canonical order: book, then chapter, verse, and word position. |
/parse |
book chapter verse word corpus |
dStrong and expanded morphology for every word in a verse, or one word if word is given. |
/attest |
book chapter verse word corpus |
Manuscript attestation as neutral data - the Type code and the editions that carry each word. |
/interlinear |
book chapter verse word corpus |
Row-aligned original text, transliteration, lemma, gloss, grammar, and manuscript attestation - the complete word row. Also reports prev_ref and next_ref, scoped to the requested corpus, so stepping never lands on a verse the corpus carries no words for. Returns words rather than citations. |
/define |
dstrong |
One lexicon entry: lemma, transliteration, gloss, and definition where licensing permits. |
/books |
none | The canonical 66-book registry with every accepted name variant. |
editionsComma-separated verse-text editions: KJV, ASV, WEB, BSB, Brenton.corpusOne word-tagged corpus: TAGNT (Greek NT), TAHOT (Hebrew OT), Swete (LXX surface), OSS-LXX-lemma (LXX lemma).byMatch column override: lemma, dstrong, or surface. Omit to auto-detect. surface is never guessed - ask for it explicitly.word1-based word number within the verse. Omit for every word.Twelve tools over the same engine. Connect a client to https://orthotomeo.app/mcp - see the setup steps.
| Tool | Expects | Does |
|---|---|---|
resolve_ref | book chapter verse | Reports where one canonical reference lives in every edition, and where it does not exist. Absence is data, not an error. |
get_verse | book chapter verse editions[] | Verbatim text with provenance, one citation per requested edition. |
get_passage | book start_chapter start_verse end_chapter end_verse editions[] | The same across a contiguous single-book range. |
concord_lemma | query corpus by | Complete-or-fail concordance for a lemma or Strong's number. Route lookups here rather than recalling occurrences. |
concord_phrase | tokens[] corpus window | Every verse where the ordered lemmas co-occur within window words. |
count | query corpus | Occurrence tally, total and per book, for the identical query concord_lemma would match. Never capped. |
parse | book chapter verse word corpus | dStrong plus expanded morphology. LXX corpora carry no morphology and are always flagged. |
lemmatize | book chapter verse corpus | The ordered lemma list for a verse. Words with no lemma are omitted, never invented. |
attestation | book chapter verse word corpus | Manuscript attestation as neutral text-critical data. |
interlinear | book chapter verse word corpus | Row-aligned original, transliteration, gloss, grammar, and manuscript attestation. |
lexicon_lookup | dstrong | One lexicon entry. |
cite | citations[] | Renders citations as fully-attributed Markdown for pasting into notes. |
The hosted instance is public and unauthenticated, so it runs with these bounds. Run it yourself and there are none - see below.
A query over the result cap is refused with the exact match count - never silently truncated, which would break complete-or-fail. Call count first for a broad query; it is never capped, because it returns numbers rather than citations.
The engine is open source and builds from one repository. A local build reads the same corpus with no rate limit and no result cap, so a study that genuinely needs every occurrence of a common word belongs there.
Look up verses, run concordances, parse, and check attestation from a terminal. Every subcommand also takes --json for the same envelope the API returns.
A native launcher that starts the engine locally and opens this same interface in your browser. Nothing leaves your machine.
Run the twelve tools locally against your own database instead of the hosted instance.
Import the engine package directly and embed it in your own program.
You supply the corpus files yourself - each is separately licensed, and the repository documents exactly what is needed and where it goes. Build instructions are on GitHub.