Plugs into what you already run, with nothing in between you cannot audit.
Records come in through connectors your firm can read, are checked against official registers, and go out through six routes for systems and seven for AI agents. Every route says who is asking and where each value came from.
A connector is a settings file, and nothing is written until a rehearsal has run.
A connector written as software becomes software your firm has to maintain. A connector written as a settings file is a document your firm can read, compare and approve.
Describe
The settings file: which system, which fields, how to tidy each one, and what it is.
Validate
Check it makes sense. Every field is either mapped or deliberately ignored; nothing is silently dropped.
Rehearse
Run it against real data and write nothing. It shows what would change. A connector that has never been rehearsed cannot write.
Run
In pieces, resumable. Retries, failures queued, and a record of the run kept.
Working examples included
Elite 3E and a generic CRM come as working connectors that already know what a practice management system's client, matter and party tables look like.
Spreadsheets, for everything else
Uploads with reusable mapping templates and an Excel round-trip, because a real share of a firm's reference data lives in a spreadsheet.
Loads that survive a bad night
Work is done in pieces, with save points and retries. A load that fails at three in the morning picks up where it stopped, and anything it could not process is visible.
"Verified" means a date and a source, not a tick in a box.
Every check against Companies House, CIPC or OpenCorporates is kept on file: what was checked, against which authority, when, and what came back. A registration number that stopped matching last month becomes a data quality problem to deal with, not a value that quietly goes stale.
Companies House
United Kingdom. Legal names, registration numbers and registered offices, with the date each was confirmed.
CIPC
South Africa. The Companies and Intellectual Property Commission register, checked the same way.
OpenCorporates
Multi-jurisdiction. Used where a national register has no usable interface, and recorded as the source it is.
Six ways in, and each says who is asking.
Looking up "which client is this, really?" is the busiest request, and the one that makes Datum useful to every other system in the firm. Nineteen times in twenty it answers in under 200 ms, measured on our test set. How we measure
| Route | What it answers |
|---|---|
GET /v1/xref/{system}/{key} | Turn one system's reference into the master one |
GET /v1/records/{master_id} | The full record, as at any date you choose |
GET /v1/search | Search, with permissions applied as it runs |
GET /v1/changes | What has changed, for systems keeping in step |
GET /v1/extracts/{entity} | Bulk extracts, saying which columns were withheld |
GET /v1/schema | The data model, filtered to what you may see |
Looking up a client: the request
GET /v1/xref/elite3e/LON000412 Authorization: Bearer ••••••
Response
{
"master_id": "01936f2a-…",
"entity": "party_organisation",
"attributes": {
"legal_name": "Pemberton Holdings Ltd",
"country": "GB"
},
"provenance": {
"legal_name": {
"source": "elite3e", "record": "LON000412",
"rule": "highest_trust", "pinned": false,
"selected_at": "2026-08-24T02:14:07+00:00"
}
},
"as_at": "2026-08-24T09:00:00+00:00",
"contract_version": "1.0"
} Saying where a value came from is not optional
Every field, on every response. Without it, the system reading has no way to judge how far to trust a value. Datum refuses to send a response that is missing it.
"Not found" does not mean it is not there
It means it is not available to you. A matter that does not exist and a matter behind an ethical wall look exactly the same, because telling them apart would give the game away.
Totals are the totals you may see
Every list carries suppressed and complete. If complete is false, that total is not the firm's total, and no system should present it as one.
One permission never implies another. An administrative permission does not grant a read permission. Every system that connects gets its own credentials, including the AI integration.
Seven questions an agent can ask, and one thing it can propose.
An AI agent asks through the Model Context Protocol (MCP), the open standard AI tools use to call other systems. It reads with its own identity, through the same checks as a person, and gets the same record with the same source attached. The only write is a proposal into the review queue.
| Tool | The question it answers |
|---|---|
get_entity | Look up a record |
search_entities | Search, with permissions applied as it runs |
resolve_entity | Which client is this, really? |
classify | Classify this piece of work |
get_matter_context | Everything about a matter, as at a date |
get_corporate_group | The corporate group a company belongs to |
propose_contribution | Propose something new, into the review queue |
POST /mcp Authorization: Bearer •••••• (trovato-agent · mdm:read) { "jsonrpc": "2.0", "id": 41, "method": "tools/call", "params": { "name": "get_matter_context", "arguments": { "matter_number": "24-0417", "as_at": "2026-03-14" } } }
{
"result": {
"matter_number": "24-0417",
"client": "Pemberton Holdings Limited",
"jurisdiction": "England and Wales",
"classification": "Corporate — Mergers & acquisitions",
"restricted": false,
"parties": [
{ "name": "Pemberton Holdings Limited", "role": "client" },
{ "name": "Cavendish Technologies Ltd", "role": "counterparty" }
],
"personnel": [
{ "name": "A. Wainwright", "role": "responsible partner",
"from": "2024-02-12", "to": null }
],
"provenance": {
"client": { "source": "companies_house", "selected_at": "2026-08-14T02:14:07Z" },
"jurisdiction": { "source": "elite3e", "selected_at": "2026-08-24T02:14:07Z" }
}
}
} A matter behind a wall and a matter that does not exist get the same reply, byte for byte. The transport cannot tell the agent the difference either.
{"result":{"isError":true,"content":[{"type":"text","text":"not found"}]}} Live in Trovato.
trovato.ai · legal operations platform · lawyers run matters with supervised AI agentsIntake, already filled
When a lawyer opens a matter in Trovato, the client, the parties and the governing jurisdiction come from Datum. Nobody retypes them, so nothing is mistyped. Retyping is where wrong data enters.
Agents ask back
Trovato's Matter Agents ask Datum for matter context as they work, with their own credentials. Every field comes back with its source, which is what Trovato's Citation Firewall needs before an answer can ship.
Findings return as proposals
What an agent learns from a document goes into Datum's review queue as a suggestion. A reviewer decides. The record never changes on an agent's say-so.
Datum pushes. Trovato never reaches into your network. The firm owns the schedule, can see what left, and can stop it leaving without asking anyone.
Two identities, screened differently. A directory identity publishes the list of matters, with walled ones marked restricted. A detail identity publishes matter content and is screened by every wall. A walled matter's name crosses; its content never does. Nothing that could be read as a clearance ever leaves.
Switch it off and the route does not exist.
Not disabled, absent. With the integration off there is no agent route in the software at all. The whole platform builds and passes every test that way, and proving it is one of the eight checks that block a release.
Runs wherever your firm needs it to run.
In your own data centre, or as a managed single instance. Neither is a lesser product.
In your own data centre, without a lesser product
The typefaces are served by Datum itself, and no screen fetches anything from an outside company. A machine inside your network has no route out, and the product does not quietly fall back to Arial.
A database doing real work
PostgreSQL 16, ninety-one tables. The rules that stop two conflicting versions of the same thing existing at once are enforced by the database itself, not by application code a simultaneous write can slip past.
Joins, not rebuilds
Scheduling, loading, transforming, search, sign-in, permissions and audit trails are joined onto rather than rewritten. Your technology team keeps the components it already runs.
AirflowdltdbtOpenSearchKeycloakOpenFGAMarquez
Two AI connections, deliberately kept apart
One for the people building Datum and one for the running product, so a convenience for developers can never reach live data. A firm that wants no AI model near its client data runs Datum without one and loses nothing else.
Bring your systems to the walkthrough.
Tell us your practice management system in the form and we will have the right connector open: the settings file, the rehearsal run, and the six ways another system reads the result.
Questions before booking? Use the contact form.