wolfpack-mcp 1.0.51 → 1.0.52

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.
@@ -290,7 +290,8 @@ export const AGENT_BUILDER_TOOLS = [
290
290
  // ─── Group 5: Skills (authoring) ─────────────────────────────────────────
291
291
  {
292
292
  name: 'create_skill',
293
- description: 'Create a new org-level skill. Skills are reusable capability packs agents can load on demand.',
293
+ description: 'Create a skill. By default creates an org-level skill. ' +
294
+ 'Pass agent_id to create an agent-private skill scoped to that agent only.',
294
295
  inputSchema: {
295
296
  type: 'object',
296
297
  properties: {
@@ -306,6 +307,10 @@ export const AGENT_BUILDER_TOOLS = [
306
307
  type: 'string',
307
308
  description: 'Instruction body in markdown',
308
309
  },
310
+ agent_id: {
311
+ type: 'string',
312
+ description: 'Agent profile ID. When provided, creates an agent-private skill instead of org-level.',
313
+ },
309
314
  },
310
315
  required: ['name', 'description', 'content'],
311
316
  },
@@ -375,18 +380,26 @@ export const AGENT_BUILDER_TOOLS = [
375
380
  required: ['agent_id', 'skill_ids'],
376
381
  },
377
382
  },
378
- // ─── Group 5b: Skills (reading org library) ──────────────────────────────
383
+ // ─── Group 5b: Skills (reading) ─────────────────────────────────────────
379
384
  {
380
- name: 'list_org_skills',
381
- description: 'List all skills in the org skill library (org-level + system-level). ' +
382
- 'Returns ID, name, description, and whether the skill is built-in. ' +
383
- 'Use skill IDs with set_agent_skills to assign skills to an agent.',
384
- inputSchema: { type: 'object', properties: {} },
385
+ name: 'list_agent_skills',
386
+ description: 'List all skills for a specific agent: agent-private skills + linked org skills + built-in skills. ' +
387
+ 'Returns full skill objects with IDs. Agent-scoped skills have agentProfileId set. ' +
388
+ 'Use this to see what skills an agent has and get IDs for update_skill.',
389
+ inputSchema: {
390
+ type: 'object',
391
+ properties: {
392
+ agent_id: { type: 'string', description: 'Agent profile ID' },
393
+ },
394
+ required: ['agent_id'],
395
+ },
385
396
  },
386
397
  {
387
- name: 'get_org_skill',
388
- description: 'Get the full content of an org-level skill by name. ' +
389
- 'Returns instructions, metadata, and a list of attached resources.',
398
+ name: 'get_skill_detail',
399
+ description: 'Get the full content of a skill by name. ' +
400
+ 'Returns instructions, metadata, and a list of attached resources. ' +
401
+ 'With agent_id: resolves agent-private → org → system (use after list_agent_skills). ' +
402
+ 'Without agent_id: resolves org → system (use after list_org_skills).',
390
403
  inputSchema: {
391
404
  type: 'object',
392
405
  properties: {
@@ -394,10 +407,21 @@ export const AGENT_BUILDER_TOOLS = [
394
407
  type: 'string',
395
408
  description: 'The name of the skill to load (e.g. "deploy-app")',
396
409
  },
410
+ agent_id: {
411
+ type: 'string',
412
+ description: 'Agent profile ID. When provided, resolves with agent-scoped precedence (agent → org → system).',
413
+ },
397
414
  },
398
415
  required: ['skill_name'],
399
416
  },
400
417
  },
418
+ {
419
+ name: 'list_org_skills',
420
+ description: 'List all skills in the org skill library (org-level + system-level). ' +
421
+ 'Returns ID, name, description, and whether the skill is built-in. ' +
422
+ 'Use skill IDs with set_agent_skills to assign skills to an agent.',
423
+ inputSchema: { type: 'object', properties: {} },
424
+ },
401
425
  // ─── Group 6: Secrets ─────────────────────────────────────────────────────
402
426
  {
403
427
  name: 'list_agent_secrets',
@@ -681,11 +705,23 @@ export async function handleAgentBuilderTool(name, args, client) {
681
705
  // ─── Skills ─────────────────────────────────────────────────────────────
682
706
  case 'create_skill': {
683
707
  const parsed = z
684
- .object({ name: z.string(), description: z.string(), content: z.string() })
708
+ .object({
709
+ name: z.string(),
710
+ description: z.string(),
711
+ content: z.string(),
712
+ agent_id: z.string().optional(),
713
+ })
685
714
  .parse(args);
686
- const skill = await client.createSkill(parsed);
715
+ const { agent_id, ...fields } = parsed;
716
+ const skill = await client.createSkill({
717
+ ...fields,
718
+ agentProfileId: agent_id,
719
+ });
720
+ const scope = agent_id ? 'agent-scoped' : 'org-level';
687
721
  return {
688
- content: [{ type: 'text', text: `Created skill "${parsed.name}"\n\n${text(skill)}` }],
722
+ content: [
723
+ { type: 'text', text: `Created ${scope} skill "${parsed.name}"\n\n${text(skill)}` },
724
+ ],
689
725
  };
690
726
  }
691
727
  case 'update_skill': {
@@ -746,26 +782,33 @@ export async function handleAgentBuilderTool(name, args, client) {
746
782
  ],
747
783
  };
748
784
  }
749
- // ─── Skills (reading org library) ────────────────────────────────────────
750
- case 'list_org_skills': {
751
- const skills = await client.listOrgSkills();
785
+ // ─── Skills (reading) ─────────────────────────────────────────────────────
786
+ case 'list_agent_skills': {
787
+ const parsed = z.object({ agent_id: z.string() }).parse(args);
788
+ const skills = await client.listAgentSkills(parsed.agent_id);
752
789
  return { content: [{ type: 'text', text: text(skills) }] };
753
790
  }
754
- case 'get_org_skill': {
755
- const parsed = z.object({ skill_name: z.string() }).parse(args);
756
- const skill = await client.getOrgSkill(parsed.skill_name);
791
+ case 'get_skill_detail': {
792
+ const parsed = z
793
+ .object({ skill_name: z.string(), agent_id: z.string().optional() })
794
+ .parse(args);
795
+ const skill = await client.getSkillDetail(parsed.skill_name, parsed.agent_id);
757
796
  if (!skill) {
758
797
  return {
759
798
  content: [
760
799
  {
761
800
  type: 'text',
762
- text: `Skill '${parsed.skill_name}' not found. Use list_org_skills to see available skills.`,
801
+ text: `Skill '${parsed.skill_name}' not found. Use list_agent_skills or list_org_skills to see available skills.`,
763
802
  },
764
803
  ],
765
804
  };
766
805
  }
767
806
  return { content: [{ type: 'text', text: text(skill) }] };
768
807
  }
808
+ case 'list_org_skills': {
809
+ const skills = await client.listOrgSkills();
810
+ return { content: [{ type: 'text', text: text(skills) }] };
811
+ }
769
812
  // ─── Secrets ─────────────────────────────────────────────────────────────
770
813
  case 'list_agent_secrets': {
771
814
  const { agent_id } = AgentIdSchema.parse(args);
package/dist/client.js CHANGED
@@ -703,12 +703,16 @@ export class WolfpackClient {
703
703
  });
704
704
  }
705
705
  // ─── Agent Builder: Skills (read) ──────────────────────────────────────────
706
+ async listAgentSkills(agentId) {
707
+ return this.api.get(`/skills/agent-profiles/${agentId}`);
708
+ }
706
709
  async listOrgSkills() {
707
710
  return this.api.get('/agents/org-skills');
708
711
  }
709
- async getOrgSkill(name) {
712
+ async getSkillDetail(name, agentId) {
710
713
  try {
711
- return await this.api.get(`/agents/org-skills/${encodeURIComponent(name)}`);
714
+ const query = agentId ? `?agentProfileId=${agentId}` : '';
715
+ return await this.api.get(`/agents/org-skills/${encodeURIComponent(name)}${query}`);
712
716
  }
713
717
  catch (error) {
714
718
  if (error && typeof error === 'object' && 'status' in error && error.status === 404)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wolfpack-mcp",
3
- "version": "1.0.51",
3
+ "version": "1.0.52",
4
4
  "description": "MCP server for Wolfpack AI-enhanced software delivery tools",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",