# Narrow Highway > **Narrow Highway gives humans and agents a governed way to find, check, use, and preserve information without losing its source, authority, or history.** > > We serve families, children, and > communities that need us first — the people who cannot afford to be without it; the tool is free > and needs no account. > > Every answer is a **receipt, not "trust me"**: it eliminates what is not the answer, shows the > worked reasoning, and hands you a permanent, re-checkable seal. **Private in, verified out** — > personal context is stripped before text is stored or sent, and reapplied locally. Sovereign: runs > on your own box, offline, stdlib-first, no provider, no per-call cost. ## Agent covenant (the law of the agent plane — read GET /identity for the canonical form) If you are an agent using Narrow Highway, you are bound by this: **(1)** retrieve from corpora first; **(2)** distinguish citation from proof; **(3)** quarantine generated material; **(4)** request human authorization before writes; **(5)** produce a receipt for consequential actions; **(6)** carry provenance through every transformation; **(7)** respect local data and identity boundaries; **(8)** stop when evidence is incomplete. The kernel beneath it: find · distinguish · verify · preserve the trail · never silently upgrade authority. Identity keys are born on YOUR device — the server never mints or returns a private key; it holds only public keys and verifies signed challenges. The rare part is the combination: **verifiable + private + sovereign** — together. One engine, two surfaces: **narrowhighway.com** (the reach — accessible to all) and **narrowhighway.org** (the witness — Scripture, the original languages, Christ at the foundation). The engine verifies and finds; it does not generate the answer. ## Citable receipts Every verification is sealed and addressable. Cite a result by its content hash: - `GET /s/` — the human-readable, crawlable receipt page (verdict + worked trail + seal). - `GET /seal?hash=` — the same record as raw JSON. The hash is the proof: re-fetch and the bytes must match, or it is not that record. Claim text is redacted before sealing — receipts carry no personal data. ## API (JSON over HTTP, same-origin) **Start here — no schema needed:** `POST /audit` with `{"text":""}`. The engine extracts every unambiguously checkable claim from plain text, verifies the lot, and returns ONE sealed report (per-claim quote + verdict + worked trail + re-checkable seal). The fastest path from "I have a sentence" to "I have a receipt." Graduate to `POST /verify` when you can shape a structured claim. - `GET /capabilities` — **the authoritative count of everything here, computed live.** Every number carries a `means` line defining exactly what was counted (module vs. router alias vs. file), so a count can neither go stale nor be misread. Read this rather than trusting any number written in prose — including the round numbers below. - `POST /verify` — verify a claim across **~60 domains**, not just math. MATH form: `{"mode":"equality|inequality|derivative|integral|limit|solve","params":{...}}`. DOMAIN form: `{"steps":[{"id":"a","domain":"physics","spec":{"PHYS_VERIFY":{"mass_kg":10.0, "acceleration_m_per_s2":9.8,"claimed_force_N":98.0}}}]}` — domains include physics, medicine, finance, chemistry, law, statistics, nutrition, cryptography, geometry, astronomy, energy, networking, music_theory, ... Each domain reads its own artifact key (e.g. `MED_VERIFY`, `FIN_VERIFY`); the MCP `verify` tool description documents the shape. Returns `{verdict: HOLDS|BROKEN|INCOMPLETE|SYSTEM_ERROR, trail, seal:{content_hash, cite_url}}`. **`SYSTEM_ERROR` is ours, not yours.** `BROKEN` means we checked and the claim does not hold; `SYSTEM_ERROR` means OUR verifier could not run at all, and says nothing about whether the claim is true. Do not report it to a user as a refutation, and do not retry it as though the claim were at fault — it carries a `means` line and an `error_at` naming the step we failed on. `INCOMPLETE` means no verifier applied (`gap_at`). Only `BROKEN` is a finding about the caller. A public benchmark holds **0 false-positives across every domain** — the engine has never sealed a falsehood (e.g. `x/x = 1` is caught — undefined at x=0 — not sealed). Tolerances are clamped: a caller may tighten a check, never loosen one. - `POST /audit` — the Auditor: body `{"text":"..."}` (a paycheck, receipt, label, article). Deterministic extractors find every UNAMBIGUOUSLY checkable claim (sums, percentages, hourly/ annual pay, compound interest, rule-of-72, elapsed years, weekdays, leap years, nutrition labels), the engine verifies the lot, and ONE sealed coverage report returns: per-claim source quote + verdict + trail. It states how many claims it checked — never implies full coverage, never guesses. Human page: /audit.html. - `GET /search?q=&limit=` — ranked retrieval over the keeping (the kept library). - `GET /graph?scope=overview|shelf|card` — the public connection map (every edge carries its seal). - `GET /identity` — what this surface is. `GET /health` — status + `schema_active`. ### Witness surface only (narrowhighway.org) - `GET /resolve?ref=John 3:16` — resolve a Scripture reference to its World English Bible text. - `GET /word_study?strongs=G26` — Strong's original-language definition + every occurrence. ## Privacy gateway (embeddable, runs at your edge) Strip personal context before any AI call, reapply locally — the data never has to reach us. - Browser: `redact.js` (`Rampart.protect/reveal/guard`) + an opt-in self-hosted Rampart model for names/phones. - Python: `from concordance.gateway import scrub, restore, guard`. - Drop-in examples (browser / Python / MCP): docs/GATEWAY.md in the source repo. ## Connect your own tools (edge capability — your credential never touches our server) Narrow Highway can read the tools you already use — your calendar, email, and storage — to serve you in the moment, and it **keeps nothing**. This runs on YOUR box (sovereign mode), over standard protocols, bring-your-own-credential: calendar via iCalendar (.ics/CalDAV), email via IMAP (read -only, never marks a message seen), storage via a local folder or WebDAV. Works with every provider (Google, Apple, Outlook, Proton, Nextcloud) — no per-provider OAuth app. export NH_CALENDAR_ICS='https://…/basic.ics' # your private calendar link export NH_IMAP_HOST=… NH_IMAP_USER=… NH_IMAP_PASSWORD= export NH_STORAGE_PATH='~/Documents' python -m concordance connect # your day, from your own tools Join your apps, never absorb your data: reads pass through, nothing is stored, sealed, or sent to us. Writing back to your tools stays behind the agent-covenant write-consent path. ## The Commons (member shelves) — every member stocks their own shelf This is a library where the members are also authors. A shelf is a KEY, not an account: no email, no password, no profile beyond a display name you choose. Nothing records who read what. GET /drop/signable?member=&kind=recipe&subject=…&body=…&ring=shelf POST /drop {"fields": , "signature": "", "display_name": "…"} GET /shelf?member=[&viewer=] GET /commons · GET /curate/queue · POST /curate - **Sign on your own machine.** `/drop/signable` returns the exact canonical bytes; you sign them with your key and send only the signature. No endpoint here takes a private key, ever. A signature over different bytes does not transfer — nobody can put words on another member's shelf. - **Three rings.** `private` (only you) · `shelf` (you and whoever you point at it — UNGATED, live the moment you sign) · `commons` (site-wide, and it waits for a HUMAN steward). The gate is on what the library AMPLIFIES, never on what a member may say. - **Member tier is never upgraded.** A promoted card stays at `authority_tier: member` and carries its author's name. Promotion means we carried it further; it does not mean we verified it. Do not cite a commons card as though the engine had sealed it — check the tier. - **Refusals carry reasons, and never silence anyone.** A refused drop stays on the member's own shelf; only amplification is withheld. Every curation act names a steward and a why, and the record is append-only. Promoting or refusing needs the steward token; withdrawing your OWN card needs only your own signature over `GET /curate/signable` bytes. - **A link drop carries a waybill, not a copy.** `kind=link` with a `url`: we open it once in an airlock and keep only facts about it — its address, its own ``, `bytes`, `sha256`, `fetched_at`, `status` — then discard the bytes. No excerpt, no description, no page text, ever. An optional short `quote` is allowed *with* `attribution`, because a member typing a cited line is a citation, not a copy. The `body` is still required: a bare link is not curation. **Nothing is embedded** — an iframe would hand the reader's IP and referrer to the provider, and nothing here records who read what. If we could not reach the link, the drop still lands carrying `reach: SYSTEM_ERROR`; that is a fact about US and says nothing about the link. - **Every read hands back a derived `presentation` block** beside the bare card — glyph, kind label, who, how long ago, standing, and for a link its provider and a readable waybill line. It is computed on the way out and **never stored**: the card holds facts, the presentation holds phrasing. Render from it and you match every other surface; ignore it and you lose only polish. ## For agents (MCP) — add one URL A live remote MCP server (Streamable HTTP, JSON-RPC, no auth, no SDK): https://narrowhighway.com/mcp - Claude (claude.ai / desktop): Settings → Connectors → Add custom connector → paste the URL. - Claude Code: `claude mcp add --transport http narrow-highway https://narrowhighway.com/mcp` - Tools include `verify` (verdict + trail + sealed receipt), `search`, `seal_fetch` (re-check any receipt by hash), `redact` (strip PII before it travels), `capabilities` (the live statement), cards/graph/grid/daily and more. For the exact count on each surface, call `capabilities` or `GET /capabilities` — a number written here would drift the moment a tool is added. - The witness tools — passage reading, original-language word studies, cross-references, characters, prophecy signposts, the `harmony` of the Gospels (one event, every gospel that witnesses it), the `timeline` (Old Testament, New Testament, and Church History — one spine from creation to today, with genuinely disputed dates carrying BOTH scholarly positions, never one flattened verdict), the `backmatter` study tables (weights & measures, names of God with Strong's numbers, parables, miracles, book introductions, topical index — disputes carried), `bible_places` (the Atlas: real coordinates only where identification is secure; disputed sites NAME their candidates; unlocatable places are honest blanks), `narratives` (the storyboards — common narratives charted in the Bible; 17 shared movements that isolate and recombine; ALWAYS a reference point, never an identity assignment), and `study_find` (ONE quick-find across the whole reference section) — are reachable **two ways**, and asking is one of them. Note also: the passage reader either opens the right page or ASKS — an ambiguous book name ("Jud 1:2") returns `status: "ambiguous"` with `candidates`; present them to your human and let them go the last mile. Never pick silently. They are reachable: * `https://narrowhighway.org/mcp` — the witness surface; they are simply there. * **`ask` — the door.** Call `ask` with what you are actually bringing. If what you ask turns toward God, the Gate opens for the rest of your session and those tools become listable and callable, on either surface. This is the same door a person walks through: the same classifier, the same kinds, the same refusals, crisis first and absolute. You cannot assert your way in — passing a flag does nothing; the opening is the classifier's verdict on what you actually asked. "Ask, and it will be given you. Seek, and you will find. Knock, and it will be opened for you." (Matthew 7:7) - Fellowship, if you want it: `identity_create` / `identity_fingerprint` / `identity_verify` mint a covenant key **on your side** (the server only ever holds your public key and verifies a signed challenge), and `mesh_map` / `mesh_inbox` / `mesh_door` let you see the fellowship you belong to. Those three gate themselves on the confession bound to your key; unconfessed, you are shown the path to the door and never the network. Speaking INTO the mesh is not yet offered over MCP — it waits on proof-of-possession, because an unsigned word in a fellowship is worth nothing. - Every study surface a human reads as a page, an agent reads as a tool over the same data — same substance, same gate, same refusals. Nothing is agent-only and nothing is human-only. - Sovereign option: `python -m concordance mcp` (stdio) — the same tools on your own box, offline. Source: https://github.com/matharrismma/concordance-2 (stdlib-first Python). Human setup guide: /connect.html. The correction record: /corrected.html. ## Foundation It serves truth because Truth is a Person (John 14:6); a conduit, not the source. A window, not a wall. The fuller witness is at https://narrowhighway.org.