wolfpack-mcp 1.0.56 → 1.0.58
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/README.md +1 -1
- package/dist/agentBuilderTools.js +239 -1
- package/dist/client.js +10 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -51,7 +51,7 @@ Restart Claude Desktop. You'll be prompted to sign in with your Wolfpack account
|
|
|
51
51
|
"mcpServers": {
|
|
52
52
|
"wolfpack": {
|
|
53
53
|
"command": "npx",
|
|
54
|
-
"args": ["-y", "wolfpack-mcp"],
|
|
54
|
+
"args": ["-y", "wolfpack-mcp@latest"],
|
|
55
55
|
"env": {
|
|
56
56
|
"WOLFPACK_API_KEY": "wfp_sk_your_api_key_here"
|
|
57
57
|
}
|
|
@@ -271,6 +271,19 @@ export const AGENT_BUILDER_TOOLS = [
|
|
|
271
271
|
type: 'number',
|
|
272
272
|
description: 'Order within scheduled batch (lower = first)',
|
|
273
273
|
},
|
|
274
|
+
disabled_tools: {
|
|
275
|
+
type: 'array',
|
|
276
|
+
items: { type: 'string' },
|
|
277
|
+
description: 'Built-in tools to disable for this task to optimise context. ' +
|
|
278
|
+
'Available: bash, download, edit, fetch, glob, grep, ls, sourcegraph, view, write, agent, diagnostics. ' +
|
|
279
|
+
'Pass null or empty array to use all tools.',
|
|
280
|
+
},
|
|
281
|
+
disabled_mcp_servers: {
|
|
282
|
+
type: 'array',
|
|
283
|
+
items: { type: 'string' },
|
|
284
|
+
description: 'MCP servers to disable for this task (e.g. "wolfpack"). ' +
|
|
285
|
+
'Disables all tools from those MCP servers to reduce context usage.',
|
|
286
|
+
},
|
|
274
287
|
...ORG_SLUG_PROP,
|
|
275
288
|
},
|
|
276
289
|
required: ['agent_id', 'name', 'prompt'],
|
|
@@ -278,7 +291,7 @@ export const AGENT_BUILDER_TOOLS = [
|
|
|
278
291
|
},
|
|
279
292
|
{
|
|
280
293
|
name: 'update_agent_task',
|
|
281
|
-
description: "Update a task's prompt or
|
|
294
|
+
description: "Update a task's prompt, schedule settings, or disabled tools/MCP servers.",
|
|
282
295
|
inputSchema: {
|
|
283
296
|
type: 'object',
|
|
284
297
|
properties: {
|
|
@@ -289,6 +302,19 @@ export const AGENT_BUILDER_TOOLS = [
|
|
|
289
302
|
scheduled_enabled: { type: 'boolean', description: 'Include in scheduled runs' },
|
|
290
303
|
sort_order: { type: 'number', description: 'Order within scheduled batch' },
|
|
291
304
|
is_active: { type: 'boolean', description: 'Whether this task is active' },
|
|
305
|
+
disabled_tools: {
|
|
306
|
+
type: 'array',
|
|
307
|
+
items: { type: 'string' },
|
|
308
|
+
description: 'Built-in tools to disable for this task. ' +
|
|
309
|
+
'Available: bash, download, edit, fetch, glob, grep, ls, sourcegraph, view, write, agent, diagnostics. ' +
|
|
310
|
+
'Pass null or empty array to enable all tools.',
|
|
311
|
+
},
|
|
312
|
+
disabled_mcp_servers: {
|
|
313
|
+
type: 'array',
|
|
314
|
+
items: { type: 'string' },
|
|
315
|
+
description: 'MCP servers to disable for this task (e.g. "wolfpack"). ' +
|
|
316
|
+
'Pass null or empty array to enable all MCP servers.',
|
|
317
|
+
},
|
|
292
318
|
...ORG_SLUG_PROP,
|
|
293
319
|
},
|
|
294
320
|
required: ['agent_id', 'task_id'],
|
|
@@ -347,6 +373,113 @@ export const AGENT_BUILDER_TOOLS = [
|
|
|
347
373
|
required: ['agent_id', 'entry_id'],
|
|
348
374
|
},
|
|
349
375
|
},
|
|
376
|
+
// ─── Group 4b: Schedules ─────────────────────────────────────────────────
|
|
377
|
+
{
|
|
378
|
+
name: 'list_agent_schedules',
|
|
379
|
+
description: 'List all schedules for an agent. Each schedule defines when and how often the agent wakes up, ' +
|
|
380
|
+
'and which tasks to run.',
|
|
381
|
+
inputSchema: {
|
|
382
|
+
type: 'object',
|
|
383
|
+
properties: {
|
|
384
|
+
agent_id: { type: 'string', description: 'Agent profile ID' },
|
|
385
|
+
...ORG_SLUG_PROP,
|
|
386
|
+
},
|
|
387
|
+
required: ['agent_id'],
|
|
388
|
+
},
|
|
389
|
+
},
|
|
390
|
+
{
|
|
391
|
+
name: 'create_agent_schedule',
|
|
392
|
+
description: 'Create a new schedule for an agent. A schedule defines frequency, working hours, timezone, ' +
|
|
393
|
+
'and which tasks to run. Schedules are created disabled by default.',
|
|
394
|
+
inputSchema: {
|
|
395
|
+
type: 'object',
|
|
396
|
+
properties: {
|
|
397
|
+
agent_id: { type: 'string', description: 'Agent profile ID' },
|
|
398
|
+
name: { type: 'string', description: 'Schedule name (default "Schedule")' },
|
|
399
|
+
enabled: {
|
|
400
|
+
type: 'boolean',
|
|
401
|
+
description: 'Whether this schedule is active (default false)',
|
|
402
|
+
},
|
|
403
|
+
check_frequency_minutes: {
|
|
404
|
+
type: 'number',
|
|
405
|
+
description: 'How often to wake up in minutes (5-1440, default 60)',
|
|
406
|
+
},
|
|
407
|
+
working_hours_start: {
|
|
408
|
+
type: 'number',
|
|
409
|
+
description: 'Start of working hours (0-23). Null for any time.',
|
|
410
|
+
},
|
|
411
|
+
working_hours_end: {
|
|
412
|
+
type: 'number',
|
|
413
|
+
description: 'End of working hours (0-23). Null for any time.',
|
|
414
|
+
},
|
|
415
|
+
working_days: {
|
|
416
|
+
type: 'array',
|
|
417
|
+
items: { type: 'string' },
|
|
418
|
+
description: 'Days to run: "mon","tue","wed","thu","fri","sat","sun". Empty for any day.',
|
|
419
|
+
},
|
|
420
|
+
timezone: { type: 'string', description: 'Timezone (default "UTC")' },
|
|
421
|
+
dst_aware: {
|
|
422
|
+
type: 'boolean',
|
|
423
|
+
description: 'Adjust for Daylight Saving Time (default true)',
|
|
424
|
+
},
|
|
425
|
+
multi_project: {
|
|
426
|
+
type: 'boolean',
|
|
427
|
+
description: 'When true, tasks run once with access to all assigned projects. ' +
|
|
428
|
+
'When false, tasks run once per project.',
|
|
429
|
+
},
|
|
430
|
+
task_ids: {
|
|
431
|
+
type: 'array',
|
|
432
|
+
items: { type: 'string' },
|
|
433
|
+
description: 'Task IDs to include in this schedule, in execution order.',
|
|
434
|
+
},
|
|
435
|
+
...ORG_SLUG_PROP,
|
|
436
|
+
},
|
|
437
|
+
required: ['agent_id'],
|
|
438
|
+
},
|
|
439
|
+
},
|
|
440
|
+
{
|
|
441
|
+
name: 'update_agent_schedule',
|
|
442
|
+
description: "Update a schedule's configuration or task assignments.",
|
|
443
|
+
inputSchema: {
|
|
444
|
+
type: 'object',
|
|
445
|
+
properties: {
|
|
446
|
+
agent_id: { type: 'string', description: 'Agent profile ID' },
|
|
447
|
+
schedule_id: { type: 'string', description: 'Schedule ID' },
|
|
448
|
+
name: { type: 'string', description: 'Schedule name' },
|
|
449
|
+
enabled: { type: 'boolean', description: 'Whether this schedule is active' },
|
|
450
|
+
check_frequency_minutes: {
|
|
451
|
+
type: 'number',
|
|
452
|
+
description: 'How often to wake up in minutes (5-1440)',
|
|
453
|
+
},
|
|
454
|
+
working_hours_start: {
|
|
455
|
+
type: 'number',
|
|
456
|
+
description: 'Start of working hours (0-23). Null to clear.',
|
|
457
|
+
},
|
|
458
|
+
working_hours_end: {
|
|
459
|
+
type: 'number',
|
|
460
|
+
description: 'End of working hours (0-23). Null to clear.',
|
|
461
|
+
},
|
|
462
|
+
working_days: {
|
|
463
|
+
type: 'array',
|
|
464
|
+
items: { type: 'string' },
|
|
465
|
+
description: 'Days to run. Null or empty to allow any day.',
|
|
466
|
+
},
|
|
467
|
+
timezone: { type: 'string', description: 'Timezone' },
|
|
468
|
+
dst_aware: { type: 'boolean', description: 'Adjust for Daylight Saving Time' },
|
|
469
|
+
multi_project: {
|
|
470
|
+
type: 'boolean',
|
|
471
|
+
description: 'Run once across all projects (true) or once per project (false)',
|
|
472
|
+
},
|
|
473
|
+
task_ids: {
|
|
474
|
+
type: 'array',
|
|
475
|
+
items: { type: 'string' },
|
|
476
|
+
description: 'Task IDs to include in this schedule, in execution order.',
|
|
477
|
+
},
|
|
478
|
+
...ORG_SLUG_PROP,
|
|
479
|
+
},
|
|
480
|
+
required: ['agent_id', 'schedule_id'],
|
|
481
|
+
},
|
|
482
|
+
},
|
|
350
483
|
// ─── Group 5: Skills (authoring) ─────────────────────────────────────────
|
|
351
484
|
{
|
|
352
485
|
name: 'create_skill',
|
|
@@ -755,6 +888,8 @@ export async function handleAgentBuilderTool(name, args, client) {
|
|
|
755
888
|
prompt: z.string(),
|
|
756
889
|
scheduled_enabled: z.boolean().optional(),
|
|
757
890
|
sort_order: z.number().optional(),
|
|
891
|
+
disabled_tools: z.array(z.string()).optional(),
|
|
892
|
+
disabled_mcp_servers: z.array(z.string()).optional(),
|
|
758
893
|
org_slug: orgSlugField,
|
|
759
894
|
})
|
|
760
895
|
.parse(args);
|
|
@@ -763,6 +898,8 @@ export async function handleAgentBuilderTool(name, args, client) {
|
|
|
763
898
|
prompt: parsed.prompt,
|
|
764
899
|
scheduledEnabled: parsed.scheduled_enabled,
|
|
765
900
|
sortOrder: parsed.sort_order,
|
|
901
|
+
disabledTools: parsed.disabled_tools,
|
|
902
|
+
disabledMcpServers: parsed.disabled_mcp_servers,
|
|
766
903
|
}, resolveOrg(parsed));
|
|
767
904
|
return { content: [{ type: 'text', text: `Created task "${task.name}"\n\n${text(task)}` }] };
|
|
768
905
|
}
|
|
@@ -776,6 +913,8 @@ export async function handleAgentBuilderTool(name, args, client) {
|
|
|
776
913
|
scheduled_enabled: z.boolean().optional(),
|
|
777
914
|
sort_order: z.number().optional(),
|
|
778
915
|
is_active: z.boolean().optional(),
|
|
916
|
+
disabled_tools: z.array(z.string()).nullable().optional(),
|
|
917
|
+
disabled_mcp_servers: z.array(z.string()).nullable().optional(),
|
|
779
918
|
org_slug: orgSlugField,
|
|
780
919
|
})
|
|
781
920
|
.parse(args);
|
|
@@ -790,6 +929,10 @@ export async function handleAgentBuilderTool(name, args, client) {
|
|
|
790
929
|
fields.sortOrder = parsed.sort_order;
|
|
791
930
|
if (parsed.is_active !== undefined)
|
|
792
931
|
fields.isActive = parsed.is_active;
|
|
932
|
+
if (parsed.disabled_tools !== undefined)
|
|
933
|
+
fields.disabledTools = parsed.disabled_tools;
|
|
934
|
+
if (parsed.disabled_mcp_servers !== undefined)
|
|
935
|
+
fields.disabledMcpServers = parsed.disabled_mcp_servers;
|
|
793
936
|
const task = await client.updateAgentTask(parsed.agent_id, parsed.task_id, fields, resolveOrg(parsed));
|
|
794
937
|
return { content: [{ type: 'text', text: `Updated task\n\n${text(task)}` }] };
|
|
795
938
|
}
|
|
@@ -828,6 +971,101 @@ export async function handleAgentBuilderTool(name, args, client) {
|
|
|
828
971
|
await client.cancelQueueEntry(parsed.agent_id, parsed.entry_id, resolveOrg(parsed));
|
|
829
972
|
return { content: [{ type: 'text', text: `Cancelled queue entry ${parsed.entry_id}` }] };
|
|
830
973
|
}
|
|
974
|
+
// ─── Schedules ──────────────────────────────────────────────────────────
|
|
975
|
+
case 'list_agent_schedules': {
|
|
976
|
+
const parsed = AgentIdSchema.parse(args);
|
|
977
|
+
const schedules = await client.listAgentSchedules(parsed.agent_id, resolveOrg(parsed));
|
|
978
|
+
return { content: [{ type: 'text', text: text(schedules) }] };
|
|
979
|
+
}
|
|
980
|
+
case 'create_agent_schedule': {
|
|
981
|
+
const parsed = z
|
|
982
|
+
.object({
|
|
983
|
+
agent_id: z.string(),
|
|
984
|
+
name: z.string().optional(),
|
|
985
|
+
enabled: z.boolean().optional(),
|
|
986
|
+
check_frequency_minutes: z.number().optional(),
|
|
987
|
+
working_hours_start: z.number().nullable().optional(),
|
|
988
|
+
working_hours_end: z.number().nullable().optional(),
|
|
989
|
+
working_days: z.array(z.string()).nullable().optional(),
|
|
990
|
+
timezone: z.string().optional(),
|
|
991
|
+
dst_aware: z.boolean().optional(),
|
|
992
|
+
multi_project: z.boolean().optional(),
|
|
993
|
+
task_ids: z.array(z.string()).optional(),
|
|
994
|
+
org_slug: orgSlugField,
|
|
995
|
+
})
|
|
996
|
+
.parse(args);
|
|
997
|
+
const { agent_id, org_slug, ...rest } = parsed;
|
|
998
|
+
const body = {};
|
|
999
|
+
if (rest.name !== undefined)
|
|
1000
|
+
body.name = rest.name;
|
|
1001
|
+
if (rest.enabled !== undefined)
|
|
1002
|
+
body.enabled = rest.enabled;
|
|
1003
|
+
if (rest.check_frequency_minutes !== undefined)
|
|
1004
|
+
body.checkFrequencyMinutes = rest.check_frequency_minutes;
|
|
1005
|
+
if (rest.working_hours_start !== undefined)
|
|
1006
|
+
body.workingHoursStart = rest.working_hours_start;
|
|
1007
|
+
if (rest.working_hours_end !== undefined)
|
|
1008
|
+
body.workingHoursEnd = rest.working_hours_end;
|
|
1009
|
+
if (rest.working_days !== undefined)
|
|
1010
|
+
body.workingDays = rest.working_days;
|
|
1011
|
+
if (rest.timezone !== undefined)
|
|
1012
|
+
body.timezone = rest.timezone;
|
|
1013
|
+
if (rest.dst_aware !== undefined)
|
|
1014
|
+
body.dstAware = rest.dst_aware;
|
|
1015
|
+
if (rest.multi_project !== undefined)
|
|
1016
|
+
body.multiProject = rest.multi_project;
|
|
1017
|
+
if (rest.task_ids !== undefined)
|
|
1018
|
+
body.taskIds = rest.task_ids;
|
|
1019
|
+
const schedule = await client.createAgentSchedule(agent_id, body, resolveOrg(parsed));
|
|
1020
|
+
return {
|
|
1021
|
+
content: [
|
|
1022
|
+
{ type: 'text', text: `Created schedule "${schedule.name}"\n\n${text(schedule)}` },
|
|
1023
|
+
],
|
|
1024
|
+
};
|
|
1025
|
+
}
|
|
1026
|
+
case 'update_agent_schedule': {
|
|
1027
|
+
const parsed = z
|
|
1028
|
+
.object({
|
|
1029
|
+
agent_id: z.string(),
|
|
1030
|
+
schedule_id: z.string(),
|
|
1031
|
+
name: z.string().optional(),
|
|
1032
|
+
enabled: z.boolean().optional(),
|
|
1033
|
+
check_frequency_minutes: z.number().optional(),
|
|
1034
|
+
working_hours_start: z.number().nullable().optional(),
|
|
1035
|
+
working_hours_end: z.number().nullable().optional(),
|
|
1036
|
+
working_days: z.array(z.string()).nullable().optional(),
|
|
1037
|
+
timezone: z.string().optional(),
|
|
1038
|
+
dst_aware: z.boolean().optional(),
|
|
1039
|
+
multi_project: z.boolean().optional(),
|
|
1040
|
+
task_ids: z.array(z.string()).optional(),
|
|
1041
|
+
org_slug: orgSlugField,
|
|
1042
|
+
})
|
|
1043
|
+
.parse(args);
|
|
1044
|
+
const { agent_id, schedule_id, org_slug, ...rest } = parsed;
|
|
1045
|
+
const body = {};
|
|
1046
|
+
if (rest.name !== undefined)
|
|
1047
|
+
body.name = rest.name;
|
|
1048
|
+
if (rest.enabled !== undefined)
|
|
1049
|
+
body.enabled = rest.enabled;
|
|
1050
|
+
if (rest.check_frequency_minutes !== undefined)
|
|
1051
|
+
body.checkFrequencyMinutes = rest.check_frequency_minutes;
|
|
1052
|
+
if (rest.working_hours_start !== undefined)
|
|
1053
|
+
body.workingHoursStart = rest.working_hours_start;
|
|
1054
|
+
if (rest.working_hours_end !== undefined)
|
|
1055
|
+
body.workingHoursEnd = rest.working_hours_end;
|
|
1056
|
+
if (rest.working_days !== undefined)
|
|
1057
|
+
body.workingDays = rest.working_days;
|
|
1058
|
+
if (rest.timezone !== undefined)
|
|
1059
|
+
body.timezone = rest.timezone;
|
|
1060
|
+
if (rest.dst_aware !== undefined)
|
|
1061
|
+
body.dstAware = rest.dst_aware;
|
|
1062
|
+
if (rest.multi_project !== undefined)
|
|
1063
|
+
body.multiProject = rest.multi_project;
|
|
1064
|
+
if (rest.task_ids !== undefined)
|
|
1065
|
+
body.taskIds = rest.task_ids;
|
|
1066
|
+
const schedule = await client.updateAgentSchedule(agent_id, schedule_id, body, resolveOrg(parsed));
|
|
1067
|
+
return { content: [{ type: 'text', text: `Updated schedule\n\n${text(schedule)}` }] };
|
|
1068
|
+
}
|
|
831
1069
|
// ─── Skills ─────────────────────────────────────────────────────────────
|
|
832
1070
|
case 'create_skill': {
|
|
833
1071
|
const parsed = z
|
package/dist/client.js
CHANGED
|
@@ -703,6 +703,16 @@ export class WolfpackClient {
|
|
|
703
703
|
.delete(this.withOrgSlug(`/agents/${agentId}/queue/${entryId}`, orgSlug))
|
|
704
704
|
.then(() => ({ success: true }));
|
|
705
705
|
}
|
|
706
|
+
// ─── Agent Builder: Schedules ──────────────────────────────────────────────
|
|
707
|
+
async listAgentSchedules(agentId, orgSlug) {
|
|
708
|
+
return this.api.get(this.withOrgSlug(`/agents/${agentId}/schedules`, orgSlug));
|
|
709
|
+
}
|
|
710
|
+
async createAgentSchedule(agentId, body, orgSlug) {
|
|
711
|
+
return this.api.post(this.withOrgSlug(`/agents/${agentId}/schedules`, orgSlug), body);
|
|
712
|
+
}
|
|
713
|
+
async updateAgentSchedule(agentId, scheduleId, body, orgSlug) {
|
|
714
|
+
return this.api.post(this.withOrgSlug(`/agents/${agentId}/schedules/${scheduleId}`, orgSlug), body);
|
|
715
|
+
}
|
|
706
716
|
// ─── Agent Builder: Secrets ────────────────────────────────────────────────
|
|
707
717
|
async listAgentSecrets(agentId, orgSlug) {
|
|
708
718
|
return this.api.get(this.withOrgSlug(`/agents/${agentId}/secrets`, orgSlug));
|