A small JSON API over the catalog
Everything here is a static file on a CDN. No key, no rate limit, CORS open. 50 of 120 entries serve a class hierarchy that was extracted from the published source file; the rest deliberately serve none, and say why.
GET /api/catalog.json Every entry: metadata, licensing with the operative terms, and hierarchy status.
GET /api/ontology/<id>.json One entry, plus its class hierarchy when verified, a worked SPARQL example, and sample instance data.
GET /api/verified.json Just the ids whose hierarchy is source-verified. Use this to filter before you trust a tree.
POST /api/recommend {"prompt": "what you are modelling"} — returns recommended ontologies with reasons.
Backed by a language model on a personal key, so treat it as best-effort.
If your client speaks the
Model Context Protocol,
you can skip all of the above. POST /mcp is a stateless Streamable HTTP
server — no key, no session, no auth — and it serves both the initialize
handshake older clients expect and the handshake-free 2026-07-28 revision.
claude mcp add --transport http ontology-guru https://ontology.guru/mcp search_ontologies Search 120 published ontologies by keyword, domain, licence, or whether their class hierarchy was verified against the published source file. Start here — it is deterministic and free. Returns matching entries with licence and hierarchy status.
get_ontology Full record for one ontology by id, including its class hierarchy when that hierarchy was extracted from the published source file. Ids come from search_ontologies — never guess one.
check_licence The operative licence terms for one ontology: whether you may redistribute it, whether attribution is required and with exactly what notice, and whether share-alike propagates to anything you derive from it. Says plainly when the licence was never verified.
list_verified Every id whose class hierarchy was extracted from the ontology's own published file. The cheapest way to filter before trusting a tree.
recommend_ontologies Describe what you are modelling in prose and get suggested ontologies — often a combination — with a reason for each. This one calls a language model, so it is slower, best-effort, and can be unavailable. Prefer search_ontologies when you already know the domain or keywords; use this when the problem is easier to describe than to search.
The same contract, written for a model rather than a person. All three are generated from the catalogue at build time, so their counts can't drift from what the API actually serves.
GET /llms.txt The llms.txt index: what this is, the two fields that decide trust, and links to everything else. Start here.
GET /llms-full.txt
Everything in one fetch — field-by-field reference, the licence and withheld
vocabularies with counts, worked jq recipes, the pitfalls that
actually bite, and a one-line index of all 120 entries.
GET /skill.md
An Agent Skill, frontmatter and all. Save it as
.claude/skills/ontology-guru/SKILL.md and your agent will reach for
the catalogue on its own when someone starts designing a schema.
mkdir -p .claude/skills/ontology-guru
curl -sL https://ontology.guru/skill.md -o .claude/skills/ontology-guru/SKILL.md hierarchy.status verified — extracted from hierarchy.source on
hierarchy.retrievedAt. withheld — no hierarchy is served,
and hierarchy.reason says which of five things happened:
licence (redistribution not permitted), unverified-licence
(terms not established with enough confidence), wrong-artifact (the file
isn't a class hierarchy), wrong-shape (it parsed, but its structure was
too flat or tangled to publish honestly), or unverified (not extracted
yet). Never treat a withheld entry as having an empty hierarchy — it has an
unpublished one.
licence.redistribution redistribution — you may republish. attribution_required —
republish with the notice in licence.notice. reference_only —
link to it, do not copy it. no / unverified — do not
republish. Some entries carry licence.shareAlike, which propagates to whatever
you generate from them.
curl -s https://ontology.guru/api/verified.json | jq -r '.ids[]'
curl -s https://ontology.guru/api/ontology/prov-o.json \
| jq '{id, licence: .licence.id, classes: (.classHierarchy | length)}'
curl -s -X POST https://ontology.guru/api/recommend \
-H 'Content-Type: application/json' \
-d '{"prompt": "sensor readings from building equipment"}' | jq '.recommendations[].id'
This is a personal project, not a company product. Licence summaries are made in good
faith from primary sources and are not legal advice — check the licence
yourself before you redistribute anything. The pruned hierarchies are subsets chosen to be
readable, not complete ontologies; hierarchy.classesInSource tells you how much
was left out. If you find something wrong, the extraction command is recorded on every
verified entry so you can reproduce it.