Skip to content
UPG is in early alpha. The specification is still evolving and may change between versions.
Tools/Spec Introspection

Tool Group

Spec Introspection

Spec introspection: approaches, playbooks, regions, domains, lenses, frameworks.

apply_framework

Apply a framework (MoSCoW, RICE, Kano, ...) to a set of entities: creates a framework_exercise node and an `includes` edge to each entity. The per-entity result is recorded on the edge via score_entity, never on the entity node, so the same entity can sit in many exercises and any entity type can be scored. Returns { exercise_id, exercise, included, warnings }.

get_catalog_entry

Fetch one static spec catalog record by `kind` + `id` (one faceted tool replacing the 15 `get_*-by-id` spec-introspection tools). Reads `@unified-product-graph/core`. `id` is the record identifier for that kind: `playbook`/`framework`/`lens`/`scale`/`anti_pattern`/`tree_pattern`/`domain_ring`/`region`/`approach` take their record id; `entity_meta` takes an entity-type name; `edge_type` takes an edge-type key; `lifecycle`/`type_label` take an entity type; `domain_guide` takes a domain id; `template` takes a template id. Use `list_catalog` to enumerate a kind.

read
get_import_recipe

Get an import recipe for a source: (a) the target UPG schema slice (entity/edge types in play + fields), (b) the source→UPG mapping, a canonical CURATED table served verbatim when one exists (Notion, Jira, Dovetail, and 30+ more), else a schema-grounded SCAFFOLD, and (c) the write tools to call in order (batch_create_nodes → batch_create_edges). You already hold the source data and the write tools; this returns the mapping guidance, executes nothing. The consistency guarantee: a curated source resolves to ONE mapping, so the same source imported twice yields the same graph. Surfaces every deliberate-only edge (e.g. insight_informs_opportunity) as a warning, never a silent write. Sibling of get_catalog_entry (kind: "template"). Omit source to list curated sources.

read
get_spec_version

Spec-level metadata for compatibility checks: `upg_version`, `markdown_format_version`, and canonical counts (entity types, edge types, atomic domains, super-domain regions). Pin against the version pair; counts are informational. Pass `changelog: true` to fold in the spec CHANGELOG (a `whats_new` surface); `since` (a version) returns only newer entries.

read
list_catalog

List a static spec catalog by `kind` (one faceted tool replacing the 25 `list_*` spec-introspection tools). Reads `@unified-product-graph/core`; identical for every client on a given spec version. Kind-specific filters pass straight through: e.g. `playbooks` accepts `region` / `canonical_only` / `framework_id`; `entity_types` accepts `domain` / `maturity` / `deprecated` / `limit` / `cursor`; `benchmarks` requires `benchmark_kind` (`count` | `relationship` | `ratio` | `domain_activation`) plus optional `stage` / `domain`. Use `get_catalog_entry` to fetch one record by id.

read
score_entity

Record a framework's result for one entity on the exercise's includes edge (a MoSCoW bucket, a RICE score, a canvas slot). Auto-includes the entity if not already in scope. Merges into existing edge properties unless replace is set. Returns { edge, warnings }.