Onta
OPEN SOURCE · APACHE 2.0

The knowledge layer AI agents depend on

Auto-built. Cited. Self-updating.

Turn messy supplier and product master data into verified, cited answers for vertical AI agents — with a human review gate, entity resolution, and scheduled re-verification.

onta — zsh
$ npx @onta/cli ingest suppliers.csv --kg master
1,842 rows · 11 columns detected
ontology inferred — Supplier · Item · Branch · Catalog
47 duplicates resolved · review gate open
re-verify weekly · confidence gate on
graph live at getonta.com · cited answers ready
MASTER · SUPPLIERS · LIVE
86.3%
hard slice (joins) · vs 39.7% SQL
91.4%
overall · all 302 questions
Cited
every fact has provenance
Live
scheduled re-verification
PROBLEM

AI agents are only as good as the knowledge underneath them

That knowledge is rotting. Vertical agents ship on messy operational data with only RAG in between — no exact aggregates, no multi-hop joins, no citations a compliance team can approve.

ENTITY RESOLUTION
The same supplier, three times.
Duplicates break every aggregate your agent runs.
AGGREGATES
Confident sums over the wrong rows.
SQL and RAG both look certain — and both can be wrong.
STALENESS
Facts go quietly wrong.
Nothing flags a price last verified two years ago.
SUPPLIER MASTER · BEFORE ONTA2 ROWS · 1 ENTITY
SUPPLIER_NAMEUNIT_PRICELAST_VERIFIED
Acme Foods Inc.$4.852026-06-30
ACME FOODS$5.402024-11-02 · stale
Same supplier. Different names, different prices, one two years stale. Every agent answer built on this is wrong.
01PRODUCT

From inconsistent supplier files to agent-ready master data

Point Onta at your data. It builds the knowledge layer and keeps it alive — reviewed schema, resolved entities, exact cited answers over plain English or MCP.

a
Connect sources
Supplier files, item masters, APIs — raw operational data in.
b
Review the schema
Onta infers a typed ontology. You approve before anything is written.
c
Resolve entities
Duplicates merge. One supplier, one node — then agents get exact answers.
SUPPLIERS.CSV1,842 rows→ kg/master
SUPPLIERCATEGORYREGION
Acme Foods Inc.ProduceWest
ACME FOODSProduceWest
Northline DairyDairyMidwest
↓  review gate · ontology inferred · duplicates flagged
SupplierItemBranchCatalog
SuppliersuppliesItem
Supplierhas_branchBranch
Itemin_catalogCatalog
Acme Foods Inc. ← merged with ACME FOODS · one node for every agent
ENRICHMENT LOG · LIVE
kg/master
09:24:01enrich(Item)SKU-4412 · category → Dairy · cited
09:24:08enrich(Item)SKU-1088 · brand → Northline · series ID
09:24:15enrich(Supplier)Acme Foods · contact → verified
09:24:22enrich(Supplier)Acme Foods · branch count → 4
09:24:29reverify(Price)18/18 attributes filled · federal API
09:24:36enrich(Catalog)weekly re-verification scheduled
Scheduled enrichment behind a confidence gate — every value cited.
02ENRICH

Fill missing facts. Re-verify on a schedule.

Scheduled enrichment fills missing and stale attributes from external sources behind a confidence gate. New sources pass the same review gate as day one — the schema evolves deliberately instead of rotting.

Provenance on every value
Source URL, series ID, verified-at — what compliance can approve.
Maintenance compounds
Each re-verification run accretes history a fast-follower starts at zero on.
03ASK

Exact, cited, fresh answers

Ask in plain English or over MCP. Agents traverse a reviewed, typed graph — every answer carries receipts back to source rows and enrichment runs. SPARQL is the internal execution target, never the interface.

ASK YOUR KNOWLEDGE LAYER
kg/master
What's total spend on produce after merging duplicate suppliers?
$1.24M1 hop · 38 suppliers
Supplierdedupe(name)filter(category = Produce)sum(spend)

Computed over resolved entities — not raw rows that double-count.

04PROOF

On multi-hop joins: 86.3% vs 39.7% text-to-SQL

86.3% is the hard slice only (join / multi-hop). 91.4% is overall across all 302 questions — easier lookups pull that average up. Same benchmark; two different cuts.

THE CLAIM · HARD SLICE ONLY (JOIN / MULTI-HOP) · NOT OVERALL
ONTA · JOIN / MULTI-HOP
86.3%
Typed graph on the hard questions
TEXT-TO-SQL · SAME HARD SLICE
39.7%
Not the overall text-to-SQL score (that's 68.5% below)
SYSTEMCONTEXT · OVERALL (ALL 302 QUESTIONS · FULL EXAM)SCORE
Onta (typed graph)
91.4%
Pandas agent
77.2%
Text-to-SQL (DAIL-SQL-style)
68.5%
Naive RAG
27.8%

Overall (91.4%) is higher than the hard-slice (86.3%) because T1/T2 lookups are easier and lift the average.

T1 · LOOKUP
99.0%
easy
T2 · FILTER
92.3%
T3 · JOIN
86.3%
headline slice
T4 · MULTI-HOP AGG
81.4%
hardest

302 questions · 26 held-out knowledge graphs · execution-verified ground truth · leakage-hardened. Claim = hard slice (86.3 vs 39.7). Context = full exam (91.4 overall).

AGENT READY

Built for the agents that depend on it

Open source core (Apache 2.0) so engineers adopt before procurement. Hosted cloud for managed enrichment and re-verification. Python SDK, REST, or MCP — integrate in minutes.

CLI
Ingest in seconds. One command to load master data and start querying it.
MCP
Any MCP agent. Connect Claude, Cursor, or any MCP client to the knowledge layer.
SKILL
Agent skill. Drop-in skill so agents build and query end-to-end.
from onta import Client

client = Client(api_key="your-key")
client.ingest("suppliers.csv", kg="master")
answer = client.ask("Total produce spend after deduping suppliers?")
print(answer)  # "$1.24M · 38 suppliers · cited"
LIVE AT GETONTA.COM

Build the knowledge layer your agents depend on

Join the waitlist for hosted enrichment and re-verification. We'll reach out when your spot is ready.

or talk to the founder →