@unified-product-graph/mcp-server 0.8.6 → 0.8.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +13 -0
- package/TOOLS.md +29 -20
- package/dist/index.js +419 -38
- package/dist/index.js.map +1 -1
- package/dist/tools-manifest.json +91 -75
- package/package.json +2 -1
- package/skills/upg-prioritise/SKILL.md +23 -8
|
@@ -20,7 +20,8 @@ This is the home of the **Prioritise** approach. Where Inspect tells you *what's
|
|
|
20
20
|
Use the `mcp__unified-product-graph__*` MCP tools:
|
|
21
21
|
- **Read candidates:** `list_nodes`, `search_nodes`, `get_node`, `get_product_context`
|
|
22
22
|
- **Approach + frameworks:** `get_approach({ approach_id: "prioritise" })`, `get_framework({ framework_id: "..." })`
|
|
23
|
-
- **
|
|
23
|
+
- **Run + record a framework (the result lives on the graph):** `apply_framework` (creates the exercise and pulls candidates in), `score_entity` (records each candidate's result on its edge). On the CLI: `upg apply <framework> [ids...]`, `upg score <exercise> <entity> --data '{...}'`, and `upg show <exercise>` to read the scores back.
|
|
24
|
+
- **Capture a decision (optional):** `create_node`, `update_node`, `create_edge`
|
|
24
25
|
|
|
25
26
|
## The Prioritisation Frameworks
|
|
26
27
|
|
|
@@ -152,18 +153,32 @@ Always add a one-sentence interpretation below the output: what does the ranking
|
|
|
152
153
|
|
|
153
154
|
### Step 5: Capture the Results
|
|
154
155
|
|
|
155
|
-
Prioritisation that stays in a conversation dies.
|
|
156
|
+
Prioritisation that stays in a conversation dies. The scoring run you just
|
|
157
|
+
facilitated is itself a first-class object: a **framework exercise**. Running a
|
|
158
|
+
framework over a set of candidates creates a `framework_exercise` node, and each
|
|
159
|
+
candidate's result is recorded on an `includes` edge from the exercise to that
|
|
160
|
+
entity. The score lives on the **edge**, not the candidate node, so the same
|
|
161
|
+
feature can be a "must" in one exercise and a "could" in another, and the entity
|
|
162
|
+
stays clean and queryable.
|
|
156
163
|
|
|
157
|
-
|
|
164
|
+
Record the run (confirm before writing):
|
|
158
165
|
|
|
159
|
-
|
|
166
|
+
- **MCP:** `apply_framework({ framework_id, entity_ids, title })` to create the
|
|
167
|
+
exercise and pull the candidates in, then `score_entity({ exercise_id,
|
|
168
|
+
entity_id, values })` per candidate. `values` is the result you computed, e.g.
|
|
169
|
+
`{ "moscow": "must" }` or `{ "reach": 4, "impact": 5, "confidence": 3, "effort": 2 }`.
|
|
170
|
+
- **CLI:** `upg apply <framework> <id...> --title "..."`, then
|
|
171
|
+
`upg score <exercise> <entity> --data '{...}'`; read it back with
|
|
172
|
+
`upg show <exercise>`.
|
|
173
|
+
|
|
174
|
+
You can also capture the *decision* the ranking led to, which is distinct from the
|
|
175
|
+
scores themselves:
|
|
160
176
|
|
|
161
177
|
| What to capture | How |
|
|
162
178
|
|-----------------|-----|
|
|
163
|
-
|
|
|
164
|
-
|
|
|
165
|
-
| A now-explicit "Won't do" item | `create_node`
|
|
166
|
-
| The full scoring run, for reference | Add as a `note` field on a `decision` node |
|
|
179
|
+
| The scoring run (every candidate's result) | `apply_framework` + `score_entity` (above) |
|
|
180
|
+
| A prioritisation decision (chosen framework + what you will do) | `create_node` type `decision`, linked to the exercise and the top candidates |
|
|
181
|
+
| A now-explicit "Won't do" item | `create_node` type `decision`, note the rationale for deferral |
|
|
167
182
|
|
|
168
183
|
Always confirm before writing. Never silently mutate graph nodes.
|
|
169
184
|
|