§00

A truth layer, not a dashboard.

How the corpus is built, why every value carries its own audit trail, and what you get through each of the three doors.

§01

The problem.

AI agents are graduating from drafting text to making decisions — approving a counterparty, validating a route, classifying goods. The moment an answer has regulatory or financial consequence, “the model said so” is not a provenance story. Retrieval over documents gives agents plausible text; decisions need auditable facts.

The reference truth those decisions rest on — what’s a real port, which jurisdiction is high-risk, who is on which list, what category of goods is moving — is scattered across dozens of sources, each with its own format, freshness, and license. Scientia Basis unifies them into one corpus an agent can query, trust, and cite.

§02

The bet.

The interface layer is being commoditized by assistants; the data layer isn’t.

That’s why there is no dashboard: the UI for a non-technical user is any assistant with the MCP server attached. What can’t be commoditized is a corpus where every value carries its own audit trail.

§03

Everything is a statement.

Most databases store values. Scientia Basis stores claims about values — every fact carries which dataset asserted it, the exact source URL, which ingest run produced it, and when it was last confirmed. No fact is ever deleted: facts that vanish from a source go stale, visibly. Conflicting sources coexist as two statements, never a silent overwrite.

country:US · CountryStatement anatomy
Property
postal_code_regex
Value
^\d{5}(-\d{4})?$
Dataset
sci-bas_countries
Source
sci-bas://country_master
Run
3 · sci-bas_countries
Seen
first 2026-08-08 · last 2026-08-08
Ingest

Registry-driven connectors; every run that parses a file records a content hash of it.

Curate

Conflicting sources coexist as visible statements — every value returned, each with the dataset that asserted it. Nothing silently overwritten, and nothing silently picked.

Audit

Any value → dataset → source URL → run. Licenses are machine-readable.

Update

Re-ingest is idempotent; vanished facts go stale, never deleted.

Four capabilities, one schema decision.

§04

The pipeline.

Fetch, normalize, record, validate, release — then everything reads from the same query service.

1 · Source families
sci-bas referenceCIA FactbookUN/LOCODEOurAirportsairlinespostal operatorsGoogle taxonomyUSITC HTSECCN / CCLISO codesUNSD M49CLDR namesFATFWorld Bank WGITI CPIUS CSLOFAC SDNUK Sanctions ListEU consolidated listUK Trade TariffCBP CROSS

Registry inventory is not a promise of customer access. The offered scope follows entitlements and unresolved-rights holds.

2 · Connectors
fetch → parse → normalize → stable IDs
Every run hash-recorded against its source.
3 · Statement store
value + dataset + source + run + first/last seen
Append-only. Extends to point-in-time queries without a rebuild.
4 · Validation gates
counts · licenses · referential integrity
5 · Corpus release2026.08.7
immutable · pinnable · diffable
Matching engine
transliteration-aware index
feeds /screen
6 · Hosted query service
one read path, one release stamp
MCPagents
APIpipelines
CLIterminals
§05

A corpus you can pin.

Versioned releases

Data responses identify the served corpus release. Pin that current label; older-artifact and historical time reads are unavailable. Precomputed diff totals are release bookkeeping, not reconstructed history.

Freshness you can query

Every dataset carries the timestamp of its last successful ingest and the run that produced it, queryable through /datasets and /runs. A stale answer is a visible answer.

Honest screening

Screening returns candidates, not verdicts. When the Yente matcher is available it supports transliteration-aware matching; lexical fallback is clearly identified in the response.

Licence terms you can gate on

Dataset metadata records upstream licence and redistribution terms. Account/key entitlements and source-specific legal holds are applied before data is returned; a metadata label is not proof of a licence grant.

§06

Updating & audit.

No fact is ever deleted — every value carries when it appeared and when it was last confirmed, and the model extends to full point-in-time queries without a rebuild.

This is the operator view. run is each dataset’s own ingest count and is what a citation carries; run_id is a corpus-wide counter, returned only to a key that already reaches every dataset, because its gaps would otherwise tell a narrower key how many ingests it is not being shown.

$ scientia runs --limit 3 --pretty
{
  "corpus_release": "2026.08.7",
  "count": 3,
  "results": [
    { "run": 12, "run_id": 37, "dataset": "sci-bas_factbook",
      "started_at": "2026-08-09T02:17:28Z",
      "finished_at": "2026-08-09T02:17:47Z",
      "source_version": "sha256:52e1c8aee8ab4d78",
      "snapshot_digest": "52e1c8aee8ab4d78f6fc…",
      "status": "ok", "entities": 248, "statements": 62478,
      "release": "2026.08.7" },
    { "run": 9, "run_id": 36, "dataset": "cldr_names", … },
    { "run": 9, "run_id": 35, "dataset": "iso_country_names", … }
  ]
}

Historical operator output from August 2026. The legacy Factbook dataset shown here is held from external serving; corrected releases use the independently sourced cia_factbook dataset. Its new acquisition does not rewrite this historical run.

§07

Honest screening.

Two historical Yente responses from release 2026.08.6 illustrate transliteration-aware matching. Their different-script queries resolve to the same designation, csl:SDN:8279, with engine-specific scores and explanations. These are recorded examples, not a claim about current matching availability.

Initial launch is pinned to snapshot 2026.10.2 and currently uses the explicitly degraded lexical fallback because the stronger index is unaligned. It does not provide Yente's transliteration capability. Check the current screening limits and reject degraded results when that capability is required.

Screening returns candidates, not verdicts. A score ranks likelihood, the threshold is yours to set, and the record behind a hit is a citable id you can fetch, pin to a release and diff. Nothing here decides whether to file a report — that judgement stays with the person accountable for it, and the point of the explanations is that they can disagree on specifics.

screen "Виктор Бут"Cyrillic
{
  "corpus_release": "2026.08.7",
  "match_count": 1,
  "matches": [{
    "id": "csl:SDN:8279",
    "caption": "BOUT, Viktor Anatolijevitch",
    "dataset": "us_csl",
    "score": 0.864,
    "explanations": { "name_match": 0.864 }
  }]
}
screen "Viktor Bout"Latin
{
  "corpus_release": "2026.08.7",
  "match_count": 1,
  "matches": [{
    "id": "csl:SDN:8279",
    "caption": "BOUT, Viktor Anatolijevitch",
    "dataset": "us_csl",
    "score": 0.909,
    "explanations": { "name_match": 0.909 }
  }]
}
§08

Three doors, one corpus.

All three surfaces are thin doors over one query service — an agent, a pipeline, and a terminal get identical answers with identical provenance.

$ claude mcp add --transport http scientia-basis https://scientia-api-go.fly.dev/mcp \
    --header "Authorization: Bearer $SCIENTIA_API_KEY"
# tools: search_entities · get_entity · screen_name ·
#        get_country_profile · get_country_factbook · list_datasets
§09

Start free. Pay for volume, not for access.

Dataset access and screening behavior follow the entitlement policy configured for the deployment. Plans differ in how much you can spend, and nothing else.

Free$0
2,500 credits / mo

Enough to evaluate properly.

Developer$49
75,000 credits / mo

The working plan, 120 req / min.

Scale$249
500,000 credits / mo

Production workloads at 600 req / min.

§10

Where this goes.

01

Richer decision data & crosswalks — HS ↔ export-control ↔ product taxonomy.

02

The operational graph — senders, receivers and shipments as first-class, continuously screened entities, where longitudinal operational truth becomes the moat.

03

The investigation tier — an agent walks the graph and drafts an evidence-backed, provenance-cited brief for a human. The corpus was designed to be citable from day one.

Query it yourself.

get started