{"name":"Scripture Agent","version":"0.1.0","description":"Verifiable Scripture and a Bible knowledge graph — resolves passages by reference/translation (issuer-signed, commitment-verified), answers questions from Scripture with verified citations, and serves entities, relationships, and verse-grounded trust/character signals as signed credentials.","provider":{"organization":"Agentic Primitives — Scripture Demo","url":"https://scripture.faithnet.io"},"capabilities":{"streaming":true,"pushNotifications":true,"extensions":[{"uri":"https://agenticprimitives.org/a2a/pairwise-asker/v1","description":"Routed asks may name the asker by a pairwise subject derived for this audience, with no credential. Such an asker is public: it grants nothing.","required":false,"params":{"audience":"https://scripture.faithnet.io"}},{"uri":"https://faithnet.io/a2a/reader-proof/v1","description":"Licensed editions are read by an asker who proves, in zero knowledge and under a pen name, that it holds a valid reader's card from the edition's publisher. Take a challenge, present over it, and send the presentation in the skill's `proof` argument.","required":false,"params":{"challengeUrl":"https://scripture.faithnet.io/credential/challenge","audience":"https://scripture.faithnet.io","credentialType":"lbsb-reader","issuerKeyIds":["issuer-key:sd-jwt:lbsb-1"],"editions":["lbsb"]}}],"extendedAgentCard":false},"defaultInputModes":["text/plain","application/json"],"defaultOutputModes":["text/plain","application/json"],"skills":[{"id":"list-translations","name":"List translations","description":"The translations this agent serves (its list-editions editions that have a whole-chapter reader form) — each as the Free Use Bible API lists it (id, name, language, text direction, licence, website, number of books and verses), with the release received. Args: none. Send a message whose data part is { \"skill\": \"list-translations\", \"args\": { … } }; the reply's data part is the result.","tags":["scripture","bible","verifiable-content","read"]},{"id":"list-books","name":"List books","description":"A translation's books, in its own order, with chapter ranges — the Free Use Bible API's books.json. Args: translationId. Send a message whose data part is { \"skill\": \"list-books\", \"args\": { … } }; the reply's data part is the result.","tags":["scripture","bible","verifiable-content","read"]},{"id":"read-chapter","name":"Read a chapter","description":"One chapter in full — headings, verses, poetry, words of Jesus, footnotes, audio links, the next and previous chapter — in the Free Use Bible API's chapter shape, plus `verification`: each verse's commitment over its words and its leaf in the translation's corpus, the corpus root, and (includeProofs) each leaf's proof into that root. Args: translationId, book, chapter, includeProofs. Send a message whose data part is { \"skill\": \"read-chapter\", \"args\": { … } }; the reply's data part is the result.","tags":["scripture","bible","verifiable-content","read"]},{"id":"translation-attestation","name":"Translation attestation","description":"What a translation's corpus root rests on: the corpus (root, verse count, normalization), the provenance (source, release received, the received bytes' sha256, licence, verses omitted or refused) and the CorpusAttestation this agent signed over the root through its key delegate. Args: translationId. Send a message whose data part is { \"skill\": \"translation-attestation\", \"args\": { … } }; the reply's data part is the result.","tags":["scripture","bible","verifiable-content","read"]},{"id":"audio-timings","name":"Audio timings","description":"Where each verse starts in a chapter's recording, for one reader (narrator). Args: translationId, book, chapter, reader. Send a message whose data part is { \"skill\": \"audio-timings\", \"args\": { … } }; the reply's data part is the result.","tags":["scripture","bible","verifiable-content","read"]},{"id":"read-book","name":"Read a book","description":"A whole book, every chapter as received — what a reader keeps to read offline (one book per ask). Args: translationId, book. Send a message whose data part is { \"skill\": \"read-book\", \"args\": { … } }; the reply's data part is the result.","tags":["scripture","bible","verifiable-content","read"]},{"id":"list-datasets","name":"List datasets","description":"The datasets held beside the text (open-cross-ref, theographic), each with its licence. Args: none. Send a message whose data part is { \"skill\": \"list-datasets\", \"args\": { … } }; the reply's data part is the result.","tags":["scripture","bible","verifiable-content","read"]},{"id":"read-dataset","name":"Read a dataset entry","description":"A dataset's entry as received: a chapter (`JHN/3`), an entity (`people/nicodemus_2204`), or a list (`books`, `people`). Args: dataset, path. Send a message whose data part is { \"skill\": \"read-dataset\", \"args\": { … } }; the reply's data part is the result.","tags":["scripture","bible","verifiable-content","read"]},{"id":"place-geometry","name":"Place geometry","description":"Where a biblical place is, as GeoJSON, with where that came from and how sure the match is: OpenBible.info's geometry for the place (CC BY 4.0; matched by its own file name, confidence 1), else — when exactly one Theographic place has that name — its coordinates as a point (CC BY-SA 4.0; confidence 0.8, said so). A name several places share is refused, not guessed. Args: name. Send a message whose data part is { \"skill\": \"place-geometry\", \"args\": { … } }; the reply's data part is the result.","tags":["scripture","bible","verifiable-content","read"]},{"id":"verse-interpretations","name":"Verse interpretations","description":"Why the edition reads a verse as it does (2026-10-25): per verse, the published rendering and, beside it, the interpretation record — each question the edition had to decide there, the reading it chose (or that it keeps the question open), the alternatives it retained, the writings and claims behind the choice, any declared policy use, and the note the decision owes the reader. Where an alternative is a path-named sibling edition (rbs-path-…), its id is named so a reader can read and verify that rendering too. Args: edition, reference. Send a message whose data part is { \"skill\": \"verse-interpretations\", \"args\": { … } }; the reply's data part is the result.","tags":["scripture","bible","verifiable-content","read"]},{"id":"chapter-interpretations","name":"Chapter interpretations","description":"The interpretation records of one chapter, for a reader that shows a chapter at a time (2026-10-25): every verse of the chapter that carries one — the questions the edition had to decide there (each with its status: decided for this edition, open, or left unresolved by policy), the reading it chose with the note it owes the reader, the alternatives it kept, the writings consulted (grouped by work, with the cited claims and their quoted spans), the story paths over the verse (origin, who they are attributed to, their choices and assumptions, whether they change the rendering), and the compatibility between candidates — with the verse's text and stage beside it. A chapter with no record answers an empty list. Documented interpretations within the declared corpus, never all possible ones; never a score. Args: edition, book, chapter. Send a message whose data part is { \"skill\": \"chapter-interpretations\", \"args\": { … } }; the reply's data part is the result.","tags":["scripture","bible","verifiable-content","read"]},{"id":"interpretation-index","name":"Interpretation index","description":"Which verses of an edition carry an interpretation record, with counts (questions, decided, open, paths) — so a reader can mark the chapters that have one before opening them. Args: edition. Send a message whose data part is { \"skill\": \"interpretation-index\", \"args\": { … } }; the reply's data part is the result.","tags":["scripture","bible","verifiable-content","read"]},{"id":"passage-writings","name":"Passage writings","description":"The writings around a chapter, not only related Scripture (2026-10-25): the book's own time (its window — the composition estimate, else the start of its earliest dated copy), the copies of the book (biblical scrolls, codices, early versions), the period writings — realia, period writers, Second Temple and Dead Sea Scrolls literature — whose records name the chapter or book, each dated and marked inside or after the window; the later interpretation that names it (Church fathers, rabbinic, medieval, Reformation), listed as RECEPTION and labelled so; the evidence store's commentary on the chapter's verses grouped by work, each with its date, its rights and a few cited claims (a quote only where the edition's rights allow one); and the reference chronology's entries at the chapter. Edition-independent: it is about the chapter, not a rendering. A chapter with no record answers writings: null. Documented writings within the declared corpus — never all that exist, never a judgement. Args: book, chapter, verse?. Send a message whose data part is { \"skill\": \"passage-writings\", \"args\": { … } }; the reply's data part is the result.","tags":["scripture","bible","verifiable-content","read"]},{"id":"verse-associations","name":"Verse associations","description":"What bears on one verse, from outside the edition (2026-10-25): the Dead Sea Scroll lines that COPY it (`scrolls` — line, manuscript, the published work), the non-biblical scroll lines that QUOTE it (`quotedIn` — the Community Rule quoting Isaiah 40:3, a pesher quoting Habakkuk; found by code from the letters the scroll preserves, never the editors' restorations, with the measured precision in `sources`), the same text elsewhere in the Bible (`parallels` — Kings ∥ Chronicles, the Synoptics, the Old Testament quoted in the New; UBS, references only) and the verse in Greek (`septuagint` — Swete, public domain). English verse numbering; Hebrew-numbered sources are converted. A scroll line's text is read from the publishing gateway by its line (publishing.locus {source}). Args: book, chapter, verse?. Send a message whose data part is { \"skill\": \"verse-associations\", \"args\": { … } }; the reply's data part is the result.","tags":["scripture","bible","verifiable-content","read"]},{"id":"verse-dossier","name":"Verse dossier","description":"Everything the agent holds about one verse in one edition, as typed evidence items (ap.scripture.verse-dossier.v1): the verse and its context, the story layer's state, the source words and concept rules, the knowledge base on its referents, the edition's note and interpretation record, the Septuagint, the scroll copies and quotations, the writings placed on the verse by citation, the register entries — each with its layer, its date and that date's basis, its licence. A join and a trim over existing records, never model-written; the evidence ask-verse answers from. Args: edition, reference. Send a message whose data part is { \"skill\": \"verse-dossier\", \"args\": { … } }; the reply's data part is the result.","tags":["scripture","bible","verifiable-content","read"]},{"id":"search-verses","name":"Search verses","description":"Verses by their words, in one translation this agent serves — ranked by the Seed Bible index where it carries the translation, else found in the translation's own text, and every verse read back from the signed corpus. Typesense's result shape (found, page, hits[].document). Args: translationId, q, book, perPage. Send a message whose data part is { \"skill\": \"search-verses\", \"args\": { … } }; the reply's data part is the result.","tags":["scripture","bible","verifiable-content","read"]},{"id":"publisher.describe","name":"Describe this publisher","description":"The publisher contract (scripture-indexed publishing): this agent as the scripture publisher — its works (each served edition, and the Bible places), the relations it indexes (translates, locates), its located items and their bounds. Args: none. Send a message whose data part is { \"skill\": \"publisher.describe\", \"args\": { … } }; the reply's data part is the result.","tags":["scripture","bible","verifiable-content","read"]},{"id":"publisher.works","name":"List works","description":"The works this publisher answers the contract for: each served edition (kind edition — its language, licence, attested corpus root and version) and the Bible places (kind features, OpenBible.info ancient places, named by the SHA-256 of their file). Args: kind. Send a message whose data part is { \"skill\": \"publisher.works\", \"args\": { … } }; the reply's data part is the result.","tags":["scripture","bible","verifiable-content","read"]},{"id":"publisher.work","name":"Read a work","description":"One work: an edition's description and its books (each chapter is a part), or the Bible places work. Args: work. Send a message whose data part is { \"skill\": \"publisher.work\", \"args\": { … } }; the reply's data part is the result.","tags":["scripture","bible","verifiable-content","read"]},{"id":"publisher.items","name":"Read a work's items","description":"An edition's chapter as blocks — each verse's words with its commitment and leaf in the attested corpus, each a `translates` reference to its verse — or, with no work, every Bible place in the contract envelope (geometry, the verses it is named in, its identification with OpenBible.info confidence). Paged. Args: work, part, cursor, limit. Send a message whose data part is { \"skill\": \"publisher.items\", \"args\": { … } }; the reply's data part is the result.","tags":["scripture","bible","verifiable-content","read"]},{"id":"publisher.at-verse","name":"What is at a verse","description":"Everything this publisher holds at a verse, or across a chapter (span): the verse in every served edition (blocks, relation translates, with its commitment) and the Bible places named there (features, relation locates, each with its identification — how sure the site is, and why; a disputed site is answered with its doubt, never guessed). Narrow by relation, kind or edition. Paged. Args: verse or span; relation, kind, edition. Send a message whose data part is { \"skill\": \"publisher.at-verse\", \"args\": { … } }; the reply's data part is the result.","tags":["scripture","bible","verifiable-content","read"]},{"id":"publisher.near","name":"Places near","description":"The Bible places inside a box, or within a radius of a point. Args: bbox, or point + radiusKm. Send a message whose data part is { \"skill\": \"publisher.near\", \"args\": { … } }; the reply's data part is the result.","tags":["scripture","bible","verifiable-content","read"]},{"id":"resolve-scripture-passage","name":"Resolve scripture passage","description":"Given a reference (e.g. \"John 3:16\") and an edition, return verified candidate descriptors, text (if entitled), and a signed citation.","tags":["scripture","verifiable-content","citation"]},{"id":"search-scripture","name":"Search scripture","description":"Find verses by their words in a committed public edition (bsb, web, kjv, asv, rbs …). Ranked by the Seed Bible index where it carries the edition; every verse is read back from the signed corpus, and a hit the corpus does not hold is dropped and counted. Args: q, edition, book (optional), limit (optional).","tags":["scripture","search","verifiable-content"]},{"id":"list-editions","name":"List editions","description":"The editions this agent serves: each committed corpus with its issuer, version, language, access policy, rights and corpus root. Public editions are free to read.","tags":["scripture","editions","verifiable-content"]},{"id":"ask-writings","name":"Ask over the writings (the default ask)","description":"THE DEFAULT ASK: every question that is not anchored to a verse, and any ask that names no skill, is answered here. Answer a question about a passage, a word, a writing or how a reading changed over time from EVERYTHING this agent holds: Scripture resolved and verified through the signed corpus; its versions (the Septuagint) and manuscript witnesses (Dead Sea Scroll copies and quotations); the writings of the passage's own time and of later readers, published on Source Publishing and indexed by verse, by name, by source word and by meaning; the chapter's writings record and the asker's chronology register. Seven recorded harness steps — classify, gather (code), select, compose, check (code), revise, answer. Every claim names its evidence; the layer of each writing (the text's own time or later) and every date come from the chronology, never the model; the check strikes an uncited claim, a date no cited item carries, a later writing cited for what a passage says, a quotation not held, and says what it struck. Over A2A: the question as text, and a data part { mode: 'writings', edition?, context: { role?, topic?, history? } }.","tags":["scripture","ask","writings","period-writings","reception","verifiable-content","citation"]},{"id":"ask-verse","name":"Ask about a verse","description":"USED WHEN THE ASK IS ANCHORED TO A VERSE: a plain ask whose context carries context.reference (an OSIS verse or a range of at most five verses of one chapter) or context.verses is answered here. A reader's question about ONE verse they have open (or a range of up to five), answered in seconds from the verse's precomputed dossier — the verse in the reader's edition and two either side, the story layer's state there (who is on stage, who 'he' is), the source words with their glosses and concept rules, the knowledge base on the people and places named, the edition's own note and interpretation record, the Septuagint and the Dead Sea Scroll copies and quotations, the writings placed on the verse by citation and the chronology's register — with ONE streamed Claude Haiku 5.5 call over it (the dossier a cached prefix, so a follow-up reads it from the cache). Every claim cites a dossier item; a code check strikes, in place and with its reason, an uncited claim, a later reading given as what the text says, a date no cited item carries, a quotation not held, five words in a row from another English edition's wording of the verse, and a pronoun the story layer contradicts. A question beyond the verse is not guessed at: it is answered with a nextStep to ask-writings. Over A2A: a data part { skill: 'ask-verse', args: { edition, reference, question, history?, role? } }; streamed (SendStreamingMessage: events who · dossier · delta · check · done) or whole (SendMessage).","tags":["scripture","ask","verse","study-companion","streaming","verifiable-content","citation"]},{"id":"character-trust-profile","name":"Character / trust profile","description":"Return an entity's multi-dimensional, verse-grounded trust profile (righteousness, wisdom, faithfulness, courage, truthfulness, repentance + actions) as a signed TrustProfileCredential.","tags":["trust","character","verifiable-content"]},{"id":"find-entities","name":"Find entities","description":"Search the Bible knowledge-graph vault for people, places, events, and organizations (optionally by kind or book).","tags":["knowledge-graph","search"]},{"id":"entity-graph","name":"Entity graph","description":"Return an entity with its ontology class inheritance, relationships, and attesting verses.","tags":["knowledge-graph","ontology","relationships"]},{"id":"signal-feedback","name":"Submit signal feedback","description":"Record a connected user's challenge/agreement on a trust signal as a signed feedback assertion (ERC-8004-style) carrying the (entity, signal, verse) target + verdict + proposed correction.","tags":["trust","feedback","verifiable-content","erc-8004"]},{"id":"challenge-signal","name":"Challenge a trust signal","description":"Validate a trust signal against Scripture, scoped strictly to its cited verse + entity, returning a verse-in-context check, verdict, and recommendation.","tags":["trust","audit","scripture"]}],"protocolVersion":"1.0","supportedInterfaces":[{"url":"https://scripture.faithnet.io/api/a2a","protocolBinding":"JSONRPC","protocolVersion":"1.0"}],"securitySchemes":{"homeSession":{"httpAuthSecurityScheme":{"scheme":"bearer","bearerFormat":"home-session","description":"A Home session presented as a bearer names the asking person; it grants nothing (spec 372 §0)."}}},"securityRequirements":[{"schemes":{"homeSession":{"list":[]}}}],"signatures":[{"protected":"eyJhbGciOiJFUzI1NiIsImtpZCI6IlJLUWJmQkNGXzB5ZGdQZDItNTdZMlhJQ0V6Z2ZLb3JFeGYyUWgteXNqamsifQ","signature":"RHVlugirN6uaPlAeXSG4C_sMAU9yHL7PT2pl3PYbLIBzEHSlrYC1LgRJUoqa5vJzrG68UAraO1fn-GbQMO69Pg"}]}