@zaapi/open-api-mcp 1.0.0 → 1.1.0

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.
Files changed (89) hide show
  1. package/dist/tools/accounts/list-accounts.js +32 -0
  2. package/dist/tools/accounts/list-accounts.js.map +1 -0
  3. package/dist/tools/common.js +15 -4
  4. package/dist/tools/common.js.map +1 -1
  5. package/dist/tools/contacts/create-contact.js +21 -6
  6. package/dist/tools/contacts/create-contact.js.map +1 -1
  7. package/dist/tools/contacts/get-contact-by-id.js +8 -3
  8. package/dist/tools/contacts/get-contact-by-id.js.map +1 -1
  9. package/dist/tools/contacts/list-contact-fields.js +4 -2
  10. package/dist/tools/contacts/list-contact-fields.js.map +1 -1
  11. package/dist/tools/contacts/list-contacts.js +13 -6
  12. package/dist/tools/contacts/list-contacts.js.map +1 -1
  13. package/dist/tools/contacts/update-contact-field.js +17 -6
  14. package/dist/tools/contacts/update-contact-field.js.map +1 -1
  15. package/dist/tools/conversations/filter-conversations.js +23 -8
  16. package/dist/tools/conversations/filter-conversations.js.map +1 -1
  17. package/dist/tools/conversations/mark-conversation-read.js +8 -3
  18. package/dist/tools/conversations/mark-conversation-read.js.map +1 -1
  19. package/dist/tools/conversations/update-conversation-labels.js +33 -8
  20. package/dist/tools/conversations/update-conversation-labels.js.map +1 -1
  21. package/dist/tools/index.js +2 -0
  22. package/dist/tools/index.js.map +1 -1
  23. package/dist/tools/labels/list-labels.js +10 -4
  24. package/dist/tools/labels/list-labels.js.map +1 -1
  25. package/dist/tools/messages/create-internal-comment.js +12 -4
  26. package/dist/tools/messages/create-internal-comment.js.map +1 -1
  27. package/dist/tools/messages/get-messages.js +29 -8
  28. package/dist/tools/messages/get-messages.js.map +1 -1
  29. package/dist/tools/messages/list-internal-comments.js +8 -4
  30. package/dist/tools/messages/list-internal-comments.js.map +1 -1
  31. package/dist/tools/messages/send-plain-text-message.js +13 -4
  32. package/dist/tools/messages/send-plain-text-message.js.map +1 -1
  33. package/dist/tools/teams/list-teams.js +9 -4
  34. package/dist/tools/teams/list-teams.js.map +1 -1
  35. package/dist/tools/tickets/close-ticket.js +28 -10
  36. package/dist/tools/tickets/close-ticket.js.map +1 -1
  37. package/dist/tools/tickets/get-ticket-by-id.js +9 -5
  38. package/dist/tools/tickets/get-ticket-by-id.js.map +1 -1
  39. package/dist/tools/tickets/list-ticket-fields.js +4 -3
  40. package/dist/tools/tickets/list-ticket-fields.js.map +1 -1
  41. package/dist/tools/tickets/list-tickets.js +73 -25
  42. package/dist/tools/tickets/list-tickets.js.map +1 -1
  43. package/dist/tools/tickets/update-ticket-field.js +15 -8
  44. package/dist/tools/tickets/update-ticket-field.js.map +1 -1
  45. package/dist/tools/users/list-users.js +10 -5
  46. package/dist/tools/users/list-users.js.map +1 -1
  47. package/package.json +4 -4
  48. package/dist/tools/close-ticket.js +0 -21
  49. package/dist/tools/close-ticket.js.map +0 -1
  50. package/dist/tools/create-contact.js +0 -21
  51. package/dist/tools/create-contact.js.map +0 -1
  52. package/dist/tools/create-internal-comment.js +0 -15
  53. package/dist/tools/create-internal-comment.js.map +0 -1
  54. package/dist/tools/filter-conversations.js +0 -18
  55. package/dist/tools/filter-conversations.js.map +0 -1
  56. package/dist/tools/get-contact-by-id.js +0 -14
  57. package/dist/tools/get-contact-by-id.js.map +0 -1
  58. package/dist/tools/get-messages.js +0 -19
  59. package/dist/tools/get-messages.js.map +0 -1
  60. package/dist/tools/get-ticket-by-id.js +0 -16
  61. package/dist/tools/get-ticket-by-id.js.map +0 -1
  62. package/dist/tools/list-contact-fields.js +0 -12
  63. package/dist/tools/list-contact-fields.js.map +0 -1
  64. package/dist/tools/list-contacts.js +0 -22
  65. package/dist/tools/list-contacts.js.map +0 -1
  66. package/dist/tools/list-internal-comments.js +0 -17
  67. package/dist/tools/list-internal-comments.js.map +0 -1
  68. package/dist/tools/list-labels.js +0 -16
  69. package/dist/tools/list-labels.js.map +0 -1
  70. package/dist/tools/list-teams.js +0 -17
  71. package/dist/tools/list-teams.js.map +0 -1
  72. package/dist/tools/list-ticket-fields.js +0 -15
  73. package/dist/tools/list-ticket-fields.js.map +0 -1
  74. package/dist/tools/list-tickets.js +0 -88
  75. package/dist/tools/list-tickets.js.map +0 -1
  76. package/dist/tools/list-users.js +0 -16
  77. package/dist/tools/list-users.js.map +0 -1
  78. package/dist/tools/mark-conversation-read.js +0 -18
  79. package/dist/tools/mark-conversation-read.js.map +0 -1
  80. package/dist/tools/send-plain-text-message.js +0 -15
  81. package/dist/tools/send-plain-text-message.js.map +0 -1
  82. package/dist/tools/update-contact-field.js +0 -17
  83. package/dist/tools/update-contact-field.js.map +0 -1
  84. package/dist/tools/update-conversation-labels.js +0 -16
  85. package/dist/tools/update-conversation-labels.js.map +0 -1
  86. package/dist/tools/update-ticket-field.js +0 -22
  87. package/dist/tools/update-ticket-field.js.map +0 -1
  88. package/dist/tools.js +0 -413
  89. package/dist/tools.js.map +0 -1
@@ -1,14 +1,18 @@
1
1
  import { z } from 'zod';
2
- import { expand, paginationFields, paginationQueryKeys, } from '../common.js';
2
+ import { describeHttpRequest, expand, paginationFields, paginationQueryKeys, } from '../common.js';
3
+ const queryKeys = ['conversationId', ...paginationQueryKeys];
3
4
  export const listInternalComments = {
4
5
  name: 'listInternalComments',
5
6
  title: 'List internal comments',
6
- description: 'Required scope: messages:read. Seller-private notes on a conversation, newest first. These do not reach the customer.',
7
+ description: `Required scope: messages:read. ${describeHttpRequest('GET', '/v1/messages/internal-comments', queryKeys)} Seller-private notes on a conversation, newest first. These do not reach the customer. Paginate with pageSize (max 50) and cursor.`,
7
8
  method: 'GET',
8
9
  path: '/v1/messages/internal-comments',
9
- queryKeys: ['conversationId', ...paginationQueryKeys],
10
+ queryKeys,
10
11
  inputSchema: z.object({
11
- conversationId: z.string(),
12
+ conversationId: z
13
+ .string()
14
+ .min(1)
15
+ .describe('Query parameter. The ID of the conversation.'),
12
16
  ...paginationFields,
13
17
  expand: expand('Pass createdBy,conversation,account to resolve related names.'),
14
18
  }),
@@ -1 +1 @@
1
- {"version":3,"file":"list-internal-comments.js","sourceRoot":"","sources":["../../../src/tools/messages/list-internal-comments.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,MAAM,EACN,gBAAgB,EAChB,mBAAmB,GAEpB,MAAM,cAAc,CAAC;AAEtB,MAAM,CAAC,MAAM,oBAAoB,GAAiB;IAChD,IAAI,EAAE,sBAAsB;IAC5B,KAAK,EAAE,wBAAwB;IAC/B,WAAW,EACT,uHAAuH;IACzH,MAAM,EAAE,KAAK;IACb,IAAI,EAAE,gCAAgC;IACtC,SAAS,EAAE,CAAC,gBAAgB,EAAE,GAAG,mBAAmB,CAAC;IACrD,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE;QAC1B,GAAG,gBAAgB;QACnB,MAAM,EAAE,MAAM,CACZ,+DAA+D,CAChE;KACF,CAAC;IACF,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;CACpC,CAAC"}
1
+ {"version":3,"file":"list-internal-comments.js","sourceRoot":"","sources":["../../../src/tools/messages/list-internal-comments.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,mBAAmB,EACnB,MAAM,EACN,gBAAgB,EAChB,mBAAmB,GAEpB,MAAM,cAAc,CAAC;AAEtB,MAAM,SAAS,GAAG,CAAC,gBAAgB,EAAE,GAAG,mBAAmB,CAAC,CAAC;AAE7D,MAAM,CAAC,MAAM,oBAAoB,GAAiB;IAChD,IAAI,EAAE,sBAAsB;IAC5B,KAAK,EAAE,wBAAwB;IAC/B,WAAW,EAAE,kCAAkC,mBAAmB,CAAC,KAAK,EAAE,gCAAgC,EAAE,SAAS,CAAC,qIAAqI;IAC3P,MAAM,EAAE,KAAK;IACb,IAAI,EAAE,gCAAgC;IACtC,SAAS;IACT,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,cAAc,EAAE,CAAC;aACd,MAAM,EAAE;aACR,GAAG,CAAC,CAAC,CAAC;aACN,QAAQ,CAAC,8CAA8C,CAAC;QAC3D,GAAG,gBAAgB;QACnB,MAAM,EAAE,MAAM,CACZ,+DAA+D,CAChE;KACF,CAAC;IACF,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;CACpC,CAAC"}
@@ -1,14 +1,23 @@
1
1
  import { z } from 'zod';
2
+ import { describeHttpRequest } from '../common.js';
3
+ const queryKeys = [];
2
4
  export const sendPlainTextMessage = {
3
5
  name: 'sendPlainTextMessage',
4
6
  title: 'Send a plain text message',
5
- description: 'Required scope: messages:write. Send plain text to the customer on a conversation.',
7
+ description: `Required scope: messages:write. ${describeHttpRequest('POST', '/v1/messages/plain-text', queryKeys)} Send plain text to the customer on a conversation.`,
6
8
  method: 'POST',
7
9
  path: '/v1/messages/plain-text',
8
- queryKeys: [],
10
+ queryKeys,
9
11
  inputSchema: z.object({
10
- conversationId: z.string(),
11
- text: z.string(),
12
+ conversationId: z
13
+ .string()
14
+ .min(1)
15
+ .describe('JSON body. The ID of the conversation.'),
16
+ text: z
17
+ .string()
18
+ .min(1)
19
+ .max(1000)
20
+ .describe('JSON body. Plain text to send to the customer. Maximum 1000 characters.'),
12
21
  }),
13
22
  annotations: { readOnlyHint: false, destructiveHint: false },
14
23
  };
@@ -1 +1 @@
1
- {"version":3,"file":"send-plain-text-message.js","sourceRoot":"","sources":["../../../src/tools/messages/send-plain-text-message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,CAAC,MAAM,oBAAoB,GAAiB;IAChD,IAAI,EAAE,sBAAsB;IAC5B,KAAK,EAAE,2BAA2B;IAClC,WAAW,EACT,oFAAoF;IACtF,MAAM,EAAE,MAAM;IACd,IAAI,EAAE,yBAAyB;IAC/B,SAAS,EAAE,EAAE;IACb,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE;QAC1B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;KACjB,CAAC;IACF,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE;CAC7D,CAAC"}
1
+ {"version":3,"file":"send-plain-text-message.js","sourceRoot":"","sources":["../../../src/tools/messages/send-plain-text-message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,mBAAmB,EAAqB,MAAM,cAAc,CAAC;AAEtE,MAAM,SAAS,GAAG,EAAW,CAAC;AAE9B,MAAM,CAAC,MAAM,oBAAoB,GAAiB;IAChD,IAAI,EAAE,sBAAsB;IAC5B,KAAK,EAAE,2BAA2B;IAClC,WAAW,EAAE,mCAAmC,mBAAmB,CAAC,MAAM,EAAE,yBAAyB,EAAE,SAAS,CAAC,qDAAqD;IACtK,MAAM,EAAE,MAAM;IACd,IAAI,EAAE,yBAAyB;IAC/B,SAAS;IACT,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,cAAc,EAAE,CAAC;aACd,MAAM,EAAE;aACR,GAAG,CAAC,CAAC,CAAC;aACN,QAAQ,CAAC,wCAAwC,CAAC;QACrD,IAAI,EAAE,CAAC;aACJ,MAAM,EAAE;aACR,GAAG,CAAC,CAAC,CAAC;aACN,GAAG,CAAC,IAAI,CAAC;aACT,QAAQ,CACP,yEAAyE,CAC1E;KACJ,CAAC;IACF,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE;CAC7D,CAAC"}
@@ -1,14 +1,19 @@
1
1
  import { z } from 'zod';
2
- import { expand, paginationFields, paginationQueryKeys, } from '../common.js';
2
+ import { describeHttpRequest, expand, paginationFields, paginationQueryKeys, } from '../common.js';
3
+ const queryKeys = ['userId', ...paginationQueryKeys];
3
4
  export const listTeams = {
4
5
  name: 'listTeams',
5
6
  title: 'List teams',
6
- description: 'Required scope: teams:read. Teams for the store. Pass userId to return only teams containing that user. Pass expand=users to return member { id, name }.',
7
+ description: `Required scope: teams:read. ${describeHttpRequest('GET', '/v1/teams', queryKeys)} Teams for the store. Pass userId to return only teams containing that user. Pass expand=users to return member { id, name }.`,
7
8
  method: 'GET',
8
9
  path: '/v1/teams',
9
- queryKeys: ['userId', ...paginationQueryKeys],
10
+ queryKeys,
10
11
  inputSchema: z.object({
11
- userId: z.string().uuid().optional(),
12
+ userId: z
13
+ .string()
14
+ .uuid()
15
+ .optional()
16
+ .describe('Query parameter. Return only teams containing this user (UUID).'),
12
17
  ...paginationFields,
13
18
  expand: expand('Pass users to return each member as { id, name } when that user exists on the store.'),
14
19
  }),
@@ -1 +1 @@
1
- {"version":3,"file":"list-teams.js","sourceRoot":"","sources":["../../../src/tools/teams/list-teams.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,MAAM,EACN,gBAAgB,EAChB,mBAAmB,GAEpB,MAAM,cAAc,CAAC;AAEtB,MAAM,CAAC,MAAM,SAAS,GAAiB;IACrC,IAAI,EAAE,WAAW;IACjB,KAAK,EAAE,YAAY;IACnB,WAAW,EACT,0JAA0J;IAC5J,MAAM,EAAE,KAAK;IACb,IAAI,EAAE,WAAW;IACjB,SAAS,EAAE,CAAC,QAAQ,EAAE,GAAG,mBAAmB,CAAC;IAC7C,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;QACpC,GAAG,gBAAgB;QACnB,MAAM,EAAE,MAAM,CACZ,sFAAsF,CACvF;KACF,CAAC;IACF,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;CACpC,CAAC"}
1
+ {"version":3,"file":"list-teams.js","sourceRoot":"","sources":["../../../src/tools/teams/list-teams.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,mBAAmB,EACnB,MAAM,EACN,gBAAgB,EAChB,mBAAmB,GAEpB,MAAM,cAAc,CAAC;AAEtB,MAAM,SAAS,GAAG,CAAC,QAAQ,EAAE,GAAG,mBAAmB,CAAC,CAAC;AAErD,MAAM,CAAC,MAAM,SAAS,GAAiB;IACrC,IAAI,EAAE,WAAW;IACjB,KAAK,EAAE,YAAY;IACnB,WAAW,EAAE,+BAA+B,mBAAmB,CAAC,KAAK,EAAE,WAAW,EAAE,SAAS,CAAC,+HAA+H;IAC7N,MAAM,EAAE,KAAK;IACb,IAAI,EAAE,WAAW;IACjB,SAAS;IACT,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,MAAM,EAAE,CAAC;aACN,MAAM,EAAE;aACR,IAAI,EAAE;aACN,QAAQ,EAAE;aACV,QAAQ,CACP,iEAAiE,CAClE;QACH,GAAG,gBAAgB;QACnB,MAAM,EAAE,MAAM,CACZ,sFAAsF,CACvF;KACF,CAAC;IACF,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;CACpC,CAAC"}
@@ -1,20 +1,38 @@
1
1
  import { z } from 'zod';
2
- import { expand } from '../common.js';
2
+ import { describeHttpRequest, expand } from '../common.js';
3
+ const queryKeys = ['expand'];
3
4
  export const closeTicket = {
4
5
  name: 'closeTicket',
5
6
  title: 'Close a ticket',
6
- description: 'Required scope: tickets:write. Close a ticket. You can record who handled it, conversion details, and ticket field values in the same request.',
7
+ description: `Required scope: tickets:write. ${describeHttpRequest('PATCH', '/v1/tickets/close', queryKeys)} Close a ticket. You can record who handled it, conversion details, and ticket field values in the same request.`,
7
8
  method: 'PATCH',
8
9
  path: '/v1/tickets/close',
9
- queryKeys: ['expand'],
10
+ queryKeys,
10
11
  inputSchema: z.object({
11
- expand: expand('Related objects to include on the closed ticket.'),
12
- ticketId: z.string(),
13
- handledBy: z.string().uuid().optional(),
14
- isConverted: z.boolean().optional(),
15
- totalRevenue: z.number().min(0).optional(),
16
- currency: z.string().optional(),
17
- ticketFields: z.record(z.string(), z.any()).optional(),
12
+ expand: expand('Related objects to include on the closed ticket: account, conversation, assignee, handledBy.'),
13
+ ticketId: z.string().min(1).describe('JSON body. The ID of the ticket.'),
14
+ handledBy: z
15
+ .string()
16
+ .uuid()
17
+ .optional()
18
+ .describe('JSON body. UUID of the user who handled the ticket.'),
19
+ isConverted: z
20
+ .boolean()
21
+ .optional()
22
+ .describe('JSON body. Whether the conversation led to a conversion.'),
23
+ totalRevenue: z
24
+ .number()
25
+ .min(0)
26
+ .optional()
27
+ .describe('JSON body. Conversion revenue recorded on close.'),
28
+ currency: z
29
+ .string()
30
+ .optional()
31
+ .describe('JSON body. Currency of the conversion revenue.'),
32
+ ticketFields: z
33
+ .record(z.string(), z.any())
34
+ .optional()
35
+ .describe('JSON body. Ticket field values to set when closing, keyed by field id. Must be a non-empty object when sent.'),
18
36
  }),
19
37
  annotations: { readOnlyHint: false, destructiveHint: true },
20
38
  };
@@ -1 +1 @@
1
- {"version":3,"file":"close-ticket.js","sourceRoot":"","sources":["../../../src/tools/tickets/close-ticket.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,MAAM,EAAqB,MAAM,cAAc,CAAC;AAEzD,MAAM,CAAC,MAAM,WAAW,GAAiB;IACvC,IAAI,EAAE,aAAa;IACnB,KAAK,EAAE,gBAAgB;IACvB,WAAW,EACT,gJAAgJ;IAClJ,MAAM,EAAE,OAAO;IACf,IAAI,EAAE,mBAAmB;IACzB,SAAS,EAAE,CAAC,QAAQ,CAAC;IACrB,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,MAAM,EAAE,MAAM,CAAC,kDAAkD,CAAC;QAClE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;QACpB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;QACvC,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;QACnC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;QAC1C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC/B,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE;KACvD,CAAC;IACF,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE;CAC5D,CAAC"}
1
+ {"version":3,"file":"close-ticket.js","sourceRoot":"","sources":["../../../src/tools/tickets/close-ticket.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,mBAAmB,EAAE,MAAM,EAAqB,MAAM,cAAc,CAAC;AAE9E,MAAM,SAAS,GAAG,CAAC,QAAQ,CAAU,CAAC;AAEtC,MAAM,CAAC,MAAM,WAAW,GAAiB;IACvC,IAAI,EAAE,aAAa;IACnB,KAAK,EAAE,gBAAgB;IACvB,WAAW,EAAE,kCAAkC,mBAAmB,CAAC,OAAO,EAAE,mBAAmB,EAAE,SAAS,CAAC,kHAAkH;IAC7N,MAAM,EAAE,OAAO;IACf,IAAI,EAAE,mBAAmB;IACzB,SAAS;IACT,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,MAAM,EAAE,MAAM,CACZ,8FAA8F,CAC/F;QACD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,kCAAkC,CAAC;QACxE,SAAS,EAAE,CAAC;aACT,MAAM,EAAE;aACR,IAAI,EAAE;aACN,QAAQ,EAAE;aACV,QAAQ,CAAC,qDAAqD,CAAC;QAClE,WAAW,EAAE,CAAC;aACX,OAAO,EAAE;aACT,QAAQ,EAAE;aACV,QAAQ,CAAC,0DAA0D,CAAC;QACvE,YAAY,EAAE,CAAC;aACZ,MAAM,EAAE;aACR,GAAG,CAAC,CAAC,CAAC;aACN,QAAQ,EAAE;aACV,QAAQ,CAAC,kDAAkD,CAAC;QAC/D,QAAQ,EAAE,CAAC;aACR,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,gDAAgD,CAAC;QAC7D,YAAY,EAAE,CAAC;aACZ,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC;aAC3B,QAAQ,EAAE;aACV,QAAQ,CACP,8GAA8G,CAC/G;KACJ,CAAC;IACF,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE;CAC5D,CAAC"}
@@ -1,15 +1,19 @@
1
1
  import { z } from 'zod';
2
- import { expand } from '../common.js';
2
+ import { describeHttpRequest, expand } from '../common.js';
3
+ const queryKeys = ['ticketId', 'expand'];
3
4
  export const getTicketById = {
4
5
  name: 'getTicketById',
5
6
  title: 'Get a ticket by ID',
6
- description: 'Required scope: tickets:read. Fetch a single ticket. Pass expand=account,conversation,assignee,handledBy to replace those ids with names.',
7
+ description: `Required scope: tickets:read. ${describeHttpRequest('GET', '/v1/tickets', queryKeys)} Fetch a single ticket. Pass expand=account,conversation,assignee,handledBy to replace those ids with names.`,
7
8
  method: 'GET',
8
9
  path: '/v1/tickets',
9
- queryKeys: ['ticketId', 'expand'],
10
+ queryKeys,
10
11
  inputSchema: z.object({
11
- ticketId: z.string().describe('The ID of the ticket'),
12
- expand: expand('Comma-separated related objects to include.'),
12
+ ticketId: z
13
+ .string()
14
+ .min(1)
15
+ .describe('Query parameter. The ID of the ticket.'),
16
+ expand: expand('Comma-separated related objects to include: account, conversation, assignee, handledBy.'),
13
17
  }),
14
18
  annotations: { readOnlyHint: true },
15
19
  };
@@ -1 +1 @@
1
- {"version":3,"file":"get-ticket-by-id.js","sourceRoot":"","sources":["../../../src/tools/tickets/get-ticket-by-id.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,MAAM,EAAqB,MAAM,cAAc,CAAC;AAEzD,MAAM,CAAC,MAAM,aAAa,GAAiB;IACzC,IAAI,EAAE,eAAe;IACrB,KAAK,EAAE,oBAAoB;IAC3B,WAAW,EACT,2IAA2I;IAC7I,MAAM,EAAE,KAAK;IACb,IAAI,EAAE,aAAa;IACnB,SAAS,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC;IACjC,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;QACrD,MAAM,EAAE,MAAM,CAAC,6CAA6C,CAAC;KAC9D,CAAC;IACF,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;CACpC,CAAC"}
1
+ {"version":3,"file":"get-ticket-by-id.js","sourceRoot":"","sources":["../../../src/tools/tickets/get-ticket-by-id.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,mBAAmB,EAAE,MAAM,EAAqB,MAAM,cAAc,CAAC;AAE9E,MAAM,SAAS,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAU,CAAC;AAElD,MAAM,CAAC,MAAM,aAAa,GAAiB;IACzC,IAAI,EAAE,eAAe;IACrB,KAAK,EAAE,oBAAoB;IAC3B,WAAW,EAAE,iCAAiC,mBAAmB,CAAC,KAAK,EAAE,aAAa,EAAE,SAAS,CAAC,8GAA8G;IAChN,MAAM,EAAE,KAAK;IACb,IAAI,EAAE,aAAa;IACnB,SAAS;IACT,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,QAAQ,EAAE,CAAC;aACR,MAAM,EAAE;aACR,GAAG,CAAC,CAAC,CAAC;aACN,QAAQ,CAAC,wCAAwC,CAAC;QACrD,MAAM,EAAE,MAAM,CACZ,yFAAyF,CAC1F;KACF,CAAC;IACF,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;CACpC,CAAC"}
@@ -1,12 +1,13 @@
1
1
  import { z } from 'zod';
2
- import { expand } from '../common.js';
2
+ import { describeHttpRequest, expand } from '../common.js';
3
+ const queryKeys = ['expand'];
3
4
  export const listTicketFields = {
4
5
  name: 'listTicketFields',
5
6
  title: 'List ticket fields',
6
- description: 'Required scope: tickets:read. Full catalog of custom ticket field definitions. Pass expand=accounts to include the accounts each field applies to.',
7
+ description: `Required scope: tickets:read. ${describeHttpRequest('GET', '/v1/tickets/fields', queryKeys)} Full catalog of custom ticket field definitions, in display order. Not paginated. Pass expand=accounts to include the accounts each field applies to.`,
7
8
  method: 'GET',
8
9
  path: '/v1/tickets/fields',
9
- queryKeys: ['expand'],
10
+ queryKeys,
10
11
  inputSchema: z.object({
11
12
  expand: expand('Pass accounts to include the accounts each field applies to.'),
12
13
  }),
@@ -1 +1 @@
1
- {"version":3,"file":"list-ticket-fields.js","sourceRoot":"","sources":["../../../src/tools/tickets/list-ticket-fields.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,MAAM,EAAqB,MAAM,cAAc,CAAC;AAEzD,MAAM,CAAC,MAAM,gBAAgB,GAAiB;IAC5C,IAAI,EAAE,kBAAkB;IACxB,KAAK,EAAE,oBAAoB;IAC3B,WAAW,EACT,oJAAoJ;IACtJ,MAAM,EAAE,KAAK;IACb,IAAI,EAAE,oBAAoB;IAC1B,SAAS,EAAE,CAAC,QAAQ,CAAC;IACrB,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,MAAM,EAAE,MAAM,CACZ,8DAA8D,CAC/D;KACF,CAAC;IACF,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;CACpC,CAAC"}
1
+ {"version":3,"file":"list-ticket-fields.js","sourceRoot":"","sources":["../../../src/tools/tickets/list-ticket-fields.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,mBAAmB,EAAE,MAAM,EAAqB,MAAM,cAAc,CAAC;AAE9E,MAAM,SAAS,GAAG,CAAC,QAAQ,CAAU,CAAC;AAEtC,MAAM,CAAC,MAAM,gBAAgB,GAAiB;IAC5C,IAAI,EAAE,kBAAkB;IACxB,KAAK,EAAE,oBAAoB;IAC3B,WAAW,EAAE,iCAAiC,mBAAmB,CAAC,KAAK,EAAE,oBAAoB,EAAE,SAAS,CAAC,wJAAwJ;IACjQ,MAAM,EAAE,KAAK;IACb,IAAI,EAAE,oBAAoB;IAC1B,SAAS;IACT,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,MAAM,EAAE,MAAM,CACZ,8DAA8D,CAC/D;KACF,CAAC;IACF,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;CACpC,CAAC"}
@@ -1,9 +1,10 @@
1
1
  import { z } from 'zod';
2
- import { expand, paginationFields, paginationQueryKeys, } from '../common.js';
2
+ import { describeHttpRequest, expand, paginationFields, paginationQueryKeys, } from '../common.js';
3
+ const TICKET_FILTER_ARRAY_MAX = 20;
3
4
  export const listTickets = {
4
5
  name: 'listTickets',
5
6
  title: 'List tickets',
6
- description: 'Required scope: tickets:read. Page through tickets, newest message first. Empty body returns open, non-spam tickets that are not snoozed. When conversationId is set and statuses is omitted, open and closed tickets for that conversation are returned. Do not send assigneeUserIds together with unassigned: true.',
7
+ description: `Required scope: tickets:read. ${describeHttpRequest('POST', '/v1/tickets/list', paginationQueryKeys)} Page through tickets, newest message first. An omitted or empty JSON body returns open, non-spam tickets that are not snoozed. When conversationId is set and statuses is omitted, open and closed tickets for that conversation are returned. Do not send assigneeUserIds together with unassigned: true.`,
7
8
  method: 'POST',
8
9
  path: '/v1/tickets/list',
9
10
  queryKeys: paginationQueryKeys,
@@ -13,11 +14,24 @@ export const listTickets = {
13
14
  statuses: z
14
15
  .array(z.enum(['open', 'closed']))
15
16
  .optional()
16
- .describe('Omit to return open tickets only. When conversationId is set, omitting statuses returns every status for that conversation.'),
17
- conversationId: z.string().optional(),
18
- accountIds: z.array(z.string()).optional(),
19
- assigneeUserIds: z.array(z.string()).optional(),
20
- handledByUserIds: z.array(z.string()).optional(),
17
+ .describe('JSON body. Open and/or closed tickets. Omit to return open tickets only. When conversationId is set, omitting statuses returns every status for that conversation.'),
18
+ conversationId: z
19
+ .string()
20
+ .min(1)
21
+ .optional()
22
+ .describe('JSON body. Restrict results to tickets belonging to this conversation.'),
23
+ accountIds: z
24
+ .array(z.string())
25
+ .optional()
26
+ .describe('JSON body. Restrict results to these account IDs.'),
27
+ assigneeUserIds: z
28
+ .array(z.string())
29
+ .optional()
30
+ .describe('JSON body. Restrict results to these assignee user IDs. Cannot be combined with unassigned: true.'),
31
+ handledByUserIds: z
32
+ .array(z.string())
33
+ .optional()
34
+ .describe('JSON body. Restrict results to tickets handled by these user IDs.'),
21
35
  resolutionStatuses: z
22
36
  .array(z.enum([
23
37
  'none',
@@ -26,10 +40,20 @@ export const listTickets = {
26
40
  'ai_full_resolution',
27
41
  'ai_partial_resolution',
28
42
  ]))
29
- .optional(),
30
- unassigned: z.boolean().optional(),
31
- isFollowUp: z.boolean().optional(),
32
- isSpam: z.boolean().optional(),
43
+ .optional()
44
+ .describe('JSON body. Restrict results to these resolution statuses.'),
45
+ unassigned: z
46
+ .boolean()
47
+ .optional()
48
+ .describe('JSON body. When true, only tickets with no assignee. Cannot be combined with assigneeUserIds.'),
49
+ isFollowUp: z
50
+ .boolean()
51
+ .optional()
52
+ .describe('JSON body. Filter by follow-up flag.'),
53
+ isSpam: z
54
+ .boolean()
55
+ .optional()
56
+ .describe('JSON body. Filter by spam flag. Defaults to non-spam tickets when omitted.'),
33
57
  advancedFilters: z
34
58
  .object({
35
59
  labels: z
@@ -39,12 +63,15 @@ export const listTickets = {
39
63
  'contains_all',
40
64
  'does_not_contain_any',
41
65
  ]),
42
- labelIds: z.array(z.string()).min(1).max(10),
66
+ labelIds: z.array(z.string()).min(1).max(TICKET_FILTER_ARRAY_MAX),
43
67
  })
44
- .optional(),
68
+ .optional()
69
+ .describe('JSON body. Filter tickets by conversation labels.'),
45
70
  ticketFields: z
46
71
  .array(z.object({
47
- ticketFieldId: z.string(),
72
+ ticketFieldId: z
73
+ .string()
74
+ .describe('Custom field id, or a system key: aiCsat, aiSummary, salesRevenue, isConverted.'),
48
75
  operator: z.enum([
49
76
  'equal',
50
77
  'not_equal',
@@ -61,27 +88,48 @@ export const listTickets = {
61
88
  'less_than_or_equal',
62
89
  'between',
63
90
  ]),
64
- value: z.any().optional(),
65
- min: z.any().optional(),
66
- max: z.any().optional(),
91
+ value: z
92
+ .any()
93
+ .optional()
94
+ .describe('Required except for between. A single value, or an array for is_one_of / contains_* operators.'),
95
+ min: z
96
+ .any()
97
+ .optional()
98
+ .describe('Lower bound for between. Required with max when operator is between.'),
99
+ max: z
100
+ .any()
101
+ .optional()
102
+ .describe('Upper bound for between. Required with min when operator is between.'),
67
103
  }))
68
- .max(10)
69
- .optional(),
104
+ .optional()
105
+ .describe('JSON body. Filter on custom ticket fields or system fields.'),
70
106
  waitingForReply: z
71
107
  .object({
72
108
  value: z.number().int().min(1).max(43200),
73
109
  })
74
- .optional(),
110
+ .optional()
111
+ .describe('JSON body. Tickets where the buyer has been waiting at least this many minutes (1–43200).'),
75
112
  openedAt: z
76
113
  .object({
77
114
  operator: z.enum(['between', 'greater_than', 'less_than']),
78
- value: z.string().optional(),
79
- min: z.string().optional(),
80
- max: z.string().optional(),
115
+ value: z
116
+ .string()
117
+ .optional()
118
+ .describe('ISO 8601 date-time. Used with greater_than and less_than.'),
119
+ min: z
120
+ .string()
121
+ .optional()
122
+ .describe('ISO 8601 date-time. Lower bound when operator is between.'),
123
+ max: z
124
+ .string()
125
+ .optional()
126
+ .describe('ISO 8601 date-time. Upper bound when operator is between.'),
81
127
  })
82
- .optional(),
128
+ .optional()
129
+ .describe('JSON body. Filter by ticket opened-at time.'),
83
130
  })
84
- .optional(),
131
+ .optional()
132
+ .describe('JSON body. Optional extra filters on labels, ticket fields, waiting time, and opened-at.'),
85
133
  }),
86
134
  annotations: { readOnlyHint: true },
87
135
  };
@@ -1 +1 @@
1
- {"version":3,"file":"list-tickets.js","sourceRoot":"","sources":["../../../src/tools/tickets/list-tickets.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"list-tickets.js","sourceRoot":"","sources":["../../../src/tools/tickets/list-tickets.ts"],"names":[],"mappings":"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"}
@@ -1,21 +1,28 @@
1
1
  import { z } from 'zod';
2
- import { expand } from '../common.js';
2
+ import { describeHttpRequest, expand } from '../common.js';
3
+ const queryKeys = ['expand'];
3
4
  export const updateTicketField = {
4
5
  name: 'updateTicketField',
5
6
  title: 'Update a ticket field value',
6
- description: 'Required scope: tickets:write. Set or clear one field on a ticket. Send null as newValue to unset. Send ticketFieldsUpdatedAt from the last read; a mismatch returns 409.',
7
+ description: `Required scope: tickets:write. ${describeHttpRequest('PATCH', '/v1/tickets/fields', queryKeys)} Set or clear one field on a ticket. Send null as newValue to unset. Send ticketFieldsUpdatedAt from the last read; a mismatch returns 409.`,
7
8
  method: 'PATCH',
8
9
  path: '/v1/tickets/fields',
9
- queryKeys: ['expand'],
10
+ queryKeys,
10
11
  inputSchema: z.object({
11
- expand: expand('Related objects to include on the updated ticket.'),
12
- ticketId: z.string(),
13
- ticketFieldId: z.string(),
12
+ expand: expand('Related objects to include on the updated ticket: account, conversation, assignee, handledBy.'),
13
+ ticketId: z.string().min(1).describe('JSON body. The ID of the ticket.'),
14
+ ticketFieldId: z
15
+ .string()
16
+ .min(1)
17
+ .describe('JSON body. The ID of the ticket field.'),
14
18
  ticketFieldsUpdatedAt: z
15
19
  .string()
16
20
  .optional()
17
- .describe('Omit if the ticket has never had a field update.'),
18
- newValue: z.any().nullable(),
21
+ .describe('JSON body. ISO 8601 date-time from the last read. Omit if the ticket has never had a field update.'),
22
+ newValue: z
23
+ .any()
24
+ .nullable()
25
+ .describe('JSON body. The new field value. Send null to unset.'),
19
26
  }),
20
27
  annotations: { readOnlyHint: false, destructiveHint: false },
21
28
  };
@@ -1 +1 @@
1
- {"version":3,"file":"update-ticket-field.js","sourceRoot":"","sources":["../../../src/tools/tickets/update-ticket-field.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,MAAM,EAAqB,MAAM,cAAc,CAAC;AAEzD,MAAM,CAAC,MAAM,iBAAiB,GAAiB;IAC7C,IAAI,EAAE,mBAAmB;IACzB,KAAK,EAAE,6BAA6B;IACpC,WAAW,EACT,2KAA2K;IAC7K,MAAM,EAAE,OAAO;IACf,IAAI,EAAE,oBAAoB;IAC1B,SAAS,EAAE,CAAC,QAAQ,CAAC;IACrB,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,MAAM,EAAE,MAAM,CAAC,mDAAmD,CAAC;QACnE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;QACpB,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;QACzB,qBAAqB,EAAE,CAAC;aACrB,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,kDAAkD,CAAC;QAC/D,QAAQ,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;KAC7B,CAAC;IACF,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE;CAC7D,CAAC"}
1
+ {"version":3,"file":"update-ticket-field.js","sourceRoot":"","sources":["../../../src/tools/tickets/update-ticket-field.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,mBAAmB,EAAE,MAAM,EAAqB,MAAM,cAAc,CAAC;AAE9E,MAAM,SAAS,GAAG,CAAC,QAAQ,CAAU,CAAC;AAEtC,MAAM,CAAC,MAAM,iBAAiB,GAAiB;IAC7C,IAAI,EAAE,mBAAmB;IACzB,KAAK,EAAE,6BAA6B;IACpC,WAAW,EAAE,kCAAkC,mBAAmB,CAAC,OAAO,EAAE,oBAAoB,EAAE,SAAS,CAAC,6IAA6I;IACzP,MAAM,EAAE,OAAO;IACf,IAAI,EAAE,oBAAoB;IAC1B,SAAS;IACT,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,MAAM,EAAE,MAAM,CACZ,+FAA+F,CAChG;QACD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,kCAAkC,CAAC;QACxE,aAAa,EAAE,CAAC;aACb,MAAM,EAAE;aACR,GAAG,CAAC,CAAC,CAAC;aACN,QAAQ,CAAC,wCAAwC,CAAC;QACrD,qBAAqB,EAAE,CAAC;aACrB,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CACP,oGAAoG,CACrG;QACH,QAAQ,EAAE,CAAC;aACR,GAAG,EAAE;aACL,QAAQ,EAAE;aACV,QAAQ,CAAC,qDAAqD,CAAC;KACnE,CAAC;IACF,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE;CAC7D,CAAC"}
@@ -1,15 +1,20 @@
1
1
  import { z } from 'zod';
2
- import { expand } from '../common.js';
2
+ import { describeHttpRequest, expand } from '../common.js';
3
+ const queryKeys = ['userId', 'expand'];
3
4
  export const listUsers = {
4
5
  name: 'listUsers',
5
6
  title: 'List users',
6
- description: 'Required scope: users:read. Full list of users on the store. Optionally filter to one userId. Pass expand=role to include { id, name } for the role.',
7
+ description: `Required scope: users:read. ${describeHttpRequest('GET', '/v1/users', queryKeys)} Full list of users on the store. Not paginated. Optionally filter to one userId (UUID). Pass expand=role to include { id, name } for the role.`,
7
8
  method: 'GET',
8
9
  path: '/v1/users',
9
- queryKeys: ['userId', 'expand'],
10
+ queryKeys,
10
11
  inputSchema: z.object({
11
- userId: z.string().uuid().optional(),
12
- expand: expand('Pass role to include { id, name } and omit roleId.'),
12
+ userId: z
13
+ .string()
14
+ .uuid()
15
+ .optional()
16
+ .describe('Query parameter. Restrict to this user (UUID).'),
17
+ expand: expand('Pass role to include { id, name } for the role. Without expand, the response keeps roleId.'),
13
18
  }),
14
19
  annotations: { readOnlyHint: true },
15
20
  };
@@ -1 +1 @@
1
- {"version":3,"file":"list-users.js","sourceRoot":"","sources":["../../../src/tools/users/list-users.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,MAAM,EAAqB,MAAM,cAAc,CAAC;AAEzD,MAAM,CAAC,MAAM,SAAS,GAAiB;IACrC,IAAI,EAAE,WAAW;IACjB,KAAK,EAAE,YAAY;IACnB,WAAW,EACT,sJAAsJ;IACxJ,MAAM,EAAE,KAAK;IACb,IAAI,EAAE,WAAW;IACjB,SAAS,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC/B,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;QACpC,MAAM,EAAE,MAAM,CAAC,oDAAoD,CAAC;KACrE,CAAC;IACF,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;CACpC,CAAC"}
1
+ {"version":3,"file":"list-users.js","sourceRoot":"","sources":["../../../src/tools/users/list-users.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,mBAAmB,EAAE,MAAM,EAAqB,MAAM,cAAc,CAAC;AAE9E,MAAM,SAAS,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAU,CAAC;AAEhD,MAAM,CAAC,MAAM,SAAS,GAAiB;IACrC,IAAI,EAAE,WAAW;IACjB,KAAK,EAAE,YAAY;IACnB,WAAW,EAAE,+BAA+B,mBAAmB,CAAC,KAAK,EAAE,WAAW,EAAE,SAAS,CAAC,iJAAiJ;IAC/O,MAAM,EAAE,KAAK;IACb,IAAI,EAAE,WAAW;IACjB,SAAS;IACT,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,MAAM,EAAE,CAAC;aACN,MAAM,EAAE;aACR,IAAI,EAAE;aACN,QAAQ,EAAE;aACV,QAAQ,CAAC,gDAAgD,CAAC;QAC7D,MAAM,EAAE,MAAM,CACZ,4FAA4F,CAC7F;KACF,CAAC;IACF,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;CACpC,CAAC"}
package/package.json CHANGED
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "name": "@zaapi/open-api-mcp",
3
- "version": "1.0.0",
3
+ "version": "1.1.0",
4
4
  "description": "MCP server for the Zaapi Open API",
5
- "homepage": "https://github.com/Zaapi/zaapi-mcp-server#readme",
5
+ "homepage": "https://github.com/Zaapi/zaapi-open-api-mcp#readme",
6
6
  "bugs": {
7
- "url": "https://github.com/Zaapi/zaapi-mcp-server/issues"
7
+ "url": "https://github.com/Zaapi/zaapi-open-api-mcp/issues"
8
8
  },
9
9
  "repository": {
10
10
  "type": "git",
11
- "url": "git+https://github.com/Zaapi/zaapi-mcp-server.git"
11
+ "url": "git+https://github.com/Zaapi/zaapi-open-api-mcp.git"
12
12
  },
13
13
  "license": "ISC",
14
14
  "author": "",
@@ -1,21 +0,0 @@
1
- import { z } from 'zod';
2
- import { expand } from './common.js';
3
- export const closeTicket = {
4
- name: 'closeTicket',
5
- title: 'Close a ticket',
6
- description: 'Required scope: tickets:write. Close a ticket. You can record who handled it, conversion details, and ticket field values in the same request.',
7
- method: 'PATCH',
8
- path: '/v1/tickets/close',
9
- queryKeys: ['expand'],
10
- inputSchema: z.object({
11
- expand: expand('Related objects to include on the closed ticket.'),
12
- ticketId: z.string(),
13
- handledBy: z.string().uuid().optional(),
14
- isConverted: z.boolean().optional(),
15
- totalRevenue: z.number().min(0).optional(),
16
- currency: z.string().optional(),
17
- ticketFields: z.record(z.string(), z.any()).optional(),
18
- }),
19
- annotations: { readOnlyHint: false, destructiveHint: true },
20
- };
21
- //# sourceMappingURL=close-ticket.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"close-ticket.js","sourceRoot":"","sources":["../../src/tools/close-ticket.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,MAAM,EAAqB,MAAM,aAAa,CAAC;AAExD,MAAM,CAAC,MAAM,WAAW,GAAiB;IACvC,IAAI,EAAE,aAAa;IACnB,KAAK,EAAE,gBAAgB;IACvB,WAAW,EACT,gJAAgJ;IAClJ,MAAM,EAAE,OAAO;IACf,IAAI,EAAE,mBAAmB;IACzB,SAAS,EAAE,CAAC,QAAQ,CAAC;IACrB,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,MAAM,EAAE,MAAM,CAAC,kDAAkD,CAAC;QAClE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;QACpB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;QACvC,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;QACnC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;QAC1C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC/B,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE;KACvD,CAAC;IACF,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE;CAC5D,CAAC"}
@@ -1,21 +0,0 @@
1
- import { z } from 'zod';
2
- export const createContact = {
3
- name: 'createContact',
4
- title: 'Create a contact',
5
- description: 'Required scope: contacts:write. Create a contact. A contact whose email or phone already exists is rejected with 409.',
6
- method: 'POST',
7
- path: '/v1/contacts',
8
- queryKeys: [],
9
- inputSchema: z.object({
10
- firstName: z.string().max(50),
11
- lastName: z.string().max(50).optional(),
12
- email: z.string().email().max(100).optional(),
13
- phone: z
14
- .string()
15
- .max(15)
16
- .optional()
17
- .describe('Primary phone number in E.164 format.'),
18
- }),
19
- annotations: { readOnlyHint: false, destructiveHint: false },
20
- };
21
- //# sourceMappingURL=create-contact.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"create-contact.js","sourceRoot":"","sources":["../../src/tools/create-contact.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,CAAC,MAAM,aAAa,GAAiB;IACzC,IAAI,EAAE,eAAe;IACrB,KAAK,EAAE,kBAAkB;IACzB,WAAW,EACT,uHAAuH;IACzH,MAAM,EAAE,MAAM;IACd,IAAI,EAAE,cAAc;IACpB,SAAS,EAAE,EAAE;IACb,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;QACvC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;QAC7C,KAAK,EAAE,CAAC;aACL,MAAM,EAAE;aACR,GAAG,CAAC,EAAE,CAAC;aACP,QAAQ,EAAE;aACV,QAAQ,CAAC,uCAAuC,CAAC;KACrD,CAAC;IACF,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE;CAC7D,CAAC"}
@@ -1,15 +0,0 @@
1
- import { z } from 'zod';
2
- export const createInternalComment = {
3
- name: 'createInternalComment',
4
- title: 'Add an internal comment',
5
- description: 'Required scope: messages:write. Add a seller-private note. Not sent to the customer.',
6
- method: 'POST',
7
- path: '/v1/messages/internal-comments',
8
- queryKeys: [],
9
- inputSchema: z.object({
10
- conversationId: z.string(),
11
- text: z.string(),
12
- }),
13
- annotations: { readOnlyHint: false, destructiveHint: false },
14
- };
15
- //# sourceMappingURL=create-internal-comment.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"create-internal-comment.js","sourceRoot":"","sources":["../../src/tools/create-internal-comment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,CAAC,MAAM,qBAAqB,GAAiB;IACjD,IAAI,EAAE,uBAAuB;IAC7B,KAAK,EAAE,yBAAyB;IAChC,WAAW,EACT,sFAAsF;IACxF,MAAM,EAAE,MAAM;IACd,IAAI,EAAE,gCAAgC;IACtC,SAAS,EAAE,EAAE;IACb,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE;QAC1B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;KACjB,CAAC;IACF,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE;CAC7D,CAAC"}
@@ -1,18 +0,0 @@
1
- import { z } from 'zod';
2
- import { expand, paginationFields, paginationQueryKeys, } from './common.js';
3
- export const filterConversations = {
4
- name: 'filterConversations',
5
- title: 'Filter conversations by ID or contact',
6
- description: 'Required scope: conversations:read. Send conversationId and/or contactId — at least one is required. Paginate with pageSize and cursor. Pass expand=account to replace accountId.',
7
- method: 'GET',
8
- path: '/v1/conversations',
9
- queryKeys: ['conversationId', 'contactId', ...paginationQueryKeys],
10
- inputSchema: z.object({
11
- conversationId: z.string().optional(),
12
- contactId: z.string().optional(),
13
- ...paginationFields,
14
- expand: expand('Pass account to replace accountId with { id, name, channel }.'),
15
- }),
16
- annotations: { readOnlyHint: true },
17
- };
18
- //# sourceMappingURL=filter-conversations.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"filter-conversations.js","sourceRoot":"","sources":["../../src/tools/filter-conversations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,MAAM,EACN,gBAAgB,EAChB,mBAAmB,GAEpB,MAAM,aAAa,CAAC;AAErB,MAAM,CAAC,MAAM,mBAAmB,GAAiB;IAC/C,IAAI,EAAE,qBAAqB;IAC3B,KAAK,EAAE,uCAAuC;IAC9C,WAAW,EACT,mLAAmL;IACrL,MAAM,EAAE,KAAK;IACb,IAAI,EAAE,mBAAmB;IACzB,SAAS,EAAE,CAAC,gBAAgB,EAAE,WAAW,EAAE,GAAG,mBAAmB,CAAC;IAClE,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACrC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAChC,GAAG,gBAAgB;QACnB,MAAM,EAAE,MAAM,CACZ,+DAA+D,CAChE;KACF,CAAC;IACF,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;CACpC,CAAC"}
@@ -1,14 +0,0 @@
1
- import { z } from 'zod';
2
- export const getContactById = {
3
- name: 'getContactById',
4
- title: 'Get a contact by ID',
5
- description: 'Required scope: contacts:read. Fetch a single contact, including custom field values.',
6
- method: 'GET',
7
- path: '/v1/contacts',
8
- queryKeys: ['contactId'],
9
- inputSchema: z.object({
10
- contactId: z.string(),
11
- }),
12
- annotations: { readOnlyHint: true },
13
- };
14
- //# sourceMappingURL=get-contact-by-id.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"get-contact-by-id.js","sourceRoot":"","sources":["../../src/tools/get-contact-by-id.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,CAAC,MAAM,cAAc,GAAiB;IAC1C,IAAI,EAAE,gBAAgB;IACtB,KAAK,EAAE,qBAAqB;IAC5B,WAAW,EACT,uFAAuF;IACzF,MAAM,EAAE,KAAK;IACb,IAAI,EAAE,cAAc;IACpB,SAAS,EAAE,CAAC,WAAW,CAAC;IACxB,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;KACtB,CAAC;IACF,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;CACpC,CAAC"}