Compile knowledge once, then reach it live over MCP and the API, or take it away as a signed portable package. The model is replaceable. The compiled knowledge is the asset.
Three ways to use a Compiled World
Live
MCP and the API
Read the active World over HTTP, or give an agent the read-only MCP server: nine tools over sources, Worlds, one World, search, Ask, objects, relations, evidence and package. Always the current active revision, with no copy to keep in step.
No write tool, and the server refuses to start if one is added.
Portable
A signed package
Take the World away as files: JSON-LD and Turtle semantic projections, graph nodes and relationships, a retrieval-ready index, provenance activities and a validation report, under a signed manifest with a digest for every file.
Verifiable offline against a fingerprint you fetch separately. It is a snapshot of one revision — take the live path when the reader must stay current.
Human
Ask and the workspace
A person asks a question and gets an answer whose citations open the exact source location behind them, or a statement that the available evidence is insufficient rather than a filled gap.
The same World the two machine paths read, with a reviewer in front of it.
From sources to a grounded answer
Compile and activate a WorldUpload or connect sources, review the candidate, and activate it. Activation is a human decision, and nothing is served from a candidate.
Create accessMint a scoped API key, or point an agent at the MCP server. Creating, rotating and revoking a key each write an audit row.
Query the active WorldSearch, read objects and relations, or ask a question against the revision that is live right now.
Receive evidence-bound contextEvery result carries the source version and the exact location inside it that it was compiled from.
Follow citations back to sourceOpen that location and read the original. Where the evidence does not support an answer, the answer says so.
A finished Compiled World is open to read in full today, with its evidence attached. Compiling your own sources is set up with us rather than enabled by a plan purchase.Explore a Compiled WorldDiscuss your sources
The endpoint reference, the error catalogue and the package format are in the documentation.
If you are deciding between live MCP/API access and a portable package, start with Use your results with AI.
Three unauthenticated reads, run from this page against TAVONEL. No signup, no credential, nothing that spends. Where a response sends a Content-Digest header, this page hashes the bytes it received and says whether they match.
What TAVONEL can read
GET /api/v1/capabilities
The same list the upload route validates against. A format absent from it is refused at upload rather than accepted and dropped.
What is open right now
GET /api/status
The deployment's own state, including whether compiling your own files is open here.
The shape of an answer
GET /reproducibility/sample-world
A deterministic product fixture, unsigned and labelled as such in its own disclosure field. Build against the shape; do not judge extraction from it.
The same checks from a terminalcurl · Recipe 3
# Every readable format, with its tier and its stated limitations. No key.
curl -fsS https://tavonel.com/api/v1/capabilities | jq '{schemaVersion, entries: (.entries | length), contentSha256}'# The pin a caller keeps: drop contentSha256 -- it is the last key -- and re-serialize.
curl -fsS https://tavonel.com/api/v1/capabilities \
| jq -S 'del(.contentSha256)' --indent 0 | tr -d '\n' | sha256sum
# The contract, and the two paths it deliberately does not have.
curl -fsS https://tavonel.com/api/openapi | jq '[.paths | keys[] | select(test("promote|rollback"))]'# []# Who signs an export here, or the refusal that says nobody does.
curl -fsS https://tavonel.com/api/export/trust | jq '{activeKeyId, keys: [.keys[] | {keyId, status, publicKeySpkiSha256}]}'
import json
import os
import urllib.request
request = urllib.request.Request(
"https://tavonel.com/api/v1/documents",
headers={"Authorization": f"Bearer {os.environ['TAVONEL_API_KEY']}"},
)
with urllib.request.urlopen(request) as response:
body = json.load(response)
for document in body["documents"]:
print(body["workspaceId"], document["documentId"], document["state"], document["sourceVersionKey"])
All four perform GET /api/v1/documents with a key scoped documents:read. There is no npm or PyPI package to install: the HTTP samples use each language's standard library, and the agent tab registers the downloadable server below, which exposes this read as list_sources.
9 stdio tools: list_sources, list_worlds, get_world, search_world, ask_world, get_object, get_relation, get_evidence, download_package. No write tool, and it refuses to start if one is added.
Runs inside your network and pushes to TAVONEL, which reaches into nothing. Reads a mounted directory — an SMB, NFS or SFTP mount included — or an S3-compatible bucket. An assisted import route, not a self-serve connector.
Checks a downloaded archive offline: the Ed25519 signature against a fingerprint you fetch separately, every file against the digest we signed, and nothing added. Node.js 20+, no dependency.
Checks what is inside the archive: relations resolve, every region sits inside its page in the 0-1000 frame, and the Turtle, JSON-LD and CSV describe the same graph. Add tavonel-verify-roundtrip.py to load it into SQLite and query the ids back.
Every request either one makes is an unauthenticated GET.
What is in a portable package
Every signed export contains these files, written by the exporter and named in a manifest carrying a digest for each one. The two ontology files are the Compiled World’s RDF / JSON-LD semantic projection — a projection of the compiled objects and relations, with no schema for you to author.
Path
Use it for
AGENTS.md
What a filesystem-capable agent reads first.
graph/nodes.csv
Graph nodes, for a plain graph import.
graph/relationships.csv
Graph edges, with the relation each one carries.
manifest/ai-entrypoint.json
The machine-readable map of the entrypoints and the grounding rules.
manifest/candidate-world.json
The compiled World this archive was written from — objects and relations, canonically ordered.
manifest/export-manifest.json
A digest for every file above. The signature is made over these bytes.
ontology/knowledge.jsonld
JSON-LD semantic projection, for linked-data consumers.
ontology/knowledge.ttl
The same projection in Turtle, for RDF and SPARQL.
provenance/activities.jsonl
Lineage for every compiled artifact in the package.
rag/chunks.jsonl
Retrieval chunks, each bound to the source location it came from.
rag/documents.jsonl
Document-level retrieval records.
README.md
Where a person starts, and which consumption path to take.
signatures/export-manifest.ed25519.json
The detached Ed25519 signature over that manifest.
validation/report.json
The validation status, and any reason the result still requires review.