@ourroadmaps/mcp 0.7.2 → 0.7.4

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.
Files changed (2) hide show
  1. package/dist/index.js +70 -6
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -487,6 +487,13 @@ class ApiClient {
487
487
  method: "DELETE"
488
488
  });
489
489
  }
490
+ async reorderRoadmaps(items) {
491
+ const response = await this.request("/v1/roadmaps/reorder", {
492
+ method: "POST",
493
+ body: JSON.stringify({ items })
494
+ });
495
+ return response;
496
+ }
490
497
  async savePrd(roadmapId, data) {
491
498
  const response = await this.request(`/v1/roadmaps/${roadmapId}/prd`, {
492
499
  method: "POST",
@@ -708,6 +715,7 @@ function registerAllTools(server) {
708
715
  registerCreateRoadmapItem(server);
709
716
  registerUpdateRoadmapItem(server);
710
717
  registerDeleteRoadmapItem(server);
718
+ registerReorderRoadmaps(server);
711
719
  registerAddFeature(server);
712
720
  registerUpdateFeature(server);
713
721
  registerDeleteFeature(server);
@@ -768,7 +776,10 @@ function registerSearchRoadmaps(server) {
768
776
  id: r.id,
769
777
  title: r.title,
770
778
  status: r.status,
771
- horizon: r.horizon
779
+ horizon: r.horizon,
780
+ value: r.value,
781
+ effort: r.effort,
782
+ order: r.order
772
783
  })), null, 2)
773
784
  }
774
785
  ]
@@ -793,6 +804,9 @@ function registerGetRoadmap(server) {
793
804
  title: roadmap2.title,
794
805
  status: roadmap2.status,
795
806
  horizon: roadmap2.horizon,
807
+ value: roadmap2.value,
808
+ effort: roadmap2.effort,
809
+ order: roadmap2.order,
796
810
  prd: roadmap2.prd,
797
811
  brainstormNotes: roadmap2.brainstormNotes,
798
812
  wireframes: roadmap2.wireframes?.map((w) => ({
@@ -932,17 +946,19 @@ function registerGetContext(server) {
932
946
  - Products: What the organization builds (brands, products, apps, services) with hierarchy
933
947
  - Audiences: Who the product serves (stakeholders and user personas) with their preferences
934
948
  - Scenarios: User workflows and how they accomplish goals
949
+ - Features: Capabilities and functionality areas organized hierarchically
935
950
  - Roadmap Summary: Count of items by status and horizon for planning overview
936
951
 
937
952
  Use this as your FIRST call when starting work on a roadmap to understand the full context.`,
938
953
  inputSchema: {}
939
954
  }, async () => {
940
955
  const client2 = getApiClient();
941
- const [strategy, products, audiences, scenarios, roadmaps] = await Promise.all([
956
+ const [strategy, products, audiences, scenarios, features, roadmaps] = await Promise.all([
942
957
  client2.getStrategy(),
943
958
  client2.listProducts(),
944
959
  client2.listAudiences(),
945
960
  client2.listScenarios(),
961
+ client2.listFeatures(),
946
962
  client2.listRoadmaps()
947
963
  ]);
948
964
  const statusCounts = {};
@@ -983,6 +999,12 @@ Use this as your FIRST call when starting work on a roadmap to understand the fu
983
999
  when: s.when,
984
1000
  then: s.then
985
1001
  })),
1002
+ features: features.map((f) => ({
1003
+ id: f.id,
1004
+ name: f.name,
1005
+ type: f.type,
1006
+ parentId: f.parentId
1007
+ })),
986
1008
  roadmapSummary: {
987
1009
  total: roadmaps.length,
988
1010
  byStatus: statusCounts,
@@ -1070,20 +1092,27 @@ function registerCreateRoadmapItem(server) {
1070
1092
  };
1071
1093
  });
1072
1094
  }
1095
+ var effortSizeSchema = z10.enum(["xs", "s", "m", "l", "xl"]);
1073
1096
  function registerUpdateRoadmapItem(server) {
1074
1097
  server.registerTool("update_roadmap_item", {
1075
- description: "Update an existing roadmap item. Can update title, status, horizon, prompt, or brainstorm notes.",
1098
+ description: "Update an existing roadmap item. Can update title, status, horizon, value, effort, order, prompt, or brainstorm notes.",
1076
1099
  inputSchema: {
1077
1100
  id: z10.string().describe("The UUID of the roadmap item to update"),
1078
1101
  title: z10.string().optional().describe("New title"),
1079
1102
  status: roadmapStatusSchema.optional().describe("New status"),
1080
- horizon: horizonSchema.optional().describe("New planning horizon")
1103
+ horizon: horizonSchema.optional().describe("New planning horizon"),
1104
+ value: z10.number().int().min(1).max(3).nullable().optional().describe("Value rating (1-3 stars, where 3 is highest value)"),
1105
+ effort: effortSizeSchema.nullable().optional().describe("Effort estimate (xs=extra small, s=small, m=medium, l=large, xl=extra large)"),
1106
+ order: z10.number().int().min(0).optional().describe("Sort order for prioritization (lower numbers appear first)")
1081
1107
  }
1082
1108
  }, async ({
1083
1109
  id,
1084
1110
  title,
1085
1111
  status,
1086
- horizon
1112
+ horizon,
1113
+ value,
1114
+ effort,
1115
+ order
1087
1116
  }) => {
1088
1117
  const client2 = getApiClient();
1089
1118
  const updates = {};
@@ -1093,6 +1122,12 @@ function registerUpdateRoadmapItem(server) {
1093
1122
  updates.status = status;
1094
1123
  if (horizon !== undefined)
1095
1124
  updates.horizon = horizon;
1125
+ if (value !== undefined)
1126
+ updates.value = value;
1127
+ if (effort !== undefined)
1128
+ updates.effort = effort;
1129
+ if (order !== undefined)
1130
+ updates.order = order;
1096
1131
  const roadmap2 = await client2.updateRoadmap(id, updates);
1097
1132
  return {
1098
1133
  content: [
@@ -1104,7 +1139,10 @@ function registerUpdateRoadmapItem(server) {
1104
1139
  id: roadmap2.id,
1105
1140
  title: roadmap2.title,
1106
1141
  status: roadmap2.status,
1107
- horizon: roadmap2.horizon
1142
+ horizon: roadmap2.horizon,
1143
+ value: roadmap2.value,
1144
+ effort: roadmap2.effort,
1145
+ order: roadmap2.order
1108
1146
  }
1109
1147
  }, null, 2)
1110
1148
  }
@@ -1259,6 +1297,32 @@ function registerDeleteRoadmapItem(server) {
1259
1297
  };
1260
1298
  });
1261
1299
  }
1300
+ function registerReorderRoadmaps(server) {
1301
+ server.registerTool("reorder_roadmaps", {
1302
+ description: "Bulk reorder roadmap items by setting their order values. Use this to prioritize and organize the roadmap. Lower order values appear first.",
1303
+ inputSchema: {
1304
+ items: z10.array(z10.object({
1305
+ id: z10.string().describe("The UUID of the roadmap item"),
1306
+ order: z10.number().int().min(0).describe("The new order value (0-based, lower = higher priority)")
1307
+ })).describe("Array of roadmap items with their new order values")
1308
+ }
1309
+ }, async ({ items }) => {
1310
+ const client2 = getApiClient();
1311
+ const result = await client2.reorderRoadmaps(items);
1312
+ return {
1313
+ content: [
1314
+ {
1315
+ type: "text",
1316
+ text: JSON.stringify({
1317
+ success: result.success,
1318
+ message: `Successfully reordered ${items.length} roadmap items`,
1319
+ itemsReordered: items.length
1320
+ }, null, 2)
1321
+ }
1322
+ ]
1323
+ };
1324
+ });
1325
+ }
1262
1326
  function registerUpdateFeature(server) {
1263
1327
  server.registerTool("update_feature", {
1264
1328
  description: "Update an existing feature. Can update name, type, or parent.",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ourroadmaps/mcp",
3
- "version": "0.7.2",
3
+ "version": "0.7.4",
4
4
  "description": "MCP server for OurRoadmaps - manage roadmaps, features, and ideas from Claude Code",
5
5
  "type": "module",
6
6
  "bin": {