wolfpack-mcp 1.0.61 → 1.0.62

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
@@ -60,6 +60,17 @@ export class WolfpackClient {
60
60
  const response = await this.api.get('/teams');
61
61
  return response.teams;
62
62
  }
63
+ // Search methods
64
+ async search(options) {
65
+ const params = new URLSearchParams({ q: options.query });
66
+ if (options.teamSlug)
67
+ params.append('teamSlug', options.teamSlug);
68
+ if (options.includeInactive)
69
+ params.append('includeInactive', 'true');
70
+ if (options.exactOnly)
71
+ params.append('exactOnly', 'true');
72
+ return this.api.get(`/search?${params.toString()}`);
73
+ }
63
74
  // Team Member methods
64
75
  async listTeamMembers(teamSlug) {
65
76
  const params = new URLSearchParams();
package/dist/index.js CHANGED
@@ -220,7 +220,14 @@ const CreateRadarItemSchema = z.object({
220
220
  .optional()
221
221
  .describe('Project slug (required for multi-project users, use list_projects to get slugs)'),
222
222
  title: z.string().describe('Title of the radar/initiative item'),
223
- description: z.string().optional().describe('Description of the initiative (markdown)'),
223
+ description: z
224
+ .string()
225
+ .optional()
226
+ .describe('Short summary shown on the roadmap card (1-2 sentences). Put extended detail in notes, not here.'),
227
+ notes: z
228
+ .string()
229
+ .optional()
230
+ .describe("Extended details shown on the initiative's Notes page (markdown). Use this for long-form content."),
224
231
  stage: z
225
232
  .enum(['pending', 'now', 'next', 'later', 'completed'])
226
233
  .describe('Stage: "pending" (not started), "now" (current sprint), "next" (upcoming), "later" (future), "completed"'),
@@ -228,8 +235,11 @@ const CreateRadarItemSchema = z.object({
228
235
  const UpdateRadarItemSchema = z.object({
229
236
  item_id: z.string().describe('The refId (number) of the radar item to update'),
230
237
  title: z.string().optional().describe('Updated title'),
231
- description: z.string().optional().describe('Updated description (markdown)'),
232
- notes: z.string().optional().describe('Updated internal notes (markdown)'),
238
+ description: z
239
+ .string()
240
+ .optional()
241
+ .describe('Updated short summary (1-2 sentences; extended detail belongs in notes)'),
242
+ notes: z.string().optional().describe('Updated Notes page content (markdown)'),
233
243
  stage: z
234
244
  .enum(['pending', 'now', 'next', 'later', 'completed'])
235
245
  .optional()
@@ -346,6 +356,22 @@ const UpdateIssueSchema = z.object({
346
356
  .optional()
347
357
  .describe('Project slug (required for multi-project users, use list_projects to get slugs)'),
348
358
  });
359
+ // Search schema
360
+ const SearchSchema = z.object({
361
+ query: z.string().describe('Search query (websearch syntax: quoted phrases, -exclusions)'),
362
+ project_slug: z
363
+ .string()
364
+ .optional()
365
+ .describe('Project slug; omit to search all accessible projects'),
366
+ include_inactive: z
367
+ .boolean()
368
+ .optional()
369
+ .describe('Include finished/archived items (default false)'),
370
+ exact_only: z
371
+ .boolean()
372
+ .optional()
373
+ .describe('Only exact full-text matches, skipping semantic results (default false)'),
374
+ });
349
375
  // Wiki Page schemas
350
376
  const ListWikiPagesSchema = z.object({
351
377
  project_slug: z.string().optional().describe('Project slug to filter wiki pages'),
@@ -681,6 +707,36 @@ class WolfpackMCPServer {
681
707
  properties: {},
682
708
  },
683
709
  },
710
+ // Search tool
711
+ {
712
+ name: 'search',
713
+ description: 'Ranked full-text search across project content: wiki pages, work items, cases, journal entries and issues. ' +
714
+ 'Title matches outrank body matches; results include a snippet, entity type, and refId/slug for follow-up calls ' +
715
+ '(get_work_item, get_issue, get_wiki_page, ...). ' +
716
+ 'Use this to find existing content before creating new items, or when the user asks to "find" or "look up" something without saying where it lives.',
717
+ inputSchema: {
718
+ type: 'object',
719
+ properties: {
720
+ query: {
721
+ type: 'string',
722
+ description: 'Search query (websearch syntax: quoted phrases, -exclusions)',
723
+ },
724
+ project_slug: {
725
+ type: 'string',
726
+ description: 'Project slug; omit to search all accessible projects',
727
+ },
728
+ include_inactive: {
729
+ type: 'boolean',
730
+ description: 'Include finished/archived items (default false)',
731
+ },
732
+ exact_only: {
733
+ type: 'boolean',
734
+ description: 'Only exact full-text matches, skipping semantic results (default false)',
735
+ },
736
+ },
737
+ required: ['query'],
738
+ },
739
+ },
684
740
  // Work Item tools
685
741
  {
686
742
  name: 'list_work_items',
@@ -982,6 +1038,7 @@ class WolfpackMCPServer {
982
1038
  {
983
1039
  name: 'create_radar_item',
984
1040
  description: 'Create a new radar/initiative item in your current project. Requires mcp:radar:create permission. ' +
1041
+ 'Keep "description" to a short summary; put extended detail in "notes". ' +
985
1042
  CONTENT_LINKING_HELP,
986
1043
  inputSchema: {
987
1044
  type: 'object',
@@ -993,7 +1050,11 @@ class WolfpackMCPServer {
993
1050
  title: { type: 'string', description: 'Title of the radar/initiative item' },
994
1051
  description: {
995
1052
  type: 'string',
996
- description: 'Description of the initiative (markdown)',
1053
+ description: 'Short summary shown on the roadmap card (1-2 sentences). Put extended detail in notes, not here.',
1054
+ },
1055
+ notes: {
1056
+ type: 'string',
1057
+ description: "Extended details shown on the initiative's Notes page (markdown). Use this for long-form content.",
997
1058
  },
998
1059
  stage: {
999
1060
  type: 'string',
@@ -1016,8 +1077,11 @@ class WolfpackMCPServer {
1016
1077
  description: 'The refId (number) of the radar item to update',
1017
1078
  },
1018
1079
  title: { type: 'string', description: 'Updated title' },
1019
- description: { type: 'string', description: 'Updated description (markdown)' },
1020
- notes: { type: 'string', description: 'Updated internal notes (markdown)' },
1080
+ description: {
1081
+ type: 'string',
1082
+ description: 'Updated short summary (1-2 sentences; extended detail belongs in notes)',
1083
+ },
1084
+ notes: { type: 'string', description: 'Updated Notes page content (markdown)' },
1021
1085
  stage: {
1022
1086
  type: 'string',
1023
1087
  enum: ['pending', 'now', 'next', 'later', 'completed'],
@@ -1954,6 +2018,22 @@ class WolfpackMCPServer {
1954
2018
  ],
1955
2019
  };
1956
2020
  }
2021
+ // Search handler
2022
+ case 'search': {
2023
+ const parsed = SearchSchema.parse(args);
2024
+ const results = await this.client.search({
2025
+ query: parsed.query,
2026
+ teamSlug: parsed.project_slug || this.client.getProjectSlug() || undefined,
2027
+ includeInactive: parsed.include_inactive,
2028
+ exactOnly: parsed.exact_only,
2029
+ });
2030
+ const text = results.length === 0
2031
+ ? 'No results found.'
2032
+ : JSON.stringify(stripUuids(results), null, 2);
2033
+ return {
2034
+ content: [{ type: 'text', text }],
2035
+ };
2036
+ }
1957
2037
  // Work Item handlers
1958
2038
  case 'list_work_items': {
1959
2039
  const parsed = ListWorkItemsSchema.parse(args);
@@ -2193,6 +2273,7 @@ class WolfpackMCPServer {
2193
2273
  const radarItem = await this.client.createRadarItem({
2194
2274
  title: parsed.title,
2195
2275
  description: parsed.description,
2276
+ notes: parsed.notes,
2196
2277
  stage: parsed.stage,
2197
2278
  teamSlug: parsed.project_slug || this.client.getProjectSlug() || undefined,
2198
2279
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wolfpack-mcp",
3
- "version": "1.0.61",
3
+ "version": "1.0.62",
4
4
  "description": "MCP server for Wolfpack AI-enhanced software delivery tools",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",