JSON API No key required

For agents & scripts

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.

Endpoints

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.

MCP server

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.

Drop-in instructions

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

The two fields that matter

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.

Example

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'

Please read

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.