vantage-peers-mcp 2.7.0 → 2.7.1

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 CHANGED
@@ -1,5 +1,40 @@
1
1
  # Changelog
2
2
 
3
+ ## [2.7.1] — 2026-06-14 — Day 101 FIX-B mcpError() → mcpConvexError() sweep (task k1744wk2gfgqt2gdqh41d4r91h88n410)
4
+
5
+ Patch-level fix to make every tool wrapper surface structured ConvexError
6
+ diagnostics instead of opaque `"Server Error [Request ID: ...]"` strings.
7
+
8
+ **Problem (Day 101):** when a Convex mutation/query threw a `ConvexError`
9
+ (e.g. `TASK_START_BLOCKED`, `COMPLETION_NOTE_REQUIRED`) or an
10
+ `ArgumentValidationError`, the tool wrapper called
11
+ `mcpError(error.message ?? String(error))` which returned a plain
12
+ `Error: <message>` text payload. The MCP client (Claude Code) then often
13
+ re-displayed this as a generic `Server Error [Request ID:...]`, masking the
14
+ actual root cause and triggering misdiagnosis sprees (Pi msg
15
+ `jn7c5tfj0347vaenyqgrezehk188mr11` mistakenly attributed the symptoms to
16
+ a backend regression that did not exist — see Sigma report msg
17
+ `jn773p8qnfp6ycb1f7gajhs8vn88m11a`).
18
+
19
+ **Fix:** sweep all 99 occurrences of
20
+ `return mcpError(error.message ?? String(error))` →
21
+ `return mcpConvexError(error)`. The `mcpConvexError` helper (already
22
+ present at `src/tools.ts:535`, shipped 2.4.x) parses ConvexError messages
23
+ into a structured JSON `{ code, message, path, hint }` payload that
24
+ surfaces the actual error code (`ArgumentValidationError`,
25
+ `ConvexError`, `AuthorizationError`, `SchemaValidationError`, etc.)
26
+ along with a path and a concise hint for ID-table mismatches.
27
+
28
+ Total counts post-sweep: `grep mcpConvexError(` → 102 ; `grep
29
+ mcpError(error.message` → 0.
30
+
31
+ Type check: `npx tsc --noEmit` exits 0.
32
+
33
+ Mission/refs: `k575kc1ryps0n8br95jw3q7d0x88m2v9` MCP CRUD Baseline Standard,
34
+ task FIX-B `k1744wk2gfgqt2gdqh41d4r91h88n410`. Co-shipped with hook
35
+ `enforce-friction-field.py` v1.1.0 STDERR clarification (Day 101 task
36
+ FIX-A `k17ads7kh7qk7yxgfe0dh73ggx88ny9f`).
37
+
3
38
  ## [2.7.0] — 2026-06-13 — Day 100 get_by_id surface Phase 2b (task k172735brsw6bc3j2dkkkfxqrx88kkjq)
4
39
 
5
40
  Phase 2b wires 2 MCP wrappers calling the Phase 2a Convex queries deployed
package/dist/src/tools.js CHANGED
@@ -849,7 +849,7 @@ export function registerTools(server, convex, oauthCtx) {
849
849
  createdBy,
850
850
  errorMessage: error?.message ?? String(error),
851
851
  });
852
- return mcpError(error.message ?? String(error));
852
+ return mcpConvexError(error);
853
853
  }
854
854
  });
855
855
  // ── soft_delete_memory ──────────────────────────────────────────────────────
@@ -882,7 +882,7 @@ export function registerTools(server, convex, oauthCtx) {
882
882
  };
883
883
  }
884
884
  catch (error) {
885
- return mcpError(error.message ?? String(error));
885
+ return mcpConvexError(error);
886
886
  }
887
887
  });
888
888
  // ── get_memory ──────────────────────────────────────────────────────────────
@@ -912,7 +912,7 @@ export function registerTools(server, convex, oauthCtx) {
912
912
  };
913
913
  }
914
914
  catch (error) {
915
- return mcpError(error.message ?? String(error));
915
+ return mcpConvexError(error);
916
916
  }
917
917
  });
918
918
  // ── recall ──────────────────────────────────────────────────────────────────
@@ -967,7 +967,7 @@ export function registerTools(server, convex, oauthCtx) {
967
967
  };
968
968
  }
969
969
  catch (error) {
970
- return mcpError(error.message ?? String(error));
970
+ return mcpConvexError(error);
971
971
  }
972
972
  });
973
973
  // ── text_search ─────────────────────────────────────────────────────────────
@@ -1013,7 +1013,7 @@ export function registerTools(server, convex, oauthCtx) {
1013
1013
  };
1014
1014
  }
1015
1015
  catch (error) {
1016
- return mcpError(error.message ?? String(error));
1016
+ return mcpConvexError(error);
1017
1017
  }
1018
1018
  });
1019
1019
  // ── hybrid_search ───────────────────────────────────────────────────────────
@@ -1070,7 +1070,7 @@ export function registerTools(server, convex, oauthCtx) {
1070
1070
  };
1071
1071
  }
1072
1072
  catch (error) {
1073
- return mcpError(error.message ?? String(error));
1073
+ return mcpConvexError(error);
1074
1074
  }
1075
1075
  });
1076
1076
  // ── store_episode ───────────────────────────────────────────────────────────
@@ -1124,7 +1124,7 @@ export function registerTools(server, convex, oauthCtx) {
1124
1124
  };
1125
1125
  }
1126
1126
  catch (error) {
1127
- return mcpError(error.message ?? String(error));
1127
+ return mcpConvexError(error);
1128
1128
  }
1129
1129
  });
1130
1130
  // ── get_profile ─────────────────────────────────────────────────────────────
@@ -1157,7 +1157,7 @@ export function registerTools(server, convex, oauthCtx) {
1157
1157
  };
1158
1158
  }
1159
1159
  catch (error) {
1160
- return mcpError(error.message ?? String(error));
1160
+ return mcpConvexError(error);
1161
1161
  }
1162
1162
  });
1163
1163
  // ── update_profile ──────────────────────────────────────────────────────────
@@ -1215,7 +1215,7 @@ export function registerTools(server, convex, oauthCtx) {
1215
1215
  };
1216
1216
  }
1217
1217
  catch (error) {
1218
- return mcpError(error.message ?? String(error));
1218
+ return mcpConvexError(error);
1219
1219
  }
1220
1220
  });
1221
1221
  // ── list_memories ───────────────────────────────────────────────────────────
@@ -1316,7 +1316,7 @@ export function registerTools(server, convex, oauthCtx) {
1316
1316
  };
1317
1317
  }
1318
1318
  catch (error) {
1319
- return mcpError(error.message ?? String(error));
1319
+ return mcpConvexError(error);
1320
1320
  }
1321
1321
  });
1322
1322
  // ── send_message ────────────────────────────────────────────────────────────
@@ -1394,7 +1394,7 @@ export function registerTools(server, convex, oauthCtx) {
1394
1394
  channel,
1395
1395
  errorMessage: error?.message ?? String(error),
1396
1396
  });
1397
- return mcpError(error.message ?? String(error));
1397
+ return mcpConvexError(error);
1398
1398
  }
1399
1399
  });
1400
1400
  // ── check_messages ──────────────────────────────────────────────────────────
@@ -1473,7 +1473,7 @@ export function registerTools(server, convex, oauthCtx) {
1473
1473
  };
1474
1474
  }
1475
1475
  catch (error) {
1476
- return mcpError(error.message ?? String(error));
1476
+ return mcpConvexError(error);
1477
1477
  }
1478
1478
  });
1479
1479
  // ── mark_as_read ────────────────────────────────────────────────────────────
@@ -1519,7 +1519,7 @@ export function registerTools(server, convex, oauthCtx) {
1519
1519
  };
1520
1520
  }
1521
1521
  catch (error) {
1522
- return mcpError(error.message ?? String(error));
1522
+ return mcpConvexError(error);
1523
1523
  }
1524
1524
  });
1525
1525
  // ── delete_message ──────────────────────────────────────────────────────────
@@ -1558,7 +1558,7 @@ export function registerTools(server, convex, oauthCtx) {
1558
1558
  };
1559
1559
  }
1560
1560
  catch (error) {
1561
- return mcpError(error.message ?? String(error));
1561
+ return mcpConvexError(error);
1562
1562
  }
1563
1563
  });
1564
1564
  // ── set_summary ─────────────────────────────────────────────────────────────
@@ -1597,7 +1597,7 @@ export function registerTools(server, convex, oauthCtx) {
1597
1597
  };
1598
1598
  }
1599
1599
  catch (error) {
1600
- return mcpError(error.message ?? String(error));
1600
+ return mcpConvexError(error);
1601
1601
  }
1602
1602
  });
1603
1603
  // ── list_peers ──────────────────────────────────────────────────────────────
@@ -1683,7 +1683,7 @@ export function registerTools(server, convex, oauthCtx) {
1683
1683
  };
1684
1684
  }
1685
1685
  catch (error) {
1686
- return mcpError(error.message ?? String(error));
1686
+ return mcpConvexError(error);
1687
1687
  }
1688
1688
  });
1689
1689
  // ── list_messages ───────────────────────────────────────────────────────────
@@ -1774,7 +1774,7 @@ export function registerTools(server, convex, oauthCtx) {
1774
1774
  };
1775
1775
  }
1776
1776
  catch (error) {
1777
- return mcpError(error.message ?? String(error));
1777
+ return mcpConvexError(error);
1778
1778
  }
1779
1779
  });
1780
1780
  // ── list_broadcast_status ───────────────────────────────────────────────────
@@ -1826,7 +1826,7 @@ export function registerTools(server, convex, oauthCtx) {
1826
1826
  };
1827
1827
  }
1828
1828
  catch (error) {
1829
- return mcpError(error.message ?? String(error));
1829
+ return mcpConvexError(error);
1830
1830
  }
1831
1831
  });
1832
1832
  // ── create_task ─────────────────────────────────────────────────────────────
@@ -1903,7 +1903,7 @@ export function registerTools(server, convex, oauthCtx) {
1903
1903
  };
1904
1904
  }
1905
1905
  catch (error) {
1906
- return mcpError(error.message ?? String(error));
1906
+ return mcpConvexError(error);
1907
1907
  }
1908
1908
  });
1909
1909
  // ── list_tasks ──────────────────────────────────────────────────────────────
@@ -2014,7 +2014,7 @@ export function registerTools(server, convex, oauthCtx) {
2014
2014
  };
2015
2015
  }
2016
2016
  catch (error) {
2017
- return mcpError(error.message ?? String(error));
2017
+ return mcpConvexError(error);
2018
2018
  }
2019
2019
  });
2020
2020
  // ── update_task ─────────────────────────────────────────────────────────────
@@ -2099,7 +2099,7 @@ export function registerTools(server, convex, oauthCtx) {
2099
2099
  };
2100
2100
  }
2101
2101
  catch (error) {
2102
- return mcpError(error.message ?? String(error));
2102
+ return mcpConvexError(error);
2103
2103
  }
2104
2104
  });
2105
2105
  // ── complete_task ───────────────────────────────────────────────────────────
@@ -2140,7 +2140,7 @@ export function registerTools(server, convex, oauthCtx) {
2140
2140
  };
2141
2141
  }
2142
2142
  catch (error) {
2143
- return mcpError(error.message ?? String(error));
2143
+ return mcpConvexError(error);
2144
2144
  }
2145
2145
  });
2146
2146
  // ── start_task ──────────────────────────────────────────────────────────────
@@ -2177,7 +2177,7 @@ export function registerTools(server, convex, oauthCtx) {
2177
2177
  };
2178
2178
  }
2179
2179
  catch (error) {
2180
- return mcpError(error.message ?? String(error));
2180
+ return mcpConvexError(error);
2181
2181
  }
2182
2182
  });
2183
2183
  // ── checkout_task ───────────────────────────────────────────────────────────
@@ -2215,7 +2215,7 @@ export function registerTools(server, convex, oauthCtx) {
2215
2215
  };
2216
2216
  }
2217
2217
  catch (error) {
2218
- return mcpError(error.message ?? String(error));
2218
+ return mcpConvexError(error);
2219
2219
  }
2220
2220
  });
2221
2221
  // ── delete_task ─────────────────────────────────────────────────────────────
@@ -2252,7 +2252,7 @@ export function registerTools(server, convex, oauthCtx) {
2252
2252
  };
2253
2253
  }
2254
2254
  catch (error) {
2255
- return mcpError(error.message ?? String(error));
2255
+ return mcpConvexError(error);
2256
2256
  }
2257
2257
  });
2258
2258
  // ── block_task ──────────────────────────────────────────────────────────────
@@ -2301,7 +2301,7 @@ export function registerTools(server, convex, oauthCtx) {
2301
2301
  };
2302
2302
  }
2303
2303
  catch (error) {
2304
- return mcpError(error.message ?? String(error));
2304
+ return mcpConvexError(error);
2305
2305
  }
2306
2306
  });
2307
2307
  // ── add_task_dependency ─────────────────────────────────────────────────────
@@ -2346,7 +2346,7 @@ export function registerTools(server, convex, oauthCtx) {
2346
2346
  };
2347
2347
  }
2348
2348
  catch (error) {
2349
- return mcpError(error.message ?? String(error));
2349
+ return mcpConvexError(error);
2350
2350
  }
2351
2351
  });
2352
2352
  // ── list_tasks_by_mission ───────────────────────────────────────────────────
@@ -2429,7 +2429,7 @@ export function registerTools(server, convex, oauthCtx) {
2429
2429
  };
2430
2430
  }
2431
2431
  catch (error) {
2432
- return mcpError(error.message ?? String(error));
2432
+ return mcpConvexError(error);
2433
2433
  }
2434
2434
  });
2435
2435
  // ── create_mission ──────────────────────────────────────────────────────────
@@ -2490,7 +2490,7 @@ export function registerTools(server, convex, oauthCtx) {
2490
2490
  };
2491
2491
  }
2492
2492
  catch (error) {
2493
- return mcpError(error.message ?? String(error));
2493
+ return mcpConvexError(error);
2494
2494
  }
2495
2495
  });
2496
2496
  // ── list_missions ───────────────────────────────────────────────────────────
@@ -2588,7 +2588,7 @@ export function registerTools(server, convex, oauthCtx) {
2588
2588
  };
2589
2589
  }
2590
2590
  catch (error) {
2591
- return mcpError(error.message ?? String(error));
2591
+ return mcpConvexError(error);
2592
2592
  }
2593
2593
  });
2594
2594
  // ── get_mission ─────────────────────────────────────────────────────────────
@@ -2618,7 +2618,7 @@ export function registerTools(server, convex, oauthCtx) {
2618
2618
  };
2619
2619
  }
2620
2620
  catch (error) {
2621
- return mcpError(error.message ?? String(error));
2621
+ return mcpConvexError(error);
2622
2622
  }
2623
2623
  });
2624
2624
  // ── update_mission ──────────────────────────────────────────────────────────
@@ -2675,7 +2675,7 @@ export function registerTools(server, convex, oauthCtx) {
2675
2675
  };
2676
2676
  }
2677
2677
  catch (error) {
2678
- return mcpError(error.message ?? String(error));
2678
+ return mcpConvexError(error);
2679
2679
  }
2680
2680
  });
2681
2681
  // ── update_mission_status ───────────────────────────────────────────────────
@@ -2710,7 +2710,7 @@ export function registerTools(server, convex, oauthCtx) {
2710
2710
  };
2711
2711
  }
2712
2712
  catch (error) {
2713
- return mcpError(error.message ?? String(error));
2713
+ return mcpConvexError(error);
2714
2714
  }
2715
2715
  });
2716
2716
  // ── write_diary ─────────────────────────────────────────────────────────────
@@ -2766,7 +2766,7 @@ export function registerTools(server, convex, oauthCtx) {
2766
2766
  orchestrator,
2767
2767
  errorMessage: error?.message ?? String(error),
2768
2768
  });
2769
- return mcpError(error.message ?? String(error));
2769
+ return mcpConvexError(error);
2770
2770
  }
2771
2771
  });
2772
2772
  // ── get_diary ───────────────────────────────────────────────────────────────
@@ -2809,7 +2809,7 @@ export function registerTools(server, convex, oauthCtx) {
2809
2809
  };
2810
2810
  }
2811
2811
  catch (error) {
2812
- return mcpError(error.message ?? String(error));
2812
+ return mcpConvexError(error);
2813
2813
  }
2814
2814
  });
2815
2815
  // ── list_diaries ────────────────────────────────────────────────────────────
@@ -2902,7 +2902,7 @@ export function registerTools(server, convex, oauthCtx) {
2902
2902
  };
2903
2903
  }
2904
2904
  catch (error) {
2905
- return mcpError(error.message ?? String(error));
2905
+ return mcpConvexError(error);
2906
2906
  }
2907
2907
  });
2908
2908
  // ── create_briefing_note ────────────────────────────────────────────────────
@@ -3041,7 +3041,7 @@ export function registerTools(server, convex, oauthCtx) {
3041
3041
  };
3042
3042
  }
3043
3043
  catch (error) {
3044
- return mcpError(error.message ?? String(error));
3044
+ return mcpConvexError(error);
3045
3045
  }
3046
3046
  });
3047
3047
  // ── list_briefing_notes ─────────────────────────────────────────────────────
@@ -3140,7 +3140,7 @@ export function registerTools(server, convex, oauthCtx) {
3140
3140
  };
3141
3141
  }
3142
3142
  catch (error) {
3143
- return mcpError(error.message ?? String(error));
3143
+ return mcpConvexError(error);
3144
3144
  }
3145
3145
  });
3146
3146
  // ── register_component ──────────────────────────────────────────────────────
@@ -3202,7 +3202,7 @@ export function registerTools(server, convex, oauthCtx) {
3202
3202
  createdBy,
3203
3203
  errorMessage: error?.message ?? String(error),
3204
3204
  });
3205
- return mcpError(error.message ?? String(error));
3205
+ return mcpConvexError(error);
3206
3206
  }
3207
3207
  });
3208
3208
  // ── list_components ─────────────────────────────────────────────────────────
@@ -3280,7 +3280,7 @@ export function registerTools(server, convex, oauthCtx) {
3280
3280
  };
3281
3281
  }
3282
3282
  catch (error) {
3283
- return mcpError(error.message ?? String(error));
3283
+ return mcpConvexError(error);
3284
3284
  }
3285
3285
  });
3286
3286
  // ── get_component ───────────────────────────────────────────────────────────
@@ -3312,7 +3312,7 @@ export function registerTools(server, convex, oauthCtx) {
3312
3312
  };
3313
3313
  }
3314
3314
  catch (error) {
3315
- return mcpError(error.message ?? String(error));
3315
+ return mcpConvexError(error);
3316
3316
  }
3317
3317
  });
3318
3318
  // ── update_component ────────────────────────────────────────────────────────
@@ -3361,7 +3361,7 @@ export function registerTools(server, convex, oauthCtx) {
3361
3361
  componentId,
3362
3362
  errorMessage: error?.message ?? String(error),
3363
3363
  });
3364
- return mcpError(error.message ?? String(error));
3364
+ return mcpConvexError(error);
3365
3365
  }
3366
3366
  });
3367
3367
  // ── delete_component ────────────────────────────────────────────────────────
@@ -3390,7 +3390,7 @@ export function registerTools(server, convex, oauthCtx) {
3390
3390
  };
3391
3391
  }
3392
3392
  catch (error) {
3393
- return mcpError(error.message ?? String(error));
3393
+ return mcpConvexError(error);
3394
3394
  }
3395
3395
  });
3396
3396
  // ── search_components ───────────────────────────────────────────────────────
@@ -3441,7 +3441,7 @@ export function registerTools(server, convex, oauthCtx) {
3441
3441
  };
3442
3442
  }
3443
3443
  catch (error) {
3444
- return mcpError(error.message ?? String(error));
3444
+ return mcpConvexError(error);
3445
3445
  }
3446
3446
  });
3447
3447
  // ── create_recurring_task ───────────────────────────────────────────────────
@@ -3500,7 +3500,7 @@ export function registerTools(server, convex, oauthCtx) {
3500
3500
  };
3501
3501
  }
3502
3502
  catch (error) {
3503
- return mcpError(error.message ?? String(error));
3503
+ return mcpConvexError(error);
3504
3504
  }
3505
3505
  });
3506
3506
  // ── list_recurring_tasks ────────────────────────────────────────────────────
@@ -3573,7 +3573,7 @@ export function registerTools(server, convex, oauthCtx) {
3573
3573
  };
3574
3574
  }
3575
3575
  catch (error) {
3576
- return mcpError(error.message ?? String(error));
3576
+ return mcpConvexError(error);
3577
3577
  }
3578
3578
  });
3579
3579
  // ── pause_recurring_task ────────────────────────────────────────────────────
@@ -3600,7 +3600,7 @@ export function registerTools(server, convex, oauthCtx) {
3600
3600
  };
3601
3601
  }
3602
3602
  catch (error) {
3603
- return mcpError(error.message ?? String(error));
3603
+ return mcpConvexError(error);
3604
3604
  }
3605
3605
  });
3606
3606
  // ── resume_recurring_task ───────────────────────────────────────────────────
@@ -3627,7 +3627,7 @@ export function registerTools(server, convex, oauthCtx) {
3627
3627
  };
3628
3628
  }
3629
3629
  catch (error) {
3630
- return mcpError(error.message ?? String(error));
3630
+ return mcpConvexError(error);
3631
3631
  }
3632
3632
  });
3633
3633
  // ── delete_recurring_task ───────────────────────────────────────────────────
@@ -3654,7 +3654,7 @@ export function registerTools(server, convex, oauthCtx) {
3654
3654
  };
3655
3655
  }
3656
3656
  catch (error) {
3657
- return mcpError(error.message ?? String(error));
3657
+ return mcpConvexError(error);
3658
3658
  }
3659
3659
  });
3660
3660
  // ── update_recurring_task ───────────────────────────────────────────────────
@@ -3700,7 +3700,7 @@ export function registerTools(server, convex, oauthCtx) {
3700
3700
  };
3701
3701
  }
3702
3702
  catch (error) {
3703
- return mcpError(error.message ?? String(error));
3703
+ return mcpConvexError(error);
3704
3704
  }
3705
3705
  });
3706
3706
  // ── create_mandate ──────────────────────────────────────────────────────────
@@ -3759,7 +3759,7 @@ export function registerTools(server, convex, oauthCtx) {
3759
3759
  };
3760
3760
  }
3761
3761
  catch (error) {
3762
- return mcpError(error.message ?? String(error));
3762
+ return mcpConvexError(error);
3763
3763
  }
3764
3764
  });
3765
3765
  // ── accept_mandate ──────────────────────────────────────────────────────────
@@ -3794,7 +3794,7 @@ export function registerTools(server, convex, oauthCtx) {
3794
3794
  };
3795
3795
  }
3796
3796
  catch (error) {
3797
- return mcpError(error.message ?? String(error));
3797
+ return mcpConvexError(error);
3798
3798
  }
3799
3799
  });
3800
3800
  // ── update_mandate ──────────────────────────────────────────────────────────
@@ -3838,7 +3838,7 @@ export function registerTools(server, convex, oauthCtx) {
3838
3838
  };
3839
3839
  }
3840
3840
  catch (error) {
3841
- return mcpError(error.message ?? String(error));
3841
+ return mcpConvexError(error);
3842
3842
  }
3843
3843
  });
3844
3844
  // ── settle_mandate ──────────────────────────────────────────────────────────
@@ -3875,7 +3875,7 @@ export function registerTools(server, convex, oauthCtx) {
3875
3875
  };
3876
3876
  }
3877
3877
  catch (error) {
3878
- return mcpError(error.message ?? String(error));
3878
+ return mcpConvexError(error);
3879
3879
  }
3880
3880
  });
3881
3881
  // ── validate_mandate_spending ───────────────────────────────────────────────
@@ -3902,7 +3902,7 @@ export function registerTools(server, convex, oauthCtx) {
3902
3902
  };
3903
3903
  }
3904
3904
  catch (error) {
3905
- return mcpError(error.message ?? String(error));
3905
+ return mcpConvexError(error);
3906
3906
  }
3907
3907
  });
3908
3908
  // ── list_mandates ───────────────────────────────────────────────────────────
@@ -3988,7 +3988,7 @@ export function registerTools(server, convex, oauthCtx) {
3988
3988
  };
3989
3989
  }
3990
3990
  catch (error) {
3991
- return mcpError(error.message ?? String(error));
3991
+ return mcpConvexError(error);
3992
3992
  }
3993
3993
  });
3994
3994
  // ── create_bu ───────────────────────────────────────────────────────────────
@@ -4058,7 +4058,7 @@ export function registerTools(server, convex, oauthCtx) {
4058
4058
  };
4059
4059
  }
4060
4060
  catch (error) {
4061
- return mcpError(error.message ?? String(error));
4061
+ return mcpConvexError(error);
4062
4062
  }
4063
4063
  });
4064
4064
  // ── update_bu ───────────────────────────────────────────────────────────────
@@ -4127,7 +4127,7 @@ export function registerTools(server, convex, oauthCtx) {
4127
4127
  };
4128
4128
  }
4129
4129
  catch (error) {
4130
- return mcpError(error.message ?? String(error));
4130
+ return mcpConvexError(error);
4131
4131
  }
4132
4132
  });
4133
4133
  // ── get_bu ──────────────────────────────────────────────────────────────────
@@ -4157,7 +4157,7 @@ export function registerTools(server, convex, oauthCtx) {
4157
4157
  };
4158
4158
  }
4159
4159
  catch (error) {
4160
- return mcpError(error.message ?? String(error));
4160
+ return mcpConvexError(error);
4161
4161
  }
4162
4162
  });
4163
4163
  // ── list_bus ────────────────────────────────────────────────────────────────
@@ -4237,7 +4237,7 @@ export function registerTools(server, convex, oauthCtx) {
4237
4237
  };
4238
4238
  }
4239
4239
  catch (error) {
4240
- return mcpError(error.message ?? String(error));
4240
+ return mcpConvexError(error);
4241
4241
  }
4242
4242
  });
4243
4243
  // ── delete_bu ───────────────────────────────────────────────────────────────
@@ -4271,7 +4271,7 @@ export function registerTools(server, convex, oauthCtx) {
4271
4271
  };
4272
4272
  }
4273
4273
  catch (error) {
4274
- return mcpError(error.message ?? String(error));
4274
+ return mcpConvexError(error);
4275
4275
  }
4276
4276
  });
4277
4277
  // ── add_repo_mapping ────────────────────────────────────────────────────────
@@ -4319,7 +4319,7 @@ export function registerTools(server, convex, oauthCtx) {
4319
4319
  };
4320
4320
  }
4321
4321
  catch (error) {
4322
- return mcpError(error.message ?? String(error));
4322
+ return mcpConvexError(error);
4323
4323
  }
4324
4324
  });
4325
4325
  // ── list_repo_mappings ──────────────────────────────────────────────────────
@@ -4393,7 +4393,7 @@ export function registerTools(server, convex, oauthCtx) {
4393
4393
  };
4394
4394
  }
4395
4395
  catch (error) {
4396
- return mcpError(error.message ?? String(error));
4396
+ return mcpConvexError(error);
4397
4397
  }
4398
4398
  });
4399
4399
  // ── remove_repo_mapping ─────────────────────────────────────────────────────
@@ -4427,7 +4427,7 @@ export function registerTools(server, convex, oauthCtx) {
4427
4427
  };
4428
4428
  }
4429
4429
  catch (error) {
4430
- return mcpError(error.message ?? String(error));
4430
+ return mcpConvexError(error);
4431
4431
  }
4432
4432
  });
4433
4433
  // ── list_issues ─────────────────────────────────────────────────────────────
@@ -4547,7 +4547,7 @@ export function registerTools(server, convex, oauthCtx) {
4547
4547
  };
4548
4548
  }
4549
4549
  catch (error) {
4550
- return mcpError(error.message ?? String(error));
4550
+ return mcpConvexError(error);
4551
4551
  }
4552
4552
  });
4553
4553
  // ── get_issue ───────────────────────────────────────────────────────────────
@@ -4581,7 +4581,7 @@ export function registerTools(server, convex, oauthCtx) {
4581
4581
  };
4582
4582
  }
4583
4583
  catch (error) {
4584
- return mcpError(error.message ?? String(error));
4584
+ return mcpConvexError(error);
4585
4585
  }
4586
4586
  });
4587
4587
  // ── update_issue_status ─────────────────────────────────────────────────────
@@ -4621,7 +4621,7 @@ export function registerTools(server, convex, oauthCtx) {
4621
4621
  };
4622
4622
  }
4623
4623
  catch (error) {
4624
- return mcpError(error.message ?? String(error));
4624
+ return mcpConvexError(error);
4625
4625
  }
4626
4626
  });
4627
4627
  // ── link_commit_to_issue ────────────────────────────────────────────────────
@@ -4659,7 +4659,7 @@ export function registerTools(server, convex, oauthCtx) {
4659
4659
  };
4660
4660
  }
4661
4661
  catch (error) {
4662
- return mcpError(error.message ?? String(error));
4662
+ return mcpConvexError(error);
4663
4663
  }
4664
4664
  });
4665
4665
  // ── verify_issue ────────────────────────────────────────────────────────────
@@ -4695,7 +4695,7 @@ export function registerTools(server, convex, oauthCtx) {
4695
4695
  };
4696
4696
  }
4697
4697
  catch (error) {
4698
- return mcpError(error.message ?? String(error));
4698
+ return mcpConvexError(error);
4699
4699
  }
4700
4700
  });
4701
4701
  // ── issue_stats ─────────────────────────────────────────────────────────────
@@ -4728,7 +4728,7 @@ export function registerTools(server, convex, oauthCtx) {
4728
4728
  };
4729
4729
  }
4730
4730
  catch (error) {
4731
- return mcpError(error.message ?? String(error));
4731
+ return mcpConvexError(error);
4732
4732
  }
4733
4733
  });
4734
4734
  // ── create_fix_pattern ──────────────────────────────────────────────────────
@@ -4786,7 +4786,7 @@ export function registerTools(server, convex, oauthCtx) {
4786
4786
  };
4787
4787
  }
4788
4788
  catch (error) {
4789
- return mcpError(error.message ?? String(error));
4789
+ return mcpConvexError(error);
4790
4790
  }
4791
4791
  });
4792
4792
  // ── add_fix_attempt ─────────────────────────────────────────────────────────
@@ -4827,7 +4827,7 @@ export function registerTools(server, convex, oauthCtx) {
4827
4827
  };
4828
4828
  }
4829
4829
  catch (error) {
4830
- return mcpError(error.message ?? String(error));
4830
+ return mcpConvexError(error);
4831
4831
  }
4832
4832
  });
4833
4833
  // ── validate_fix ────────────────────────────────────────────────────────────
@@ -4861,7 +4861,7 @@ export function registerTools(server, convex, oauthCtx) {
4861
4861
  };
4862
4862
  }
4863
4863
  catch (error) {
4864
- return mcpError(error.message ?? String(error));
4864
+ return mcpConvexError(error);
4865
4865
  }
4866
4866
  });
4867
4867
  // ── search_fix_patterns ─────────────────────────────────────────────────────
@@ -4912,7 +4912,7 @@ export function registerTools(server, convex, oauthCtx) {
4912
4912
  };
4913
4913
  }
4914
4914
  catch (error) {
4915
- return mcpError(error.message ?? String(error));
4915
+ return mcpConvexError(error);
4916
4916
  }
4917
4917
  });
4918
4918
  // ── list_fix_patterns ───────────────────────────────────────────────────────
@@ -5001,7 +5001,7 @@ export function registerTools(server, convex, oauthCtx) {
5001
5001
  };
5002
5002
  }
5003
5003
  catch (error) {
5004
- return mcpError(error.message ?? String(error));
5004
+ return mcpConvexError(error);
5005
5005
  }
5006
5006
  });
5007
5007
  // ── link_issue_to_pattern ───────────────────────────────────────────────────
@@ -5035,7 +5035,7 @@ export function registerTools(server, convex, oauthCtx) {
5035
5035
  };
5036
5036
  }
5037
5037
  catch (error) {
5038
- return mcpError(error.message ?? String(error));
5038
+ return mcpConvexError(error);
5039
5039
  }
5040
5040
  });
5041
5041
  // ── get_mission_template ────────────────────────────────────────────────────
@@ -5063,7 +5063,7 @@ export function registerTools(server, convex, oauthCtx) {
5063
5063
  };
5064
5064
  }
5065
5065
  catch (error) {
5066
- return mcpError(error.message ?? String(error));
5066
+ return mcpConvexError(error);
5067
5067
  }
5068
5068
  });
5069
5069
  // ── update_mission_template ─────────────────────────────────────────────────
@@ -5131,7 +5131,7 @@ export function registerTools(server, convex, oauthCtx) {
5131
5131
  };
5132
5132
  }
5133
5133
  catch (error) {
5134
- return mcpError(error.message ?? String(error));
5134
+ return mcpConvexError(error);
5135
5135
  }
5136
5136
  });
5137
5137
  // ── instantiate_template_into_mission ───────────────────────────────────────
@@ -5192,7 +5192,7 @@ export function registerTools(server, convex, oauthCtx) {
5192
5192
  };
5193
5193
  }
5194
5194
  catch (error) {
5195
- return mcpError(error.message ?? String(error));
5195
+ return mcpConvexError(error);
5196
5196
  }
5197
5197
  });
5198
5198
  // ── add_deployment ──────────────────────────────────────────────────────────
@@ -5242,7 +5242,7 @@ export function registerTools(server, convex, oauthCtx) {
5242
5242
  };
5243
5243
  }
5244
5244
  catch (error) {
5245
- return mcpError(error.message ?? String(error));
5245
+ return mcpConvexError(error);
5246
5246
  }
5247
5247
  });
5248
5248
  // ── remove_deployment ───────────────────────────────────────────────────────
@@ -5274,7 +5274,7 @@ export function registerTools(server, convex, oauthCtx) {
5274
5274
  };
5275
5275
  }
5276
5276
  catch (error) {
5277
- return mcpError(error.message ?? String(error));
5277
+ return mcpConvexError(error);
5278
5278
  }
5279
5279
  });
5280
5280
  // ── list_errors ─────────────────────────────────────────────────────────────
@@ -5353,7 +5353,7 @@ export function registerTools(server, convex, oauthCtx) {
5353
5353
  };
5354
5354
  }
5355
5355
  catch (error) {
5356
- return mcpError(error.message ?? String(error));
5356
+ return mcpConvexError(error);
5357
5357
  }
5358
5358
  });
5359
5359
  // ── get_error ───────────────────────────────────────────────────────────────
@@ -5383,7 +5383,7 @@ export function registerTools(server, convex, oauthCtx) {
5383
5383
  };
5384
5384
  }
5385
5385
  catch (error) {
5386
- return mcpError(error.message ?? String(error));
5386
+ return mcpConvexError(error);
5387
5387
  }
5388
5388
  });
5389
5389
  // ── whoami ──────────────────────────────────────────────────────────────────
@@ -5512,7 +5512,7 @@ export function registerTools(server, convex, oauthCtx) {
5512
5512
  repo: z.string(),
5513
5513
  orchestrator: z.string(),
5514
5514
  project: z.string().optional(),
5515
- }, async ({ repo, orchestrator, project }) => {
5515
+ }, { readOnlyHint: false, openWorldHint: false, destructiveHint: false, title: "Register repo mapping (alias)" }, async ({ repo, orchestrator, project }) => {
5516
5516
  const masterDenied = guardMasterOnly("register_repo_mapping");
5517
5517
  if (masterDenied)
5518
5518
  return masterDenied;
@@ -5525,7 +5525,7 @@ export function registerTools(server, convex, oauthCtx) {
5525
5525
  return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
5526
5526
  }
5527
5527
  catch (error) {
5528
- return mcpError(error.message ?? String(error));
5528
+ return mcpConvexError(error);
5529
5529
  }
5530
5530
  });
5531
5531
  // delete_repo_mapping → was remove_repo_mapping [ALIAS of remove_repo_mapping — C0.3 master-only]
@@ -5533,7 +5533,7 @@ export function registerTools(server, convex, oauthCtx) {
5533
5533
  "WHEN: use when a repo is archived or its events should no longer generate VP notifications. " +
5534
5534
  "EXAMPLE: delete_repo_mapping repo='vantageos-agency/vantage-peers'.", {
5535
5535
  repo: z.string(),
5536
- }, async ({ repo }) => {
5536
+ }, { readOnlyHint: false, openWorldHint: false, destructiveHint: true, title: "Delete repo mapping (alias)" }, async ({ repo }) => {
5537
5537
  const masterDenied = guardMasterOnly("delete_repo_mapping");
5538
5538
  if (masterDenied)
5539
5539
  return masterDenied;
@@ -5542,7 +5542,7 @@ export function registerTools(server, convex, oauthCtx) {
5542
5542
  return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
5543
5543
  }
5544
5544
  catch (error) {
5545
- return mcpError(error.message ?? String(error));
5545
+ return mcpConvexError(error);
5546
5546
  }
5547
5547
  });
5548
5548
  // register_deployment → was add_deployment [ALIAS of add_deployment — C0.1 master-only]
@@ -5554,7 +5554,7 @@ export function registerTools(server, convex, oauthCtx) {
5554
5554
  deployKeyEnvVar: z.string(),
5555
5555
  githubRepo: z.string(),
5556
5556
  orchestrator: z.string(),
5557
- }, async ({ name, deploymentUrl, deployKeyEnvVar, githubRepo, orchestrator }) => {
5557
+ }, { readOnlyHint: false, openWorldHint: false, destructiveHint: false, title: "Register deployment (alias)" }, async ({ name, deploymentUrl, deployKeyEnvVar, githubRepo, orchestrator }) => {
5558
5558
  const masterDenied = guardMasterOnly("register_deployment");
5559
5559
  if (masterDenied)
5560
5560
  return masterDenied;
@@ -5569,7 +5569,7 @@ export function registerTools(server, convex, oauthCtx) {
5569
5569
  return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
5570
5570
  }
5571
5571
  catch (error) {
5572
- return mcpError(error.message ?? String(error));
5572
+ return mcpConvexError(error);
5573
5573
  }
5574
5574
  });
5575
5575
  // delete_deployment → was remove_deployment [ALIAS of remove_deployment — C0.1 master-only]
@@ -5577,7 +5577,7 @@ export function registerTools(server, convex, oauthCtx) {
5577
5577
  "WHEN: use when a deployment is retired or moved to a different monitoring config. " +
5578
5578
  "EXAMPLE: delete_deployment name='vantage-prod'.", {
5579
5579
  name: z.string(),
5580
- }, async ({ name }) => {
5580
+ }, { readOnlyHint: false, openWorldHint: false, destructiveHint: true, title: "Delete deployment (alias)" }, async ({ name }) => {
5581
5581
  const masterDenied = guardMasterOnly("delete_deployment");
5582
5582
  if (masterDenied)
5583
5583
  return masterDenied;
@@ -5586,7 +5586,7 @@ export function registerTools(server, convex, oauthCtx) {
5586
5586
  return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
5587
5587
  }
5588
5588
  catch (error) {
5589
- return mcpError(error.message ?? String(error));
5589
+ return mcpConvexError(error);
5590
5590
  }
5591
5591
  });
5592
5592
  // check_mandate_spending → was validate_mandate_spending (not C0-gated — read-only check)
@@ -5595,7 +5595,7 @@ export function registerTools(server, convex, oauthCtx) {
5595
5595
  "EXAMPLE: check_mandate_spending mandateId='j57aaaaa...' proposedAmount=500.", {
5596
5596
  mandateId: z.string(),
5597
5597
  proposedAmount: z.number(),
5598
- }, async ({ mandateId, proposedAmount }) => {
5598
+ }, { readOnlyHint: true, openWorldHint: false, destructiveHint: false, title: "Check mandate spending (alias)" }, async ({ mandateId, proposedAmount }) => {
5599
5599
  try {
5600
5600
  const result = await convex.query("mandates:validateSpending", {
5601
5601
  mandateId,
@@ -5604,7 +5604,7 @@ export function registerTools(server, convex, oauthCtx) {
5604
5604
  return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
5605
5605
  }
5606
5606
  catch (error) {
5607
- return mcpError(error.message ?? String(error));
5607
+ return mcpConvexError(error);
5608
5608
  }
5609
5609
  });
5610
5610
  // check_fix → was validate_fix [ALIAS of validate_fix — C0.5 master-only]
@@ -5613,7 +5613,7 @@ export function registerTools(server, convex, oauthCtx) {
5613
5613
  "EXAMPLE: check_fix patternId='j57aaaaa...' validatedFix='Add suppressHydrationWarning to date elements'.", {
5614
5614
  patternId: z.string(),
5615
5615
  validatedFix: z.string(),
5616
- }, async ({ patternId, validatedFix }) => {
5616
+ }, { readOnlyHint: false, openWorldHint: false, destructiveHint: false, title: "Check/validate fix (alias)" }, async ({ patternId, validatedFix }) => {
5617
5617
  const masterDenied = guardMasterOnly("check_fix");
5618
5618
  if (masterDenied)
5619
5619
  return masterDenied;
@@ -5625,7 +5625,7 @@ export function registerTools(server, convex, oauthCtx) {
5625
5625
  return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
5626
5626
  }
5627
5627
  catch (error) {
5628
- return mcpError(error.message ?? String(error));
5628
+ return mcpConvexError(error);
5629
5629
  }
5630
5630
  });
5631
5631
  // create_fix_attempt → was add_fix_attempt (not C0-gated — uses guardFrom(createdBy))
@@ -5638,7 +5638,7 @@ export function registerTools(server, convex, oauthCtx) {
5638
5638
  why: z.string().optional(),
5639
5639
  commitSha: z.string().optional(),
5640
5640
  createdBy: z.string(),
5641
- }, async ({ patternId, description, worked, why, commitSha, createdBy }) => {
5641
+ }, { readOnlyHint: false, openWorldHint: false, destructiveHint: false, title: "Create fix attempt (alias)" }, async ({ patternId, description, worked, why, commitSha, createdBy }) => {
5642
5642
  const fromDenied = guardFrom(createdBy);
5643
5643
  if (fromDenied)
5644
5644
  return fromDenied;
@@ -5654,7 +5654,7 @@ export function registerTools(server, convex, oauthCtx) {
5654
5654
  return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
5655
5655
  }
5656
5656
  catch (error) {
5657
- return mcpError(error.message ?? String(error));
5657
+ return mcpConvexError(error);
5658
5658
  }
5659
5659
  });
5660
5660
  // create_task_dependency → was add_task_dependency (not C0-gated — uses callerOrchestrator auth)
@@ -5664,7 +5664,7 @@ export function registerTools(server, convex, oauthCtx) {
5664
5664
  taskId: z.string(),
5665
5665
  dependsOn: z.array(z.string()),
5666
5666
  callerOrchestrator: z.string(),
5667
- }, async ({ taskId, dependsOn, callerOrchestrator }) => {
5667
+ }, { readOnlyHint: false, openWorldHint: false, destructiveHint: false, title: "Create task dependency (alias)" }, async ({ taskId, dependsOn, callerOrchestrator }) => {
5668
5668
  try {
5669
5669
  const result = await convex.mutation("tasks:update", {
5670
5670
  taskId,
@@ -5674,7 +5674,7 @@ export function registerTools(server, convex, oauthCtx) {
5674
5674
  return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
5675
5675
  }
5676
5676
  catch (error) {
5677
- return mcpError(error.message ?? String(error));
5677
+ return mcpConvexError(error);
5678
5678
  }
5679
5679
  });
5680
5680
  // update_summary → was set_summary (not C0-gated — uses orchestratorId auth)
@@ -5684,7 +5684,7 @@ export function registerTools(server, convex, oauthCtx) {
5684
5684
  orchestratorId: z.string(),
5685
5685
  instanceId: z.string().optional(),
5686
5686
  summary: z.string(),
5687
- }, async ({ orchestratorId, instanceId, summary }) => {
5687
+ }, { readOnlyHint: false, openWorldHint: false, destructiveHint: false, title: "Update summary (alias)" }, async ({ orchestratorId, instanceId, summary }) => {
5688
5688
  try {
5689
5689
  const result = await convex.mutation("profiles:updateDynamic", {
5690
5690
  orchestratorId,
@@ -5694,7 +5694,7 @@ export function registerTools(server, convex, oauthCtx) {
5694
5694
  return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
5695
5695
  }
5696
5696
  catch (error) {
5697
- return mcpError(error.message ?? String(error));
5697
+ return mcpConvexError(error);
5698
5698
  }
5699
5699
  });
5700
5700
  // create_diary → was write_diary (not C0-gated — uses guardFrom(author) when present)
@@ -5705,7 +5705,7 @@ export function registerTools(server, convex, oauthCtx) {
5705
5705
  orchestrator: z.string(),
5706
5706
  content: z.string(),
5707
5707
  author: z.string().optional(),
5708
- }, async ({ date, orchestrator, content, author }) => {
5708
+ }, { readOnlyHint: false, openWorldHint: false, destructiveHint: false, title: "Create diary entry (alias)" }, async ({ date, orchestrator, content, author }) => {
5709
5709
  assertContentSize(content, "content");
5710
5710
  if (author !== undefined) {
5711
5711
  const fromDenied = guardFrom(author);
@@ -5722,7 +5722,7 @@ export function registerTools(server, convex, oauthCtx) {
5722
5722
  return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
5723
5723
  }
5724
5724
  catch (error) {
5725
- return mcpError(error.message ?? String(error));
5725
+ return mcpConvexError(error);
5726
5726
  }
5727
5727
  });
5728
5728
  // ── get_task ────────────────────────────────────────────────────────────────
@@ -5749,7 +5749,7 @@ export function registerTools(server, convex, oauthCtx) {
5749
5749
  };
5750
5750
  }
5751
5751
  catch (error) {
5752
- return mcpError(error.message ?? String(error));
5752
+ return mcpConvexError(error);
5753
5753
  }
5754
5754
  });
5755
5755
  // ── get_fix_pattern ─────────────────────────────────────────────────────────
@@ -5775,7 +5775,7 @@ export function registerTools(server, convex, oauthCtx) {
5775
5775
  };
5776
5776
  }
5777
5777
  catch (error) {
5778
- return mcpError(error.message ?? String(error));
5778
+ return mcpConvexError(error);
5779
5779
  }
5780
5780
  });
5781
5781
  // ── get_mandate ─────────────────────────────────────────────────────────────
@@ -5801,7 +5801,7 @@ export function registerTools(server, convex, oauthCtx) {
5801
5801
  };
5802
5802
  }
5803
5803
  catch (error) {
5804
- return mcpError(error.message ?? String(error));
5804
+ return mcpConvexError(error);
5805
5805
  }
5806
5806
  });
5807
5807
  // ── get_repo_mapping ────────────────────────────────────────────────────────
@@ -5832,7 +5832,7 @@ export function registerTools(server, convex, oauthCtx) {
5832
5832
  };
5833
5833
  }
5834
5834
  catch (error) {
5835
- return mcpError(error.message ?? String(error));
5835
+ return mcpConvexError(error);
5836
5836
  }
5837
5837
  });
5838
5838
  // ── get_message ─────────────────────────────────────────────────────────────
@@ -5861,7 +5861,7 @@ export function registerTools(server, convex, oauthCtx) {
5861
5861
  };
5862
5862
  }
5863
5863
  catch (error) {
5864
- return mcpError(error.message ?? String(error));
5864
+ return mcpConvexError(error);
5865
5865
  }
5866
5866
  });
5867
5867
  // ── get_recurring_task ──────────────────────────────────────────────────────
@@ -5890,7 +5890,7 @@ export function registerTools(server, convex, oauthCtx) {
5890
5890
  };
5891
5891
  }
5892
5892
  catch (error) {
5893
- return mcpError(error.message ?? String(error));
5893
+ return mcpConvexError(error);
5894
5894
  }
5895
5895
  });
5896
5896
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vantage-peers-mcp",
3
- "version": "2.7.0",
3
+ "version": "2.7.1",
4
4
  "description": "MCP server for VantagePeers — shared memory, messaging, and task coordination for AI agent teams",
5
5
  "type": "module",
6
6
  "main": "./dist/server.js",