Skip to content
harness.talk

For agents

Start here.

You are welcome here as a capable collaborator. Everything below is built so you can act correctly on the first read: stable ids, one canonical example per concept, explicit errors, nothing behind a key.

One command

If you run inside an agent host, the fastest path is to give it the harness as an MCP server. Pick the host; the config below is complete. It spawns npx harness-talk mcp, which fetches and verifies the export on first run, then answers every tool locally.

Settings → Developer → Edit Config (claude_desktop_config.json)

{
  "mcpServers": {
    "harness-talk": {
      "command": "npx",
      "args": [
        "-y",
        "harness-talk",
        "mcp"
      ]
    }
  }
}

Requires Node 20+. The first run downloads the signed corpus export (~1.5 MB) and refuses to serve if its Merkle root does not match the published one.

The five-step loop

Discover → resolve → read → cite → verify. Every tool, page, and export on this site serves one of these steps. If you only read one page, read this one; the rest is detail.

  1. Discover

    One fetch tells you everything: where the docs are, where the OpenAPI lives, which sources are ingested, and the corpus Merkle root.

    curl -s https://harness.talk/.well-known/harness.json
  2. Resolve

    Any human reference or fabric address becomes a canonical ref. The grammar is small and formal — see Protocol.

    curl -s "https://harness.talk/api/v1/verses/John%203:16"     # human form
    curl -s https://harness.talk/api/v1/verses/jn.3.16            # canonical
    curl -s https://harness.talk/api/v1/resolve/127.43.3.16       # fabric address
  3. Read

    Text comes back byte-for-byte from the ingested edition, with its source id and a hash. Ranges and whole chapters work the same way.

    import { createClient } from "@harness-talk/harness";
    const h = createClient();
    const v = await h.getVerse({ ref: "jn.3.16" });
    console.log(v.text, v.source, v.sha256);
  4. Cite

    Quote exactly, and keep the reference and source id with the words. If you paraphrase, say so. This is the whole covenant.

    “For God so loued þ world, that he gaue his only begotten Sonne…”
    — John 3:16 (jn.3.16, kjv-1611, sha256 0c45ba2f…)
  5. Verify

    Never trust the wire. Recompute sha256(ref + "\n" + text) and compare. The client does it in one call; the corpus root lets you check the whole export.

    await h.verify(v);            // true
    const all = await h.exportCorpus();   // 31,102 verse objects, offline forever

What is here

Body textKing James Bible, 66 books · 1,189 chapters · 31,102 verses. Source id kjv-1611.
Corpus roote33985722301b534baa052a9c9f74db965abbee4deb8b2f70c96cd7bd693f2be
AnnotationsThe Geneva Bible 1599 verse text is live (?source=geneva-1599). Its marginal notes (geneva-notes) are declared and return source_not_ingested until verified. We never substitute.
FabricEvery verse has a loopback address: 127.{book}.{chapter}.{verse}:1611, served by harnessd on any Linux host and mirrored at /api/v1/resolve.
CostReads are free, keyless, and immutable-cached. A soft per-IP courtesy limit is announced in headers, never silently enforced.

Where to go next

  • What an agent needs — the requirements document, need by need, with what is live and what is specification.
  • The harness — client, MCP server, daemon, autonomy ladder.
  • Protocol — reference grammar (EBNF), response shapes, error vocabulary, caching headers.
  • Covenant — how to use scripture data honestly. Short.
  • MCP server — one-line config for Claude Desktop, Cursor, and any MCP host.
  • Worked examples — cross-reference walk, concordance build, verse-addressed messaging, multi-agent consensus.