A to-do list for an AI
Each workflow step becomes a tool the AI can call — with its safety rules written into the description.
e.g. "emit the output — only AFTER the check passes, never before."
This page explains, with no jargon, what that toolkit does, the simple idea behind it, and the proof we just produced by pointing it at its own code.
AI agents are good at doing things — sending refunds, booking slots, calling APIs. They're bad at first understanding the business they're acting inside. They'll happily refund an order that was never paid for, because nobody told them that's impossible.
The Agent Ontology Kit fixes that. It's a reusable recipe that reads a company, product, or codebase and writes down a clean, structured map of how that world works — the things that exist, the actions you can take, and the rules between them — in a form a machine can actually use before it acts.
Imagine describing a coffee shop to a robot. You'd naturally explain it at four levels of zoom — from "universally true of anything" down to "this exact shop's stuff." That's the whole method.
orders database table, the "new order" button↑ Hover the stack to fan it out. Top = most universal, bottom = most specific.
Each layer must connect to the one above it. This shop's orders table (L3) points up to
the idea of an "Order" (L1), which points up to a basic "thing" (L0). The actions (L2) say which nouns they
use and what must be true first.
Because everything links upward, you get one connected map — not four disconnected sticky-note piles. That connection table is the actual prize.
Instead of mapping a coffee shop or Stripe, we aimed the kit at its own codebase — like a dictionary that contains the definition of the word "dictionary," or a camera photographing itself in a mirror.
So the four layers came out describing the craft of map-making itself:
| Layer | For the coffee shop, this was… | For the toolkit itself, it became… |
|---|---|---|
| L0 Universal | a thing, a person, an amount | the same universal categories (borrowed from a published standard — never invented) |
| L1 Nouns | Order, Drink, Barista | Ontology, Layer, Class, Relation, Task, Evidence — the vocabulary of map-making |
| L2 Actions | TakeOrder, Refund | ScopeTarget, MineSources, BuildDomainLayer, Validate, EmitOutput — the workflow steps |
| L3 Real files | the orders table | the actual repo files: scaffold.py, the 20-domain.yaml template, the docs |
- id: Relation definition: "A typed link between two ontology classes with domain, range, and cardinality; its presence is what makes an ontology more than a taxonomy." upper: Category # ↑ anchors to a universal kind source: "SKILL.md modeling rules" # ← evidence, or it didn't happen
Here's the real point. From that single map, the kit generated three different outputs — each shaped for a different audience. Write the understanding once; everyone gets the version they can read.
Each workflow step becomes a tool the AI can call — with its safety rules written into the description.
e.g. "emit the output — only AFTER the check passes, never before."
The same map as a queryable database of connected facts. We literally asked it questions and it answered.
252 facts, machine-checked — a real parser read it with zero errors.
A clean diagram showing the layers stacked and the workflow flowing — so a human can grasp it in a glance.
Color-coded by layer, exactly like this page.
"name": "emit_consumer_binding", "description": "Emit the final output (tools, graph, diagram…). PRECONDITION: validation passes — emit AFTER validation, never before."
# Question: "what does the BuildDomainLayer step produce?" SELECT ?c WHERE { :BuildDomainLayer :producesClass ?c } # Answer it gave back: → :OntologyClass → :Relation
Describing itself is neat — but here's the bolder promise: the middle layer (the nouns of a trade) should come out the same for any company in that trade. Only the bottom layer — one firm's specific files — should differ. So we pointed the kit at two rival payment companies: Stripe and Adyen.
| Stripe's word | Adyen's word | Same idea? |
|---|---|---|
| Charge | Payment | ✅ a fund movement |
| Refund | Refund | ✅ identical |
| Dispute | Dispute | ✅ identical |
| Dispute Evidence | Defense Document | ✅ proof to contest a charge |
| Customer | Customer / Shopper | ✅ the payer |
| Merchant Account | Merchant Account | ✅ identical |
| Support Agent | Payments Agent | ✅ the operator |
| Monetary Amount | Monetary Amount | ✅ identical |
| Payment Intent | — | ⚠️ a Stripe-only framing |
The single mismatch is genuinely a Stripe-specific idea — an honest result, not a fudged one. And Adyen actually contributed more concepts (it exposes a separate "capture" step and staged chargebacks that Stripe's setup keeps hidden), so the shared map got richer, never contradictory.
Top = universal and identical. Bottom = each company's private plumbing. The further down you go, the less transfers — exactly as the four layers promise.
Because the expensive, error-prone part of building AI tools isn't the code — it's making sure the AI actually understands the rules of the world it's touching. This kit makes that understanding explicit, checkable, and reusable.