@helmdesk/mcp 0.1.0 → 0.2.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/README.md CHANGED
@@ -43,15 +43,21 @@ HELMDESK_API_KEY=sk_live_xxx npx @helmdesk/mcp
43
43
 
44
44
  | Tool | Description |
45
45
  |---|---|
46
- | `list_tickets` | List tickets with filters (status, priority, search, pagination) |
47
- | `get_ticket` | Get full ticket details with message thread |
46
+ | `list_tickets` | List tickets with filters (status, priority, **assignee**, **category**, search, pagination) |
47
+ | `get_ticket` | Get full ticket details with message thread and tags |
48
48
  | `create_ticket` | Create a new support ticket |
49
- | `update_ticket` | Update ticket status, priority, or category |
49
+ | `update_ticket` | Update ticket status, priority, category, or assignee |
50
50
  | `reply_to_ticket` | Send a staff reply to a ticket |
51
+ | `add_ticket_tag` | Add a tag (label) to a ticket for triage/categorization |
52
+ | `remove_ticket_tag` | Remove a tag from a ticket |
51
53
  | `send_email` | Send a transactional email using a template |
54
+ | `send_email_batch` | Send up to 100 transactional emails in one request (Pro plan or higher) |
52
55
  | `preview_email` | Preview a rendered email template |
53
56
  | `get_template_schema` | Get the variable schema for an email template |
54
57
  | `search_articles` | Search the knowledge base |
58
+ | `create_article` | Create a knowledge-base article (draft or published) |
59
+
60
+ 13 tools in total — `tickets:write` is required for ticket mutations and `add_ticket_tag`/`remove_ticket_tag`, `emails:send` for `send_email`/`send_email_batch` (batch also needs the Pro plan or higher), `articles:write` for `create_article`. A key with empty scopes has full access.
55
61
 
56
62
  ## Available Resources
57
63
 
@@ -71,6 +77,18 @@ Once connected, you can ask your AI agent:
71
77
  - "Create a ticket for user@example.com about a billing issue"
72
78
  - "Resolve ticket abc-123 and send a follow-up email"
73
79
  - "Check my pending tickets and draft replies for any waiting more than 24 hours"
80
+ - "List unassigned billing tickets, tag the urgent ones `needs-engineering`, and assign them to me"
81
+ - "We keep getting the same SSO question — write a published KB article answering it, then reply to ticket #88 linking it"
82
+
83
+ ## Testing
84
+
85
+ This package ships with unit and protocol-integration tests (Vitest). Run them with:
86
+
87
+ ```bash
88
+ pnpm --filter @helmdesk/mcp test
89
+ ```
90
+
91
+ See [TESTING.md](./TESTING.md) for the test strategy, coverage matrix, and how the integration tests exercise the real MCP protocol end-to-end.
74
92
 
75
93
  ## Configuration
76
94
 
package/dist/index.js CHANGED
File without changes
@@ -1 +1 @@
1
- {"version":3,"file":"articles.d.ts","sourceRoot":"","sources":["../../src/tools/articles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AAEnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAEnD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,QA0BtF"}
1
+ {"version":3,"file":"articles.d.ts","sourceRoot":"","sources":["../../src/tools/articles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AAEnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAEnD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,QAkDtF"}
@@ -20,5 +20,23 @@ export function registerArticleTools(server, getClient) {
20
20
  }],
21
21
  };
22
22
  });
23
+ server.tool('create_article', 'Create a knowledge-base article. Use this to capture a resolution or document a recurring answer so it can be reused and surfaced in future ticket replies. Defaults to a draft; pass status "published" to make it live (published articles become searchable).', {
24
+ title: z.string().describe('Article title'),
25
+ body: z.string().optional().describe('Article body in markdown'),
26
+ slug: z.string().optional()
27
+ .describe('URL slug (lowercase, hyphenated). Auto-generated from the title when omitted.'),
28
+ excerpt: z.string().optional().describe('Short summary shown in listings and search results'),
29
+ status: z.enum(['draft', 'published']).optional()
30
+ .describe('Publication status (default: draft)'),
31
+ }, async (params) => {
32
+ const client = getClient();
33
+ const article = await client.articles.create(params);
34
+ return {
35
+ content: [{
36
+ type: 'text',
37
+ text: JSON.stringify(article, null, 2),
38
+ }],
39
+ };
40
+ });
23
41
  }
24
42
  //# sourceMappingURL=articles.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"articles.js","sourceRoot":"","sources":["../../src/tools/articles.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,MAAM,UAAU,oBAAoB,CAAC,MAAiB,EAAE,SAA+B;IACrF,MAAM,CAAC,IAAI,CACT,iBAAiB,EACjB,gIAAgI,EAChI;QACE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kDAAkD,CAAC;QACzF,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;QACnE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;QAChE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;KACxE,EACD,KAAK,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;QACzC,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;QAC1B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;YAC1C,CAAC,EAAE,KAAK;YACR,QAAQ;YACR,IAAI;YACJ,KAAK;SACN,CAAC,CAAA;QACF,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;iBACtC,CAAC;SACH,CAAA;IACH,CAAC,CACF,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"articles.js","sourceRoot":"","sources":["../../src/tools/articles.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,MAAM,UAAU,oBAAoB,CAAC,MAAiB,EAAE,SAA+B;IACrF,MAAM,CAAC,IAAI,CACT,iBAAiB,EACjB,gIAAgI,EAChI;QACE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kDAAkD,CAAC;QACzF,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;QACnE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;QAChE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;KACxE,EACD,KAAK,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;QACzC,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;QAC1B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;YAC1C,CAAC,EAAE,KAAK;YACR,QAAQ;YACR,IAAI;YACJ,KAAK;SACN,CAAC,CAAA;QACF,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;iBACtC,CAAC;SACH,CAAA;IACH,CAAC,CACF,CAAA;IAED,MAAM,CAAC,IAAI,CACT,gBAAgB,EAChB,kQAAkQ,EAClQ;QACE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;QAC3C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;QAChE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;aACxB,QAAQ,CAAC,+EAA+E,CAAC;QAC5F,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oDAAoD,CAAC;QAC7F,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE;aAC9C,QAAQ,CAAC,qCAAqC,CAAC;KACnD,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;QAC1B,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QACpD,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;iBACvC,CAAC;SACH,CAAA;IACH,CAAC,CACF,CAAA;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"emails.d.ts","sourceRoot":"","sources":["../../src/tools/emails.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AAEnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAEnD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,QAgEpF"}
1
+ {"version":3,"file":"emails.d.ts","sourceRoot":"","sources":["../../src/tools/emails.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AAEnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAEnD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,QAiGpF"}
@@ -20,6 +20,31 @@ export function registerEmailTools(server, getClient) {
20
20
  }],
21
21
  };
22
22
  });
23
+ server.tool('send_email_batch', 'Send up to 100 transactional emails in one request. Each item has its own template, recipient, and variables. Items are delivered independently — a failed item is reported in its result slot without failing the rest. Requires the Pro plan or higher.', {
24
+ emails: z.array(z.object({
25
+ templateKey: z.string().describe('Template key. Use @account/ prefix for shared templates.'),
26
+ to_email: z.string().email().describe('Recipient email address'),
27
+ to_name: z.string().optional().describe('Recipient display name'),
28
+ variables: z.record(z.unknown()).optional().describe('Template variables for this recipient'),
29
+ idempotencyKey: z.string().optional().describe('Optional per-item key to prevent duplicate sends to this recipient'),
30
+ })).min(1).max(100).describe('The emails to send (max 100 per request)'),
31
+ }, async ({ emails }) => {
32
+ const client = getClient();
33
+ const result = await client.emails.sendBatch({
34
+ emails: emails.map((e) => ({
35
+ templateKey: e.templateKey,
36
+ to: { email: e.to_email, name: e.to_name },
37
+ variables: e.variables,
38
+ idempotencyKey: e.idempotencyKey,
39
+ })),
40
+ });
41
+ return {
42
+ content: [{
43
+ type: 'text',
44
+ text: JSON.stringify(result, null, 2),
45
+ }],
46
+ };
47
+ });
23
48
  server.tool('preview_email', 'Preview a rendered email template without sending. Returns the rendered subject and HTML body. Useful for verifying template output before sending.', {
24
49
  templateKey: z.string().describe('Template key to preview'),
25
50
  variables: z.record(z.unknown()).optional()
@@ -1 +1 @@
1
- {"version":3,"file":"emails.js","sourceRoot":"","sources":["../../src/tools/emails.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,MAAM,UAAU,kBAAkB,CAAC,MAAiB,EAAE,SAA+B;IACnF,MAAM,CAAC,IAAI,CACT,YAAY,EACZ,oIAAoI,EACpI;QACE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6FAA6F,CAAC;QAC/H,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;QAChE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;QACjE,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;aACxC,QAAQ,CAAC,4FAA4F,CAAC;KAC1G,EACD,KAAK,EAAE,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE;QACtD,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;QAC1B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;YACtC,WAAW;YACX,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE;YACtC,SAAS;SACV,CAAC,CAAA;QACF,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;iBACtC,CAAC;SACH,CAAA;IACH,CAAC,CACF,CAAA;IAED,MAAM,CAAC,IAAI,CACT,eAAe,EACf,qJAAqJ,EACrJ;QACE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;QAC3D,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;aACxC,QAAQ,CAAC,mCAAmC,CAAC;KACjD,EACD,KAAK,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,EAAE;QACnC,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;QAC1B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,CAAA;QACtE,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,YAAY,MAAM,CAAC,OAAO,OAAO,MAAM,CAAC,IAAI,EAAE;iBACrD,CAAC;SACH,CAAA;IACH,CAAC,CACF,CAAA;IAED,MAAM,CAAC,IAAI,CACT,qBAAqB,EACrB,2HAA2H,EAC3H;QACE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;KACnE,EACD,KAAK,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE;QACxB,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;QAC1B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAA;QACjE,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;iBACtC,CAAC;SACH,CAAA;IACH,CAAC,CACF,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"emails.js","sourceRoot":"","sources":["../../src/tools/emails.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,MAAM,UAAU,kBAAkB,CAAC,MAAiB,EAAE,SAA+B;IACnF,MAAM,CAAC,IAAI,CACT,YAAY,EACZ,oIAAoI,EACpI;QACE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6FAA6F,CAAC;QAC/H,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;QAChE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;QACjE,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;aACxC,QAAQ,CAAC,4FAA4F,CAAC;KAC1G,EACD,KAAK,EAAE,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE;QACtD,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;QAC1B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;YACtC,WAAW;YACX,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE;YACtC,SAAS;SACV,CAAC,CAAA;QACF,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;iBACtC,CAAC;SACH,CAAA;IACH,CAAC,CACF,CAAA;IAED,MAAM,CAAC,IAAI,CACT,kBAAkB,EAClB,2PAA2P,EAC3P;QACE,MAAM,EAAE,CAAC,CAAC,KAAK,CACb,CAAC,CAAC,MAAM,CAAC;YACP,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0DAA0D,CAAC;YAC5F,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;YAChE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;YACjE,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;YAC7F,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oEAAoE,CAAC;SACrH,CAAC,CACH,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,0CAA0C,CAAC;KACvE,EACD,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;QACnB,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;QAC1B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC;YAC3C,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACzB,WAAW,EAAE,CAAC,CAAC,WAAW;gBAC1B,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE;gBAC1C,SAAS,EAAE,CAAC,CAAC,SAAS;gBACtB,cAAc,EAAE,CAAC,CAAC,cAAc;aACjC,CAAC,CAAC;SACJ,CAAC,CAAA;QACF,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;iBACtC,CAAC;SACH,CAAA;IACH,CAAC,CACF,CAAA;IAED,MAAM,CAAC,IAAI,CACT,eAAe,EACf,qJAAqJ,EACrJ;QACE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;QAC3D,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;aACxC,QAAQ,CAAC,mCAAmC,CAAC;KACjD,EACD,KAAK,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,EAAE;QACnC,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;QAC1B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,CAAA;QACtE,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,YAAY,MAAM,CAAC,OAAO,OAAO,MAAM,CAAC,IAAI,EAAE;iBACrD,CAAC;SACH,CAAA;IACH,CAAC,CACF,CAAA;IAED,MAAM,CAAC,IAAI,CACT,qBAAqB,EACrB,2HAA2H,EAC3H;QACE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;KACnE,EACD,KAAK,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE;QACxB,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;QAC1B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAA;QACjE,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;iBACtC,CAAC;SACH,CAAA;IACH,CAAC,CACF,CAAA;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"tickets.d.ts","sourceRoot":"","sources":["../../src/tools/tickets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AAEnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAEnD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,QAqHrF"}
1
+ {"version":3,"file":"tickets.d.ts","sourceRoot":"","sources":["../../src/tools/tickets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AAEnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAEnD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,QAmKrF"}
@@ -7,6 +7,10 @@ export function registerTicketTools(server, getClient) {
7
7
  .describe('Filter by priority level'),
8
8
  search: z.string().optional()
9
9
  .describe('Search tickets by subject or customer email'),
10
+ assignee: z.string().optional()
11
+ .describe('Filter by assignee: a user id, a comma-separated list of ids, or "unassigned"'),
12
+ category: z.enum(['bug', 'feature_request', 'billing', 'howto', 'other']).optional()
13
+ .describe('Filter by category'),
10
14
  page: z.number().optional().describe('Page number (default: 1)'),
11
15
  limit: z.number().optional().describe('Results per page (default: 20, max: 100)'),
12
16
  }, async (params) => {
@@ -15,6 +19,8 @@ export function registerTicketTools(server, getClient) {
15
19
  status: params.status,
16
20
  priority: params.priority,
17
21
  search: params.search,
22
+ assignee: params.assignee,
23
+ category: params.category,
18
24
  page: params.page,
19
25
  limit: params.limit,
20
26
  });
@@ -56,7 +62,7 @@ export function registerTicketTools(server, getClient) {
56
62
  }],
57
63
  };
58
64
  });
59
- server.tool('update_ticket', 'Update a ticket\'s status, priority, or category. Use this to resolve, close, or re-prioritize tickets.', {
65
+ server.tool('update_ticket', 'Update a ticket\'s status, priority, category, or assignee. Use this to resolve, close, re-prioritize, or assign tickets to team members.', {
60
66
  ticketId: z.string().describe('The ticket ID to update'),
61
67
  status: z.enum(['new', 'open', 'pending', 'resolved', 'closed']).optional()
62
68
  .describe('New status'),
@@ -64,6 +70,8 @@ export function registerTicketTools(server, getClient) {
64
70
  .describe('New priority'),
65
71
  category: z.enum(['bug', 'feature_request', 'billing', 'howto', 'other']).optional()
66
72
  .describe('New category'),
73
+ assignedTo: z.string().uuid().nullable().optional()
74
+ .describe('User ID to assign the ticket to, or null to unassign'),
67
75
  }, async ({ ticketId, ...updates }) => {
68
76
  const client = getClient();
69
77
  const ticket = await client.tickets.update(ticketId, updates);
@@ -87,5 +95,31 @@ export function registerTicketTools(server, getClient) {
87
95
  }],
88
96
  };
89
97
  });
98
+ server.tool('add_ticket_tag', 'Add a tag (label) to a ticket for categorization or triage, e.g. "vip", "needs-engineering", "refund". Returns the ticket\'s full tag list.', {
99
+ ticketId: z.string().describe('The ticket ID to tag'),
100
+ tag: z.string().describe('The tag to add (1–50 characters)'),
101
+ }, async ({ ticketId, tag }) => {
102
+ const client = getClient();
103
+ const result = await client.tickets.addTag(ticketId, tag);
104
+ return {
105
+ content: [{
106
+ type: 'text',
107
+ text: JSON.stringify(result, null, 2),
108
+ }],
109
+ };
110
+ });
111
+ server.tool('remove_ticket_tag', 'Remove a tag from a ticket. Returns the ticket\'s remaining tags.', {
112
+ ticketId: z.string().describe('The ticket ID'),
113
+ tag: z.string().describe('The tag to remove'),
114
+ }, async ({ ticketId, tag }) => {
115
+ const client = getClient();
116
+ const result = await client.tickets.removeTag(ticketId, tag);
117
+ return {
118
+ content: [{
119
+ type: 'text',
120
+ text: JSON.stringify(result, null, 2),
121
+ }],
122
+ };
123
+ });
90
124
  }
91
125
  //# sourceMappingURL=tickets.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tickets.js","sourceRoot":"","sources":["../../src/tools/tickets.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tickets.js","sourceRoot":"","sources":["../../src/tools/tickets.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@helmdesk/mcp",
3
- "version": "0.1.0",
3
+ "version": "0.2.1",
4
4
  "description": "MCP server for Helmdesk — let AI agents manage tickets, send emails, and search your knowledge base",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -18,21 +18,16 @@
18
18
  "dist",
19
19
  "README.md"
20
20
  ],
21
- "scripts": {
22
- "build": "tsc -p tsconfig.build.json",
23
- "prepublishOnly": "pnpm run build",
24
- "typecheck": "tsc --noEmit",
25
- "dev": "tsx src/index.ts"
26
- },
27
21
  "dependencies": {
28
- "@helmdesk/sdk": "workspace:*",
29
22
  "@modelcontextprotocol/sdk": "^1.12.1",
30
- "zod": "^3.25.23"
23
+ "zod": "^3.25.23",
24
+ "@helmdesk/sdk": "0.4.1"
31
25
  },
32
26
  "devDependencies": {
33
27
  "@types/node": "^20",
34
28
  "tsx": "^4.19.0",
35
- "typescript": "^5.8.3"
29
+ "typescript": "^5.8.3",
30
+ "vitest": "^4.1.6"
36
31
  },
37
32
  "keywords": [
38
33
  "helmdesk",
@@ -56,5 +51,12 @@
56
51
  },
57
52
  "publishConfig": {
58
53
  "access": "public"
54
+ },
55
+ "scripts": {
56
+ "build": "tsc -p tsconfig.build.json",
57
+ "typecheck": "tsc --noEmit",
58
+ "test": "vitest run",
59
+ "test:coverage": "vitest run --coverage",
60
+ "dev": "tsx src/index.ts"
59
61
  }
60
- }
62
+ }