wolfpack-mcp 1.0.8 → 1.0.9

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/dist/client.js CHANGED
@@ -90,6 +90,22 @@ export class WolfpackClient {
90
90
  params.append('status', options.status);
91
91
  if (options?.assignedToId)
92
92
  params.append('assignedToId', options.assignedToId);
93
+ if (options?.search)
94
+ params.append('search', options.search);
95
+ if (options?.categoryId)
96
+ params.append('categoryId', options.categoryId);
97
+ if (options?.priority)
98
+ params.append('priority', options.priority);
99
+ if (options?.radarItemId)
100
+ params.append('radarItemId', options.radarItemId);
101
+ if (options?.createdById)
102
+ params.append('createdById', options.createdById);
103
+ if (options?.updatedById)
104
+ params.append('updatedById', options.updatedById);
105
+ if (options?.sortBy)
106
+ params.append('sortBy', options.sortBy);
107
+ if (options?.sortOrder)
108
+ params.append('sortOrder', options.sortOrder);
93
109
  // If explicit limit/offset provided, use single request (for manual pagination)
94
110
  if (options?.limit !== undefined || options?.offset !== undefined) {
95
111
  if (options?.limit)
package/dist/index.js CHANGED
@@ -51,11 +51,31 @@ async function checkForUpdates() {
51
51
  // Work Item schemas
52
52
  const ListWorkItemsSchema = z.object({
53
53
  team_id: z.number().optional().describe('Team ID to filter work items'),
54
- status: z.string().optional().describe('Filter by status'),
54
+ status: z
55
+ .string()
56
+ .optional()
57
+ .describe('Filter by status. Board columns: "new", "doing", "review", "blocked", "completed". Use "pending" or "backlog" for backlog items. Use "all" to include completed/closed. Default excludes completed/closed.'),
55
58
  assigned_to_id: z
56
59
  .string()
57
60
  .optional()
58
- .describe('Filter by assignee ID (use "unassigned" for unassigned, "me" for self)'),
61
+ .describe('Filter by assignee: "me" (default), "unassigned", "all", or a specific user ID'),
62
+ search: z.string().optional().describe('Text search in title and description'),
63
+ category_id: z
64
+ .string()
65
+ .optional()
66
+ .describe('Filter by category ID, or "none" for uncategorized items'),
67
+ priority: z
68
+ .string()
69
+ .optional()
70
+ .describe('Filter by priority level (0-4, higher is more important)'),
71
+ radar_item_id: z.string().optional().describe('Filter by linked radar/initiative item'),
72
+ created_by_id: z.string().optional().describe('Filter by creator user ID'),
73
+ updated_by_id: z.string().optional().describe('Filter by last updater user ID'),
74
+ sort_by: z
75
+ .string()
76
+ .optional()
77
+ .describe('Sort field: "dateUpdated" (default, newest first), "dateCreated", "priority", "title"'),
78
+ sort_order: z.string().optional().describe('Sort direction: "desc" (default), "asc"'),
59
79
  limit: z.number().optional().describe('Maximum number of items to return'),
60
80
  offset: z.number().optional().describe('Number of items to skip'),
61
81
  });
@@ -100,7 +120,7 @@ const ListIssuesSchema = z.object({
100
120
  assigned_to_id: z
101
121
  .string()
102
122
  .optional()
103
- .describe('Filter by assignee ID (use "unassigned" for unassigned, "me" for self)'),
123
+ .describe('Filter by assignee: "me" (default), "unassigned", "all", or a specific user ID'),
104
124
  limit: z.number().optional().describe('Maximum number of items to return'),
105
125
  offset: z.number().optional().describe('Number of items to skip'),
106
126
  });
@@ -112,9 +132,14 @@ const GetIssueSchema = z.object({
112
132
  const CreateWorkItemSchema = z.object({
113
133
  title: z.string().describe('Title of the work item'),
114
134
  description: z.string().optional().describe('Description/notes for the work item (markdown)'),
115
- status: z.string().optional().describe('Initial status'),
135
+ status: z
136
+ .string()
137
+ .optional()
138
+ .describe('Initial status: "pending" (backlog), "new" (to do), "doing", "review", "blocked", "completed". Defaults to "new".'),
116
139
  priority: z.number().optional().describe('Priority level (0-4, higher is more important)'),
117
140
  leading_user_id: z.string().optional().describe('User ID to assign as leading user'),
141
+ category_id: z.string().optional().describe('Category ID to organize the work item'),
142
+ radar_item_id: z.string().optional().describe('Radar/initiative item ID to link to'),
118
143
  });
119
144
  const CreateIssueSchema = z.object({
120
145
  title: z.string().describe('Title of the issue'),
@@ -220,7 +245,11 @@ class WolfpackMCPServer {
220
245
  // Work Item tools
221
246
  {
222
247
  name: 'list_work_items',
223
- description: 'List work items (tasks/tickets). Use when user asks about "my work", "my tasks", "what am I working on", "assigned to me", or "backlog". By default lists items assigned to you. Status mapping: "new" = backlog/todo, "doing" = in progress/active, "review" = pending review, "completed" = done/finished.',
248
+ description: 'List work items (tasks/tickets). By default lists items assigned to you, sorted by most recently updated. ' +
249
+ 'TERMINOLOGY: The board has columns: "new" (to do), "doing" (in progress), "review" (pending review), "blocked", "completed" (done). ' +
250
+ 'The "backlog" or "pending" status represents items not yet on the board. ' +
251
+ 'By default, completed/closed items are excluded - use status="all" to include them. ' +
252
+ 'Use when user asks about "my work", "my tasks", "what am I working on", "assigned to me", or "backlog".',
224
253
  inputSchema: {
225
254
  type: 'object',
226
255
  properties: {
@@ -230,11 +259,37 @@ class WolfpackMCPServer {
230
259
  },
231
260
  status: {
232
261
  type: 'string',
233
- description: 'Filter: "new" (backlog/todo), "doing" (in progress), "review", "completed" (done), "blocked"',
262
+ description: 'Filter by status. Board columns: "new", "doing", "review", "blocked", "completed". ' +
263
+ 'Use "pending" or "backlog" for backlog items not on board. ' +
264
+ 'Use "all" to include completed/closed items. Default excludes completed/closed.',
234
265
  },
235
266
  assigned_to_id: {
236
267
  type: 'string',
237
- description: 'Filter by assignee ID (use "unassigned" for unassigned, "me" for self)',
268
+ description: 'Filter by assignee: "me" (default), "unassigned", "all", or a specific user ID',
269
+ },
270
+ search: {
271
+ type: 'string',
272
+ description: 'Text search in title and description',
273
+ },
274
+ category_id: {
275
+ type: 'string',
276
+ description: 'Filter by category ID, or "none" for uncategorized items',
277
+ },
278
+ priority: {
279
+ type: 'string',
280
+ description: 'Filter by priority level (0-4, higher is more important)',
281
+ },
282
+ radar_item_id: {
283
+ type: 'string',
284
+ description: 'Filter by linked radar/initiative item ID',
285
+ },
286
+ sort_by: {
287
+ type: 'string',
288
+ description: 'Sort field: "dateUpdated" (default, newest activity first), "dateCreated", "priority", "title"',
289
+ },
290
+ sort_order: {
291
+ type: 'string',
292
+ description: 'Sort direction: "desc" (default), "asc"',
238
293
  },
239
294
  limit: { type: 'number', description: 'Maximum number of items to return' },
240
295
  offset: { type: 'number', description: 'Number of items to skip' },
@@ -276,7 +331,10 @@ class WolfpackMCPServer {
276
331
  },
277
332
  {
278
333
  name: 'update_work_item_status',
279
- description: 'Change work item status. WORKFLOW: Move to "doing" when you start work, or "review" when ready for review. Can also set to "completed", "blocked", etc.',
334
+ description: 'Change work item status. ' +
335
+ 'Board columns: "new" (to do), "doing" (in progress), "review" (pending review), "blocked", "completed" (done). ' +
336
+ '"pending" is for backlog items not yet on the board. ' +
337
+ 'WORKFLOW: Move to "doing" when starting work, "review" when ready for review, "completed" when done.',
280
338
  inputSchema: {
281
339
  type: 'object',
282
340
  properties: {
@@ -286,7 +344,7 @@ class WolfpackMCPServer {
286
344
  },
287
345
  status: {
288
346
  type: 'string',
289
- description: 'New status',
347
+ description: 'New status: "pending" (backlog), "new" (to do), "doing" (in progress), "review", "blocked", "completed" (done)',
290
348
  },
291
349
  },
292
350
  required: ['work_item_id', 'status'],
@@ -356,7 +414,7 @@ class WolfpackMCPServer {
356
414
  },
357
415
  assigned_to_id: {
358
416
  type: 'string',
359
- description: 'Filter by assignee ID (use "unassigned" for unassigned, "me" for self)',
417
+ description: 'Filter by assignee: "me" (default), "unassigned", "all", or a specific user ID',
360
418
  },
361
419
  limit: { type: 'number', description: 'Maximum number of items to return' },
362
420
  offset: { type: 'number', description: 'Number of items to skip' },
@@ -395,7 +453,7 @@ class WolfpackMCPServer {
395
453
  },
396
454
  status: {
397
455
  type: 'string',
398
- description: 'Initial status (e.g., new, doing, review, completed - defaults to new)',
456
+ description: 'Initial status: "pending" (backlog), "new" (to do), "doing", "review", "blocked", "completed". Defaults to "new".',
399
457
  },
400
458
  priority: {
401
459
  type: 'number',
@@ -405,6 +463,14 @@ class WolfpackMCPServer {
405
463
  type: 'string',
406
464
  description: 'User ID to assign as leading user',
407
465
  },
466
+ category_id: {
467
+ type: 'string',
468
+ description: 'Category ID to organize the work item',
469
+ },
470
+ radar_item_id: {
471
+ type: 'string',
472
+ description: 'Radar/initiative item ID to link to',
473
+ },
408
474
  },
409
475
  required: ['title'],
410
476
  },
@@ -628,12 +694,20 @@ class WolfpackMCPServer {
628
694
  teamId: parsed.team_id || this.client.getTeamId() || undefined,
629
695
  status: parsed.status,
630
696
  assignedToId: parsed.assigned_to_id,
697
+ search: parsed.search,
698
+ categoryId: parsed.category_id,
699
+ priority: parsed.priority,
700
+ radarItemId: parsed.radar_item_id,
701
+ createdById: parsed.created_by_id,
702
+ updatedById: parsed.updated_by_id,
703
+ sortBy: parsed.sort_by,
704
+ sortOrder: parsed.sort_order,
631
705
  limit: parsed.limit,
632
706
  offset: parsed.offset,
633
707
  });
634
708
  let text = JSON.stringify(result.items, null, 2);
635
709
  if (result.truncated) {
636
- text = `Note: Results truncated. Showing ${result.items.length} of ${result.total} items. Use status filter or limit/offset for pagination.\n\n${text}`;
710
+ text = `Note: Results truncated. Showing ${result.items.length} of ${result.total} items. Use filters or limit/offset for pagination.\n\n${text}`;
637
711
  }
638
712
  return {
639
713
  content: [{ type: 'text', text }],
@@ -755,6 +829,8 @@ class WolfpackMCPServer {
755
829
  status: parsed.status,
756
830
  priority: parsed.priority,
757
831
  leadingUserId: parsed.leading_user_id,
832
+ categoryId: parsed.category_id,
833
+ radarItemId: parsed.radar_item_id,
758
834
  });
759
835
  return {
760
836
  content: [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wolfpack-mcp",
3
- "version": "1.0.8",
3
+ "version": "1.0.9",
4
4
  "description": "MCP server for Wolfpack AI-enhanced software delivery tools",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",