@unified-product-graph/mcp-server 0.8.7 → 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 +9 -0
- package/TOOLS.md +23 -16
- package/dist/index.js +218 -14
- package/dist/index.js.map +1 -1
- package/dist/tools-manifest.json +79 -66
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,15 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to `@unified-product-graph/mcp-server` are documented in this file. Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
|
|
4
4
|
|
|
5
|
+
## [0.8.8] - 2026-06-03
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
- `validate_graph` now returns `structurally_valid` (spec conformance, independent of product-health linting) alongside the existing `valid` (combined structure + health, unchanged). N4.
|
|
9
|
+
- Non-breaking parameter aliases: `get_node` accepts `node_id`|`id`, `get_framework` `id`|`framework_id`, `switch_product` `file`|`product`; the canonical key wins and errors name both. N2.
|
|
10
|
+
|
|
11
|
+
### Changed
|
|
12
|
+
- Bundles core 0.8.8 (slot roles, kano/raid-log scoring lenses, framework-score validation).
|
|
13
|
+
|
|
5
14
|
## [0.8.7] - 2026-06-03
|
|
6
15
|
|
|
7
16
|
`list_frameworks` now returns a lightweight summary per framework (the full four-layer record was overflowing the tool-result token cap on the default call); `get_framework` returns the full record. `apply_framework` shares one cross-surface envelope with the CLI (`{ exercise_id, exercise, included, warnings }`). `get_framework` gives a helpful error on an unknown id. Last-writer provenance is stamped on writes. The `upg-prioritise` skill teaches the apply/score exercise flow. Co-versions the @unified-product-graph/* 0.8.7 train.
|
package/TOOLS.md
CHANGED
|
@@ -379,7 +379,8 @@ Get a single entity by ID, with full properties and all connected edges.
|
|
|
379
379
|
| Name | Type | Required | Description |
|
|
380
380
|
| ---- | ---- | -------- | ----------- |
|
|
381
381
|
| `compact_edges` | boolean | | Omit source_title/target_title from edges (saves ~30% on edge-heavy nodes) |
|
|
382
|
-
| `
|
|
382
|
+
| `id` | string | | Alias for `node_id`. |
|
|
383
|
+
| `node_id` | string | ✓ | The node ID. Alias: `id`. |
|
|
383
384
|
|
|
384
385
|
**Returns:**
|
|
385
386
|
|
|
@@ -388,8 +389,8 @@ omits `source_title` and `target_title` (saves ~30% on edge-heavy nodes).
|
|
|
388
389
|
|
|
389
390
|
**Throws:**
|
|
390
391
|
|
|
391
|
-
- Returns a textError when `node_id` is
|
|
392
|
-
exist.
|
|
392
|
+
- Returns a textError when neither `node_id` nor `id` is provided, or
|
|
393
|
+
the node does not exist.
|
|
393
394
|
|
|
394
395
|
**See also:** `get_nodes`
|
|
395
396
|
|
|
@@ -1296,7 +1297,8 @@ loads the new file as separate filesystem operations.`
|
|
|
1296
1297
|
|
|
1297
1298
|
| Name | Type | Required | Description |
|
|
1298
1299
|
| ---- | ---- | -------- | ----------- |
|
|
1299
|
-
| `file` | string | ✓ | Path to the .upg file (relative, absolute, or a bare product name in workspace mode). |
|
|
1300
|
+
| `file` | string | ✓ | Path to the .upg file (relative, absolute, or a bare product name in workspace mode). Alias: `product`. |
|
|
1301
|
+
| `product` | string | | Alias for `file`. |
|
|
1300
1302
|
|
|
1301
1303
|
**Returns:**
|
|
1302
1304
|
|
|
@@ -1304,8 +1306,8 @@ JSON: `{ message, file, product: { title, stage }, entities }`.
|
|
|
1304
1306
|
|
|
1305
1307
|
**Throws:**
|
|
1306
1308
|
|
|
1307
|
-
- Returns a textError when
|
|
1308
|
-
fails (file watcher / parse error).
|
|
1309
|
+
- Returns a textError when neither `file` nor `product` is provided, or
|
|
1310
|
+
the file cannot be resolved, or the load fails (file watcher / parse error).
|
|
1309
1311
|
|
|
1310
1312
|
**Warnings (non-error surfaces):**
|
|
1311
1313
|
|
|
@@ -1568,7 +1570,8 @@ Return one `UPGFramework` by id (e.g. "rice-scoring", "lean-canvas"). Includes a
|
|
|
1568
1570
|
|
|
1569
1571
|
| Name | Type | Required | Description |
|
|
1570
1572
|
| ---- | ---- | -------- | ----------- |
|
|
1571
|
-
| `
|
|
1573
|
+
| `framework_id` | string | | Alias for `id` (matches the key used by apply_framework / prioritise). |
|
|
1574
|
+
| `id` | string | ✓ | Framework id (kebab-case). Alias: `framework_id`. |
|
|
1572
1575
|
|
|
1573
1576
|
**Returns:**
|
|
1574
1577
|
|
|
@@ -1576,7 +1579,8 @@ JSON: the full `UPGFramework` record.
|
|
|
1576
1579
|
|
|
1577
1580
|
**Throws:**
|
|
1578
1581
|
|
|
1579
|
-
- textError when `id` is
|
|
1582
|
+
- textError when neither `id` nor `framework_id` is provided, or the
|
|
1583
|
+
id is unknown.
|
|
1580
1584
|
|
|
1581
1585
|
**See also:** `list_frameworks`, `prioritise`, `get_playbook`, `get_approach`
|
|
1582
1586
|
|
|
@@ -2611,11 +2615,12 @@ Walk the loaded graph and return a per-class, per-node report of schema drift pl
|
|
|
2611
2615
|
|
|
2612
2616
|
**Returns:**
|
|
2613
2617
|
|
|
2614
|
-
JSON: `{ valid, summary, entity_drift?,
|
|
2615
|
-
property_drift?, top_level_drift?, lifecycle_drift?,
|
|
2616
|
-
anti_pattern_violations?, notes?, _hash }`. Per-class
|
|
2617
|
-
only when the requested `scope` includes that class.
|
|
2618
|
-
at `limit` (default 100).
|
|
2618
|
+
JSON: `{ valid, structurally_valid?, summary, entity_drift?,
|
|
2619
|
+
edge_drift?, property_drift?, top_level_drift?, lifecycle_drift?,
|
|
2620
|
+
self_referential?, anti_pattern_violations?, notes?, _hash }`. Per-class
|
|
2621
|
+
drift arrays appear only when the requested `scope` includes that class.
|
|
2622
|
+
Each array is capped at `limit` (default 100). `structurally_valid` is
|
|
2623
|
+
omitted when `skip_drift: true`.
|
|
2619
2624
|
|
|
2620
2625
|
**Throws:**
|
|
2621
2626
|
|
|
@@ -2624,9 +2629,11 @@ recognised values.
|
|
|
2624
2629
|
|
|
2625
2630
|
**Warnings (non-error surfaces):**
|
|
2626
2631
|
|
|
2627
|
-
-
|
|
2628
|
-
|
|
2629
|
-
|
|
2632
|
+
- `valid` is true ONLY when both drift is empty AND no anti-pattern
|
|
2633
|
+
violations fired — it conflates structure and product-health. For a pure
|
|
2634
|
+
spec-conformance check read `structurally_valid` (or set
|
|
2635
|
+
`skip_anti_patterns: true`, which makes `valid` track structure alone).
|
|
2636
|
+
`skip_drift: true` gives a catalog-only run and omits `structurally_valid`.
|
|
2630
2637
|
|
|
2631
2638
|
**Examples:**
|
|
2632
2639
|
|