@dudamel/mcp-agents 2026.922.1 → 2026.924.1

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/index.js CHANGED
@@ -405,56 +405,56 @@ function registerAgentTools(server, client, ctx) {
405
405
  return jsonResult({ subAgentIds: page.items });
406
406
  }
407
407
  );
408
- if (ctx.role !== "admin") return;
409
408
  server.registerTool(
410
- "create-agent",
409
+ "activate-agent",
411
410
  {
412
- description: "Create a new agent definition.",
411
+ description: "Activate an agent so it starts receiving and answering messages.",
413
412
  inputSchema: {
414
- name: z.string().describe("Agent name (unique, kebab-case)"),
415
- displayName: z.string().optional().describe("Display name shown in the UI"),
416
- description: z.string().optional().describe("Agent description"),
417
- identity: z.string().optional().describe('Agent identity (e.g. "senior backend developer")'),
418
- instructions: z.string().optional().describe("Agent instructions (appended to system prompt)"),
419
- systemPrompt: z.string().optional().describe("System prompt for the agent"),
420
- model: z.string().optional().describe('Model identifier (e.g. "claude-sonnet-4-6")'),
421
- skipPermissions: z.boolean().optional().describe("Skip permission prompts in coding agents"),
422
- driverProvider: z.string().optional().describe("AI provider instance name for the driver"),
423
- driverMode: z.enum(["api", "cli"]).optional().describe("Driver mode: api (conversational) or cli (coding)"),
424
- isSubAgent: z.boolean().optional().describe("Mark as a sub-agent (not shown in top-level lists)")
413
+ id: z.string().describe("Agent ID (UUID)")
425
414
  },
426
415
  annotations: { readOnlyHint: false, destructiveHint: false }
427
416
  },
428
- async ({ name, ...rest }) => {
429
- const result = await client.post("/api/agents", { name, ...rest });
417
+ async ({ id }) => {
418
+ const result = await client.post(`/api/agents/${id}/activate`);
430
419
  return jsonResult(result);
431
420
  }
432
421
  );
433
422
  server.registerTool(
434
- "activate-agent",
423
+ "deactivate-agent",
435
424
  {
436
- description: "Activate an agent so it starts receiving and answering messages.",
425
+ description: "Deactivate an agent \u2014 it stops receiving messages (Slack, dashboard chat) until reactivated. The definition is kept; this is the way to silence an agent without deleting it.",
437
426
  inputSchema: {
438
427
  id: z.string().describe("Agent ID (UUID)")
439
428
  },
440
429
  annotations: { readOnlyHint: false, destructiveHint: false }
441
430
  },
442
431
  async ({ id }) => {
443
- const result = await client.post(`/api/agents/${id}/activate`);
432
+ const result = await client.post(`/api/agents/${id}/deactivate`);
444
433
  return jsonResult(result);
445
434
  }
446
435
  );
436
+ if (ctx.role !== "admin") return;
447
437
  server.registerTool(
448
- "deactivate-agent",
438
+ "create-agent",
449
439
  {
450
- description: "Deactivate an agent \u2014 it stops receiving messages (Slack, dashboard chat) until reactivated. The definition is kept; this is the way to silence an agent without deleting it.",
440
+ description: "Create a new agent definition.",
451
441
  inputSchema: {
452
- id: z.string().describe("Agent ID (UUID)")
442
+ name: z.string().describe("Agent name (unique, kebab-case)"),
443
+ displayName: z.string().optional().describe("Display name shown in the UI"),
444
+ description: z.string().optional().describe("Agent description"),
445
+ identity: z.string().optional().describe('Agent identity (e.g. "senior backend developer")'),
446
+ instructions: z.string().optional().describe("Agent instructions (appended to system prompt)"),
447
+ systemPrompt: z.string().optional().describe("System prompt for the agent"),
448
+ model: z.string().optional().describe('Model identifier (e.g. "claude-sonnet-4-6")'),
449
+ skipPermissions: z.boolean().optional().describe("Skip permission prompts in coding agents"),
450
+ driverProvider: z.string().optional().describe("AI provider instance name for the driver"),
451
+ driverMode: z.enum(["api", "cli"]).optional().describe("Driver mode: api (conversational) or cli (coding)"),
452
+ isSubAgent: z.boolean().optional().describe("Mark as a sub-agent (not shown in top-level lists)")
453
453
  },
454
454
  annotations: { readOnlyHint: false, destructiveHint: false }
455
455
  },
456
- async ({ id }) => {
457
- const result = await client.post(`/api/agents/${id}/deactivate`);
456
+ async ({ name, ...rest }) => {
457
+ const result = await client.post("/api/agents", { name, ...rest });
458
458
  return jsonResult(result);
459
459
  }
460
460
  );
@@ -953,7 +953,7 @@ function registerAgentMcpTools(server, client, ctx) {
953
953
  return jsonResult({ items: page.items, total: page.total });
954
954
  }
955
955
  );
956
- if (ctx.readOnly || ctx.role !== "admin") return;
956
+ if (ctx.readOnly) return;
957
957
  server.registerTool(
958
958
  "set-agent-mcp-servers",
959
959
  {
@@ -463,56 +463,56 @@ function registerAgentTools(server2, client, ctx2) {
463
463
  return jsonResult({ subAgentIds: page.items });
464
464
  }
465
465
  );
466
- if (ctx2.role !== "admin") return;
467
466
  server2.registerTool(
468
- "create-agent",
467
+ "activate-agent",
469
468
  {
470
- description: "Create a new agent definition.",
469
+ description: "Activate an agent so it starts receiving and answering messages.",
471
470
  inputSchema: {
472
- name: z.string().describe("Agent name (unique, kebab-case)"),
473
- displayName: z.string().optional().describe("Display name shown in the UI"),
474
- description: z.string().optional().describe("Agent description"),
475
- identity: z.string().optional().describe('Agent identity (e.g. "senior backend developer")'),
476
- instructions: z.string().optional().describe("Agent instructions (appended to system prompt)"),
477
- systemPrompt: z.string().optional().describe("System prompt for the agent"),
478
- model: z.string().optional().describe('Model identifier (e.g. "claude-sonnet-4-6")'),
479
- skipPermissions: z.boolean().optional().describe("Skip permission prompts in coding agents"),
480
- driverProvider: z.string().optional().describe("AI provider instance name for the driver"),
481
- driverMode: z.enum(["api", "cli"]).optional().describe("Driver mode: api (conversational) or cli (coding)"),
482
- isSubAgent: z.boolean().optional().describe("Mark as a sub-agent (not shown in top-level lists)")
471
+ id: z.string().describe("Agent ID (UUID)")
483
472
  },
484
473
  annotations: { readOnlyHint: false, destructiveHint: false }
485
474
  },
486
- async ({ name, ...rest }) => {
487
- const result = await client.post("/api/agents", { name, ...rest });
475
+ async ({ id }) => {
476
+ const result = await client.post(`/api/agents/${id}/activate`);
488
477
  return jsonResult(result);
489
478
  }
490
479
  );
491
480
  server2.registerTool(
492
- "activate-agent",
481
+ "deactivate-agent",
493
482
  {
494
- description: "Activate an agent so it starts receiving and answering messages.",
483
+ description: "Deactivate an agent \u2014 it stops receiving messages (Slack, dashboard chat) until reactivated. The definition is kept; this is the way to silence an agent without deleting it.",
495
484
  inputSchema: {
496
485
  id: z.string().describe("Agent ID (UUID)")
497
486
  },
498
487
  annotations: { readOnlyHint: false, destructiveHint: false }
499
488
  },
500
489
  async ({ id }) => {
501
- const result = await client.post(`/api/agents/${id}/activate`);
490
+ const result = await client.post(`/api/agents/${id}/deactivate`);
502
491
  return jsonResult(result);
503
492
  }
504
493
  );
494
+ if (ctx2.role !== "admin") return;
505
495
  server2.registerTool(
506
- "deactivate-agent",
496
+ "create-agent",
507
497
  {
508
- description: "Deactivate an agent \u2014 it stops receiving messages (Slack, dashboard chat) until reactivated. The definition is kept; this is the way to silence an agent without deleting it.",
498
+ description: "Create a new agent definition.",
509
499
  inputSchema: {
510
- id: z.string().describe("Agent ID (UUID)")
500
+ name: z.string().describe("Agent name (unique, kebab-case)"),
501
+ displayName: z.string().optional().describe("Display name shown in the UI"),
502
+ description: z.string().optional().describe("Agent description"),
503
+ identity: z.string().optional().describe('Agent identity (e.g. "senior backend developer")'),
504
+ instructions: z.string().optional().describe("Agent instructions (appended to system prompt)"),
505
+ systemPrompt: z.string().optional().describe("System prompt for the agent"),
506
+ model: z.string().optional().describe('Model identifier (e.g. "claude-sonnet-4-6")'),
507
+ skipPermissions: z.boolean().optional().describe("Skip permission prompts in coding agents"),
508
+ driverProvider: z.string().optional().describe("AI provider instance name for the driver"),
509
+ driverMode: z.enum(["api", "cli"]).optional().describe("Driver mode: api (conversational) or cli (coding)"),
510
+ isSubAgent: z.boolean().optional().describe("Mark as a sub-agent (not shown in top-level lists)")
511
511
  },
512
512
  annotations: { readOnlyHint: false, destructiveHint: false }
513
513
  },
514
- async ({ id }) => {
515
- const result = await client.post(`/api/agents/${id}/deactivate`);
514
+ async ({ name, ...rest }) => {
515
+ const result = await client.post("/api/agents", { name, ...rest });
516
516
  return jsonResult(result);
517
517
  }
518
518
  );
@@ -1011,7 +1011,7 @@ function registerAgentMcpTools(server2, client, ctx2) {
1011
1011
  return jsonResult({ items: page.items, total: page.total });
1012
1012
  }
1013
1013
  );
1014
- if (ctx2.readOnly || ctx2.role !== "admin") return;
1014
+ if (ctx2.readOnly) return;
1015
1015
  server2.registerTool(
1016
1016
  "set-agent-mcp-servers",
1017
1017
  {
@@ -1 +1 @@
1
- {"version":3,"file":"agent-mcp.d.ts","sourceRoot":"","sources":["../../src/tools/agent-mcp.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGvD;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,gBAAgB,EACxB,GAAG,EAAE,WAAW,GACf,IAAI,CAiDN"}
1
+ {"version":3,"file":"agent-mcp.d.ts","sourceRoot":"","sources":["../../src/tools/agent-mcp.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGvD;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,gBAAgB,EACxB,GAAG,EAAE,WAAW,GACf,IAAI,CAoDN"}
@@ -1 +1 @@
1
- {"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../../src/tools/agents.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGvD,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,gBAAgB,EACxB,GAAG,EAAE,WAAW,GACf,IAAI,CA0ZN"}
1
+ {"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../../src/tools/agents.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGvD,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,gBAAgB,EACxB,GAAG,EAAE,WAAW,GACf,IAAI,CAiaN"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dudamel/mcp-agents",
3
- "version": "2026.922.1",
3
+ "version": "2026.924.1",
4
4
  "description": "Dudamel agents MCP — stdio client for Dudamel's agents management surface over its REST API.",
5
5
  "license": "SEE LICENSE IN LICENSE.md",
6
6
  "type": "module",
@@ -32,8 +32,9 @@
32
32
  },
33
33
  "devDependencies": {
34
34
  "esbuild": "^0.25.0",
35
+ "@dudamel/mcp-common": "0.1.0",
35
36
  "@dudamel/contracts": "0.1.0",
36
- "@dudamel/mcp-common": "0.1.0"
37
+ "@dudamel/mcp-tool-contract": "0.1.0"
37
38
  },
38
39
  "scripts": {
39
40
  "build": "esbuild src/stdio-server.ts src/index.ts --bundle --platform=node --target=node20 --format=esm --outdir=dist --external:@modelcontextprotocol/sdk --external:zod && tsc --emitDeclarationOnly",