Guided workflows (prompts)
MCP prompts are reusable, guided ontology workflows you pick in your MCP client (Claude Code, Codex, VS Code, Claude Desktop). Each one expands to a single user message that tells the model which Protégé MCP tools to call and in what safe order — orient with context first, preview destructive edits, confirm before writing, and verify with the reasoner. Prompts are pure templates: they carry no model access and cause no side effects; all real work happens through the tools they instruct.
Table of contents
audit_ontologyexplain_classadd_subclass_safelyfind_and_fix_unsatisfiableauthor_sparql_querymodel_domain
audit_ontology
Audits the ontology currently open in Protégé for modelling-quality and logical problems and proposes fixes, without changing anything until you approve. Reach for it when you want a full health check of the active ontology before doing further work.
Arguments
None.
Workflow
- Call
get_ontology_contextto orient (size, roots, reasoner state). - Call
validate_ontologyto collect modelling-quality findings. - Call
run_reasoner, thenget_unsatisfiable_classes, for logical problems. - For the most important findings, call
get_entity_contexton the offending terms to understand them before suggesting changes. - Summarise the issues by severity and propose concrete fixes; use
preview_changesto show the exact axioms before applying anything, and do not modify the ontology until you approve.
explain_class
Explains a single class in plain language — its definition, its neighbourhood in the hierarchy, and what the reasoner infers about it beyond the asserted axioms. Reach for it to understand an unfamiliar or imported term before working with it.
Arguments
| Name | Required | Description |
|---|---|---|
class |
yes | Class IRI or display name. |
Workflow
- Call
get_entity_contextwithentityset to the class for its labels, annotations, asserted parents/children/equivalents and disjoints. - Call
get_axioms_for_entityfor the exact axioms (include_imports=trueif it is an imported term). - Call
run_reasoner, thenget_inferred_superclasseswithentityset to the class, to see what is inferred beyond what is asserted. - Summarise what the class means, where it sits in the hierarchy, its key restrictions, and anything surprising the reasoner derived.
add_subclass_safely
Adds a subclass relationship safely: it confirms both terms exist (to avoid minting a new entity from a typo), previews the change, applies it, and re-checks satisfiability. Reach for it when you want to assert child SubClassOf parent with full guardrails.
Arguments
| Name | Required | Description |
|---|---|---|
child |
yes | Subclass — IRI, name, or Manchester class expression. |
parent |
yes | Superclass — IRI, name, or Manchester class expression. |
Workflow
- Confirm both terms with
get_entity(orsearch_entitiesif a name is ambiguous) — resolve to exact IRIs and avoid creating an unintended new entity from a typo. - Call
preview_changeswith one operation{op:add, axiom_type:subclass_of, sub:child, super:parent}and show the diff and any new entities it would introduce. - After you approve, apply it with
add_subclass_of. - Call
run_reasonerandget_unsatisfiable_classesto confirm the edit did not make any class unsatisfiable.
find_and_fix_unsatisfiable
Finds unsatisfiable classes, explains why each one is unsatisfiable using minimal justifications, and proposes the smallest set of changes to restore satisfiability. Reach for it to debug logical contradictions in the active ontology.
Arguments
None.
Workflow
- Call
run_reasoner, thenget_unsatisfiable_classes. - For each unsatisfiable class C, call
get_explanations(axiom_type=subclass_of,sub=C,super="owl:Nothing") to get the minimal justifications. - For terms in the justifications, call
get_entity_contextto understand them. - Propose the smallest set of axiom removals/changes that restores satisfiability; use
preview_changes(op:remove) to show exactly what would be removed, apply withremove_axiomonly after you approve, and re-run the reasoner to confirm.
author_sparql_query
Authors a SPARQL query that answers a plain-language question: it discovers the available vocabulary, drafts a query using only real terms, validates it, and runs it — refining until the results are right. Reach for it to query the active ontology without hand-writing prefixes or guessing CURIEs.
Arguments
| Name | Required | Description |
|---|---|---|
question |
yes | The question to answer in plain words. |
Workflow
- Call
sparql_schema(passkeyword=a key term from the question to focus it) to get the prefixes and the exact classes, properties (with their domains/ranges) and individuals to use — note the CURIEs and example queries. - Draft a SELECT/ASK/CONSTRUCT/DESCRIBE query using ONLY those CURIEs/IRIs (do not invent term names); the ontology’s prefixes are auto-prepended, so CURIEs work without PREFIX lines.
- Call
sparql_validateon the draft; fix anything inunknown_terms(a typo or wrong vocabulary) and anyparse_erroruntilexecutable=true. - Run it with
sparql_query; if you need triples the reasoner derives (e.g. inferred types or subclasses), setinclude_inferred=true(runrun_reasonerfirst). Refine the pattern and repeat if results are empty or too broad. - Summarise the answer and show the final query used.
model_domain
Models a described domain incrementally: it proposes a small set of terms that fit what already exists, previews the additions, applies them with confirmation, and validates the result. Reach for it to grow the active ontology in small, reviewable batches from a plain-language description.
Arguments
| Name | Required | Description |
|---|---|---|
description |
yes | What to model (the domain in plain words). |
Workflow
- Call
get_ontology_contextto see what already exists (reuse terms, match the naming and IRI style, don’t duplicate). - Propose a small set of classes, properties (with domains/ranges) and any individuals, explaining the modelling choices.
- Express the additions as
preview_changesoperations and show the diff and the new entities before applying. - After you approve, apply with
create_class/create_entity/add_axiom/add_subclass_of, then callvalidate_ontologyandrun_reasonerto check the result. Work in small, reviewable batches.