Documentation
donto exposes one read-only discovery surface that lets you bind a new consumer without ever reading a SQL migration. Below: the claim model, the three live API surfaces, and a worked example of binding a domain.
The claim model
Everything in donto is a claim — a subject, a freely-minted predicate, and an object that is either an IRI or a literal. The one write-time invariant (donto I1): a claim is either anchored to an evidence span or explicitly hypothesis_only.
{
"subject": "ex:ada-lovelace",
"predicate": "wrote", // free — invent what you need
"object_iri": "ex:first-algorithm",
"object_lit": null, // object is IRI XOR literal
"anchor": { "doc_id": "memoir-1843", "span": [412, 470] },
"confidence": 0.86,
"hypothesis_only": false
}Substrate API — discovery surface
Read-only introspection of the live substrate. Bind a consumer against these, not against the schema. Full machine-readable spec at /discovery/openapi.
| GET | /discovery/contexts | Every context (graph) in the substrate |
| GET | /discovery/predicate-inventory | Freely-minted predicates ranked by volume |
| GET | /discovery/identity-hypotheses | Active identity (sameAs) hypotheses |
| GET | /discovery/openapi | Full OpenAPI 3 spec for the substrate |
| POST | /search | Full-text search across all 39M+ statements |
| POST | /search/resources | Search source resources → snippet + blob link |
| GET | /statement/:id | A single statement with its evidence |
curl -s https://memories.apexpots.com/discovery/predicate-inventory | jq '.predicates[:5]'
curl -s -XPOST https://memories.apexpots.com/search \
-H 'Content-Type: application/json' \
-d '{"query":"Caroline Rose Davis","limit":8}'Memory API
Persistent, recallable memory for agents — text in, anchored claims out. Live at memory.donto.org.
| POST | /memorize | Extract claims from text and ingest them |
| POST | /recall | Holder-scoped recall bundle |
| POST | /search | Rank across the whole substrate |
| GET | /jobs/:id | Status of a deferred extraction job |
Genealogy API
Evidence-first family research — the hardest test of the claim lifecycle. Live at genealogy.donto.org.
| POST | /jobs/extract | Extract + ingest facts from a source (opencode) |
| POST | /search/resources | Search stored source resources |
| GET | /claim/:id | A claim with its evidence snippet + full-resource link |
Bind a consumer
- 1Read /discovery/contract-version and /discovery/openapi — that is the entire contract.
- 2Pick or create a context (graph): POST /contexts/ensure.
- 3Emit claims with donto-extract (free predicates, anchored to evidence) and ingest them.
- 4Query: align predicates at query time, search across the substrate, resolve identity hypotheses on demand.