@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
@@ -0,0 +1,32 @@
1
+ import { z } from 'zod';
2
+ import { describeHttpRequest, paginationFields, } from '../common.js';
3
+ const queryKeys = ['channel', 'pageSize', 'cursor'];
4
+ export const listAccounts = {
5
+ name: 'listAccounts',
6
+ title: 'List accounts',
7
+ description: `Required scope: accounts:read. ${describeHttpRequest('GET', '/v1/accounts', queryKeys)} Page through the channel accounts connected to the store. Only active accounts are returned. Filter to a single channel when needed. Each account includes a status of healthy, unhealthy, or disconnected.`,
8
+ method: 'GET',
9
+ path: '/v1/accounts',
10
+ queryKeys,
11
+ inputSchema: z.object({
12
+ channel: z
13
+ .enum([
14
+ 'line',
15
+ 'instagram',
16
+ 'facebook',
17
+ 'lazada',
18
+ 'shopee',
19
+ 'tiktok',
20
+ 'drunken_lullabies',
21
+ 'whatsapp',
22
+ 'widget',
23
+ 'gmail',
24
+ 'outlook',
25
+ ])
26
+ .optional()
27
+ .describe('Query parameter. Return only the accounts on this channel.'),
28
+ ...paginationFields,
29
+ }),
30
+ annotations: { readOnlyHint: true },
31
+ };
32
+ //# sourceMappingURL=list-accounts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-accounts.js","sourceRoot":"","sources":["../../../src/tools/accounts/list-accounts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,mBAAmB,EACnB,gBAAgB,GAEjB,MAAM,cAAc,CAAC;AAEtB,MAAM,SAAS,GAAG,CAAC,SAAS,EAAE,UAAU,EAAE,QAAQ,CAAU,CAAC;AAE7D,MAAM,CAAC,MAAM,YAAY,GAAiB;IACxC,IAAI,EAAE,cAAc;IACpB,KAAK,EAAE,eAAe;IACtB,WAAW,EAAE,kCAAkC,mBAAmB,CAAC,KAAK,EAAE,cAAc,EAAE,SAAS,CAAC,8MAA8M;IAClT,MAAM,EAAE,KAAK;IACb,IAAI,EAAE,cAAc;IACpB,SAAS;IACT,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,OAAO,EAAE,CAAC;aACP,IAAI,CAAC;YACJ,MAAM;YACN,WAAW;YACX,UAAU;YACV,QAAQ;YACR,QAAQ;YACR,QAAQ;YACR,mBAAmB;YACnB,UAAU;YACV,QAAQ;YACR,OAAO;YACP,SAAS;SACV,CAAC;aACD,QAAQ,EAAE;aACV,QAAQ,CAAC,4DAA4D,CAAC;QACzE,GAAG,gBAAgB;KACpB,CAAC;IACF,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;CACpC,CAAC"}
@@ -1,26 +1,37 @@
1
1
  import { z } from 'zod';
2
+ export function describeHttpRequest(method, path, queryKeys) {
3
+ const query = queryKeys.length > 0
4
+ ? `Query parameters: ${queryKeys.join(', ')}.`
5
+ : 'There are no query parameters.';
6
+ const body = method === 'GET'
7
+ ? 'There is no JSON body.'
8
+ : queryKeys.length === 0
9
+ ? 'All arguments are sent as a JSON body.'
10
+ : 'All other arguments are sent as a JSON body.';
11
+ return `${method} ${path}. ${query} ${body}`;
12
+ }
2
13
  export const pageSize = z
3
14
  .number()
4
15
  .int()
5
16
  .min(1)
6
17
  .max(50)
7
18
  .optional()
8
- .describe('Items per page. Defaults to 20. Maximum 50.');
19
+ .describe('Query parameter. Items per page. Defaults to 20. Maximum 50.');
9
20
  export const messagePageSize = z
10
21
  .number()
11
22
  .int()
12
23
  .min(1)
13
24
  .max(15)
14
25
  .optional()
15
- .describe('Items per page. Maximum 15 on this endpoint.');
26
+ .describe('Query parameter. Items per page. Defaults to 15. Maximum 15.');
16
27
  export const cursor = z
17
28
  .string()
18
29
  .optional()
19
- .describe('Opaque token from the previous page x-pagination-next-cursor header.');
30
+ .describe('Query parameter. Opaque token from the previous page x-pagination-next-cursor header.');
20
31
  export const expand = (description) => z
21
32
  .union([z.string(), z.array(z.string())])
22
33
  .optional()
23
- .describe(description);
34
+ .describe(`Query parameter. ${description}`);
24
35
  export const paginationQueryKeys = ['pageSize', 'cursor', 'expand'];
25
36
  export const paginationFields = {
26
37
  pageSize,
@@ -1 +1 @@
1
- {"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/tools/common.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAkBxB,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC;KACtB,MAAM,EAAE;KACR,GAAG,EAAE;KACL,GAAG,CAAC,CAAC,CAAC;KACN,GAAG,CAAC,EAAE,CAAC;KACP,QAAQ,EAAE;KACV,QAAQ,CAAC,6CAA6C,CAAC,CAAC;AAE3D,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC;KAC7B,MAAM,EAAE;KACR,GAAG,EAAE;KACL,GAAG,CAAC,CAAC,CAAC;KACN,GAAG,CAAC,EAAE,CAAC;KACP,QAAQ,EAAE;KACV,QAAQ,CAAC,8CAA8C,CAAC,CAAC;AAE5D,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC;KACpB,MAAM,EAAE;KACR,QAAQ,EAAE;KACV,QAAQ,CACP,sEAAsE,CACvE,CAAC;AAEJ,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,WAAmB,EAAE,EAAE,CAC5C,CAAC;KACE,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;KACxC,QAAQ,EAAE;KACV,QAAQ,CAAC,WAAW,CAAC,CAAC;AAE3B,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,UAAU,EAAE,QAAQ,EAAE,QAAQ,CAAU,CAAC;AAE7E,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,QAAQ;IACR,MAAM;CACP,CAAC"}
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/tools/common.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAkBxB,MAAM,UAAU,mBAAmB,CACjC,MAAkB,EAClB,IAAY,EACZ,SAA4B;IAE5B,MAAM,KAAK,GACT,SAAS,CAAC,MAAM,GAAG,CAAC;QAClB,CAAC,CAAC,qBAAqB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;QAC9C,CAAC,CAAC,gCAAgC,CAAC;IACvC,MAAM,IAAI,GACR,MAAM,KAAK,KAAK;QACd,CAAC,CAAC,wBAAwB;QAC1B,CAAC,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC;YACtB,CAAC,CAAC,wCAAwC;YAC1C,CAAC,CAAC,8CAA8C,CAAC;IACvD,OAAO,GAAG,MAAM,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,EAAE,CAAC;AAC/C,CAAC;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC;KACtB,MAAM,EAAE;KACR,GAAG,EAAE;KACL,GAAG,CAAC,CAAC,CAAC;KACN,GAAG,CAAC,EAAE,CAAC;KACP,QAAQ,EAAE;KACV,QAAQ,CAAC,8DAA8D,CAAC,CAAC;AAE5E,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC;KAC7B,MAAM,EAAE;KACR,GAAG,EAAE;KACL,GAAG,CAAC,CAAC,CAAC;KACN,GAAG,CAAC,EAAE,CAAC;KACP,QAAQ,EAAE;KACV,QAAQ,CAAC,8DAA8D,CAAC,CAAC;AAE5E,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC;KACpB,MAAM,EAAE;KACR,QAAQ,EAAE;KACV,QAAQ,CACP,uFAAuF,CACxF,CAAC;AAEJ,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,WAAmB,EAAE,EAAE,CAC5C,CAAC;KACE,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;KACxC,QAAQ,EAAE;KACV,QAAQ,CAAC,oBAAoB,WAAW,EAAE,CAAC,CAAC;AAEjD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,UAAU,EAAE,QAAQ,EAAE,QAAQ,CAAU,CAAC;AAE7E,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,QAAQ;IACR,MAAM;CACP,CAAC"}
@@ -1,20 +1,35 @@
1
1
  import { z } from 'zod';
2
+ import { describeHttpRequest } from '../common.js';
3
+ const queryKeys = [];
2
4
  export const createContact = {
3
5
  name: 'createContact',
4
6
  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.',
7
+ description: `Required scope: contacts:write. ${describeHttpRequest('POST', '/v1/contacts', queryKeys)} Create a contact. A contact whose email or phone already exists on the store is rejected with 409.`,
6
8
  method: 'POST',
7
9
  path: '/v1/contacts',
8
- queryKeys: [],
10
+ queryKeys,
9
11
  inputSchema: z.object({
10
- firstName: z.string().max(50),
11
- lastName: z.string().max(50).optional(),
12
- email: z.string().email().max(100).optional(),
12
+ firstName: z
13
+ .string()
14
+ .min(1)
15
+ .max(50)
16
+ .describe('JSON body. First name of the contact. Maximum 50 characters.'),
17
+ lastName: z
18
+ .string()
19
+ .max(50)
20
+ .optional()
21
+ .describe('JSON body. Last name of the contact. Maximum 50 characters.'),
22
+ email: z
23
+ .string()
24
+ .email()
25
+ .max(100)
26
+ .optional()
27
+ .describe('JSON body. Primary email address. Maximum 100 characters.'),
13
28
  phone: z
14
29
  .string()
15
30
  .max(15)
16
31
  .optional()
17
- .describe('Primary phone number in E.164 format.'),
32
+ .describe('JSON body. Primary phone number in E.164 format. Maximum 15 characters.'),
18
33
  }),
19
34
  annotations: { readOnlyHint: false, destructiveHint: false },
20
35
  };
@@ -1 +1 @@
1
- {"version":3,"file":"create-contact.js","sourceRoot":"","sources":["../../../src/tools/contacts/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
+ {"version":3,"file":"create-contact.js","sourceRoot":"","sources":["../../../src/tools/contacts/create-contact.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,aAAa,GAAiB;IACzC,IAAI,EAAE,eAAe;IACrB,KAAK,EAAE,kBAAkB;IACzB,WAAW,EAAE,mCAAmC,mBAAmB,CAAC,MAAM,EAAE,cAAc,EAAE,SAAS,CAAC,qGAAqG;IAC3M,MAAM,EAAE,MAAM;IACd,IAAI,EAAE,cAAc;IACpB,SAAS;IACT,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,SAAS,EAAE,CAAC;aACT,MAAM,EAAE;aACR,GAAG,CAAC,CAAC,CAAC;aACN,GAAG,CAAC,EAAE,CAAC;aACP,QAAQ,CAAC,8DAA8D,CAAC;QAC3E,QAAQ,EAAE,CAAC;aACR,MAAM,EAAE;aACR,GAAG,CAAC,EAAE,CAAC;aACP,QAAQ,EAAE;aACV,QAAQ,CAAC,6DAA6D,CAAC;QAC1E,KAAK,EAAE,CAAC;aACL,MAAM,EAAE;aACR,KAAK,EAAE;aACP,GAAG,CAAC,GAAG,CAAC;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,2DAA2D,CAAC;QACxE,KAAK,EAAE,CAAC;aACL,MAAM,EAAE;aACR,GAAG,CAAC,EAAE,CAAC;aACP,QAAQ,EAAE;aACV,QAAQ,CACP,yEAAyE,CAC1E;KACJ,CAAC;IACF,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE;CAC7D,CAAC"}
@@ -1,13 +1,18 @@
1
1
  import { z } from 'zod';
2
+ import { describeHttpRequest } from '../common.js';
3
+ const queryKeys = ['contactId'];
2
4
  export const getContactById = {
3
5
  name: 'getContactById',
4
6
  title: 'Get a contact by ID',
5
- description: 'Required scope: contacts:read. Fetch a single contact, including custom field values.',
7
+ description: `Required scope: contacts:read. ${describeHttpRequest('GET', '/v1/contacts', queryKeys)} Fetch a single contact, including custom field values.`,
6
8
  method: 'GET',
7
9
  path: '/v1/contacts',
8
- queryKeys: ['contactId'],
10
+ queryKeys,
9
11
  inputSchema: z.object({
10
- contactId: z.string(),
12
+ contactId: z
13
+ .string()
14
+ .min(1)
15
+ .describe('Query parameter. The ID of the contact.'),
11
16
  }),
12
17
  annotations: { readOnlyHint: true },
13
18
  };
@@ -1 +1 @@
1
- {"version":3,"file":"get-contact-by-id.js","sourceRoot":"","sources":["../../../src/tools/contacts/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"}
1
+ {"version":3,"file":"get-contact-by-id.js","sourceRoot":"","sources":["../../../src/tools/contacts/get-contact-by-id.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,mBAAmB,EAAqB,MAAM,cAAc,CAAC;AAEtE,MAAM,SAAS,GAAG,CAAC,WAAW,CAAU,CAAC;AAEzC,MAAM,CAAC,MAAM,cAAc,GAAiB;IAC1C,IAAI,EAAE,gBAAgB;IACtB,KAAK,EAAE,qBAAqB;IAC5B,WAAW,EAAE,kCAAkC,mBAAmB,CAAC,KAAK,EAAE,cAAc,EAAE,SAAS,CAAC,yDAAyD;IAC7J,MAAM,EAAE,KAAK;IACb,IAAI,EAAE,cAAc;IACpB,SAAS;IACT,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,SAAS,EAAE,CAAC;aACT,MAAM,EAAE;aACR,GAAG,CAAC,CAAC,CAAC;aACN,QAAQ,CAAC,yCAAyC,CAAC;KACvD,CAAC;IACF,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;CACpC,CAAC"}
@@ -1,11 +1,13 @@
1
1
  import { z } from 'zod';
2
+ import { describeHttpRequest } from '../common.js';
3
+ const queryKeys = [];
2
4
  export const listContactFields = {
3
5
  name: 'listContactFields',
4
6
  title: 'List contact fields',
5
- description: 'Required scope: contacts:read. Fetch contact field definitions for the store.',
7
+ description: `Required scope: contacts:read. ${describeHttpRequest('GET', '/v1/contacts/fields', queryKeys)} Full catalog of contact field definitions for the store. Not paginated.`,
6
8
  method: 'GET',
7
9
  path: '/v1/contacts/fields',
8
- queryKeys: [],
10
+ queryKeys,
9
11
  inputSchema: z.object({}),
10
12
  annotations: { readOnlyHint: true },
11
13
  };
@@ -1 +1 @@
1
- {"version":3,"file":"list-contact-fields.js","sourceRoot":"","sources":["../../../src/tools/contacts/list-contact-fields.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,CAAC,MAAM,iBAAiB,GAAiB;IAC7C,IAAI,EAAE,mBAAmB;IACzB,KAAK,EAAE,qBAAqB;IAC5B,WAAW,EACT,+EAA+E;IACjF,MAAM,EAAE,KAAK;IACb,IAAI,EAAE,qBAAqB;IAC3B,SAAS,EAAE,EAAE;IACb,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;IACzB,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;CACpC,CAAC"}
1
+ {"version":3,"file":"list-contact-fields.js","sourceRoot":"","sources":["../../../src/tools/contacts/list-contact-fields.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,iBAAiB,GAAiB;IAC7C,IAAI,EAAE,mBAAmB;IACzB,KAAK,EAAE,qBAAqB;IAC5B,WAAW,EAAE,kCAAkC,mBAAmB,CAAC,KAAK,EAAE,qBAAqB,EAAE,SAAS,CAAC,0EAA0E;IACrL,MAAM,EAAE,KAAK;IACb,IAAI,EAAE,qBAAqB;IAC3B,SAAS;IACT,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;IACzB,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;CACpC,CAAC"}
@@ -1,21 +1,28 @@
1
1
  import { z } from 'zod';
2
- import { paginationFields } from '../common.js';
2
+ import { describeHttpRequest, paginationFields, } from '../common.js';
3
+ const queryKeys = ['pageSize', 'cursor'];
3
4
  export const listContacts = {
4
5
  name: 'listContacts',
5
6
  title: 'List contacts',
6
- description: 'Required scope: contacts:read. Search and page through contacts, most recently updated first.',
7
+ description: `Required scope: contacts:read. ${describeHttpRequest('POST', '/v1/contacts/list', queryKeys)} Search and page through contacts, most recently updated first.`,
7
8
  method: 'POST',
8
9
  path: '/v1/contacts/list',
9
- queryKeys: ['pageSize', 'cursor'],
10
+ queryKeys,
10
11
  inputSchema: z.object({
11
12
  ...paginationFields,
12
13
  search: z
13
14
  .string()
14
15
  .max(100)
15
16
  .optional()
16
- .describe('Free-text search across name, email, and phone.'),
17
- updatedAfter: z.string().optional(),
18
- updatedBefore: z.string().optional(),
17
+ .describe('JSON body. Free-text search across name, email, and phone. Maximum 100 characters.'),
18
+ updatedAfter: z
19
+ .string()
20
+ .optional()
21
+ .describe('JSON body. ISO 8601 date-time. Return only contacts updated on or after this time.'),
22
+ updatedBefore: z
23
+ .string()
24
+ .optional()
25
+ .describe('JSON body. ISO 8601 date-time. Return only contacts updated before this time.'),
19
26
  }),
20
27
  annotations: { readOnlyHint: true },
21
28
  };
@@ -1 +1 @@
1
- {"version":3,"file":"list-contacts.js","sourceRoot":"","sources":["../../../src/tools/contacts/list-contacts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAqB,MAAM,cAAc,CAAC;AAEnE,MAAM,CAAC,MAAM,YAAY,GAAiB;IACxC,IAAI,EAAE,cAAc;IACpB,KAAK,EAAE,eAAe;IACtB,WAAW,EACT,+FAA+F;IACjG,MAAM,EAAE,MAAM;IACd,IAAI,EAAE,mBAAmB;IACzB,SAAS,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC;IACjC,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,GAAG,gBAAgB;QACnB,MAAM,EAAE,CAAC;aACN,MAAM,EAAE;aACR,GAAG,CAAC,GAAG,CAAC;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,iDAAiD,CAAC;QAC9D,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACnC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KACrC,CAAC;IACF,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;CACpC,CAAC"}
1
+ {"version":3,"file":"list-contacts.js","sourceRoot":"","sources":["../../../src/tools/contacts/list-contacts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,mBAAmB,EACnB,gBAAgB,GAEjB,MAAM,cAAc,CAAC;AAEtB,MAAM,SAAS,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAU,CAAC;AAElD,MAAM,CAAC,MAAM,YAAY,GAAiB;IACxC,IAAI,EAAE,cAAc;IACpB,KAAK,EAAE,eAAe;IACtB,WAAW,EAAE,kCAAkC,mBAAmB,CAAC,MAAM,EAAE,mBAAmB,EAAE,SAAS,CAAC,iEAAiE;IAC3K,MAAM,EAAE,MAAM;IACd,IAAI,EAAE,mBAAmB;IACzB,SAAS;IACT,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,GAAG,gBAAgB;QACnB,MAAM,EAAE,CAAC;aACN,MAAM,EAAE;aACR,GAAG,CAAC,GAAG,CAAC;aACR,QAAQ,EAAE;aACV,QAAQ,CACP,oFAAoF,CACrF;QACH,YAAY,EAAE,CAAC;aACZ,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CACP,oFAAoF,CACrF;QACH,aAAa,EAAE,CAAC;aACb,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CACP,+EAA+E,CAChF;KACJ,CAAC;IACF,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;CACpC,CAAC"}
@@ -1,16 +1,27 @@
1
1
  import { z } from 'zod';
2
+ import { describeHttpRequest } from '../common.js';
3
+ const queryKeys = [];
2
4
  export const updateContactField = {
3
5
  name: 'updateContactField',
4
6
  title: 'Update a contact field value',
5
- description: 'Required scope: contacts:write. Set or clear a custom field. Pass the customFieldsUpdatedAt you last read as updatedAt; a mismatch is rejected.',
7
+ description: `Required scope: contacts:write. ${describeHttpRequest('PATCH', '/v1/contacts/fields', queryKeys)} Set or clear a custom field. Pass the customFieldsUpdatedAt you last read as updatedAt; a mismatch is rejected with 409.`,
6
8
  method: 'PATCH',
7
9
  path: '/v1/contacts/fields',
8
- queryKeys: [],
10
+ queryKeys,
9
11
  inputSchema: z.object({
10
- contactId: z.string(),
11
- contactFieldId: z.string(),
12
- value: z.any().nullable(),
13
- updatedAt: z.string(),
12
+ contactId: z.string().min(1).describe('JSON body. The ID of the contact.'),
13
+ contactFieldId: z
14
+ .string()
15
+ .min(1)
16
+ .describe('JSON body. The ID of the contact field to update.'),
17
+ value: z
18
+ .any()
19
+ .nullable()
20
+ .describe('JSON body. New value for the field. Send null to clear it. Must match the field definition.'),
21
+ updatedAt: z
22
+ .string()
23
+ .min(1)
24
+ .describe('JSON body. ISO 8601 date-time. Pass customFieldsUpdatedAt from the last read, or the contact updatedAt when customFieldsUpdatedAt is absent.'),
14
25
  }),
15
26
  annotations: { readOnlyHint: false, destructiveHint: false },
16
27
  };
@@ -1 +1 @@
1
- {"version":3,"file":"update-contact-field.js","sourceRoot":"","sources":["../../../src/tools/contacts/update-contact-field.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,CAAC,MAAM,kBAAkB,GAAiB;IAC9C,IAAI,EAAE,oBAAoB;IAC1B,KAAK,EAAE,8BAA8B;IACrC,WAAW,EACT,iJAAiJ;IACnJ,MAAM,EAAE,OAAO;IACf,IAAI,EAAE,qBAAqB;IAC3B,SAAS,EAAE,EAAE;IACb,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;QACrB,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE;QAC1B,KAAK,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;QACzB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;KACtB,CAAC;IACF,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE;CAC7D,CAAC"}
1
+ {"version":3,"file":"update-contact-field.js","sourceRoot":"","sources":["../../../src/tools/contacts/update-contact-field.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,kBAAkB,GAAiB;IAC9C,IAAI,EAAE,oBAAoB;IAC1B,KAAK,EAAE,8BAA8B;IACrC,WAAW,EAAE,mCAAmC,mBAAmB,CAAC,OAAO,EAAE,qBAAqB,EAAE,SAAS,CAAC,2HAA2H;IACzO,MAAM,EAAE,OAAO;IACf,IAAI,EAAE,qBAAqB;IAC3B,SAAS;IACT,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,mCAAmC,CAAC;QAC1E,cAAc,EAAE,CAAC;aACd,MAAM,EAAE;aACR,GAAG,CAAC,CAAC,CAAC;aACN,QAAQ,CAAC,mDAAmD,CAAC;QAChE,KAAK,EAAE,CAAC;aACL,GAAG,EAAE;aACL,QAAQ,EAAE;aACV,QAAQ,CACP,6FAA6F,CAC9F;QACH,SAAS,EAAE,CAAC;aACT,MAAM,EAAE;aACR,GAAG,CAAC,CAAC,CAAC;aACN,QAAQ,CACP,8IAA8I,CAC/I;KACJ,CAAC;IACF,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE;CAC7D,CAAC"}
@@ -1,23 +1,38 @@
1
1
  import { z } from 'zod';
2
- import { expand, paginationFields, paginationQueryKeys, } from '../common.js';
3
- const filterConversationsExpand = expand('Pass account to replace accountId with { id, name, channel }.');
2
+ import { describeHttpRequest, expand, paginationFields, paginationQueryKeys, } from '../common.js';
3
+ const queryKeys = ['conversationId', 'contactId', ...paginationQueryKeys];
4
+ const filterConversationsExpand = expand('Pass account to replace accountId with { id, name, channel }. assignee is not valid on conversations.');
4
5
  export const filterConversations = {
5
6
  name: 'filterConversations',
6
7
  title: 'Filter conversations by ID or contact',
7
- 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.',
8
+ description: `Required scope: conversations:read. ${describeHttpRequest('GET', '/v1/conversations', queryKeys)} Send conversationId and/or contactId — at least one is required. Paginate with pageSize (max 50) and cursor. Pass expand=account to replace accountId.`,
8
9
  method: 'GET',
9
10
  path: '/v1/conversations',
10
- queryKeys: ['conversationId', 'contactId', ...paginationQueryKeys],
11
+ queryKeys,
11
12
  inputSchema: z.union([
12
13
  z.object({
13
- conversationId: z.string().min(1),
14
- contactId: z.string().min(1).optional(),
14
+ conversationId: z
15
+ .string()
16
+ .min(1)
17
+ .describe('Query parameter. The ID of the conversation.'),
18
+ contactId: z
19
+ .string()
20
+ .min(1)
21
+ .optional()
22
+ .describe('Query parameter. The ID of the contact.'),
15
23
  ...paginationFields,
16
24
  expand: filterConversationsExpand,
17
25
  }),
18
26
  z.object({
19
- contactId: z.string().min(1),
20
- conversationId: z.string().min(1).optional(),
27
+ contactId: z
28
+ .string()
29
+ .min(1)
30
+ .describe('Query parameter. The ID of the contact.'),
31
+ conversationId: z
32
+ .string()
33
+ .min(1)
34
+ .optional()
35
+ .describe('Query parameter. The ID of the conversation.'),
21
36
  ...paginationFields,
22
37
  expand: filterConversationsExpand,
23
38
  }),
@@ -1 +1 @@
1
- {"version":3,"file":"filter-conversations.js","sourceRoot":"","sources":["../../../src/tools/conversations/filter-conversations.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,yBAAyB,GAAG,MAAM,CACtC,+DAA+D,CAChE,CAAC;AAEF,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,KAAK,CAAC;QACnB,CAAC,CAAC,MAAM,CAAC;YACP,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YACjC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;YACvC,GAAG,gBAAgB;YACnB,MAAM,EAAE,yBAAyB;SAClC,CAAC;QACF,CAAC,CAAC,MAAM,CAAC;YACP,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YAC5B,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;YAC5C,GAAG,gBAAgB;YACnB,MAAM,EAAE,yBAAyB;SAClC,CAAC;KACH,CAAC;IACF,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;CACpC,CAAC"}
1
+ {"version":3,"file":"filter-conversations.js","sourceRoot":"","sources":["../../../src/tools/conversations/filter-conversations.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,WAAW,EAAE,GAAG,mBAAmB,CAAC,CAAC;AAE1E,MAAM,yBAAyB,GAAG,MAAM,CACtC,uGAAuG,CACxG,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAiB;IAC/C,IAAI,EAAE,qBAAqB;IAC3B,KAAK,EAAE,uCAAuC;IAC9C,WAAW,EAAE,uCAAuC,mBAAmB,CAAC,KAAK,EAAE,mBAAmB,EAAE,SAAS,CAAC,yJAAyJ;IACvQ,MAAM,EAAE,KAAK;IACb,IAAI,EAAE,mBAAmB;IACzB,SAAS;IACT,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC;QACnB,CAAC,CAAC,MAAM,CAAC;YACP,cAAc,EAAE,CAAC;iBACd,MAAM,EAAE;iBACR,GAAG,CAAC,CAAC,CAAC;iBACN,QAAQ,CAAC,8CAA8C,CAAC;YAC3D,SAAS,EAAE,CAAC;iBACT,MAAM,EAAE;iBACR,GAAG,CAAC,CAAC,CAAC;iBACN,QAAQ,EAAE;iBACV,QAAQ,CAAC,yCAAyC,CAAC;YACtD,GAAG,gBAAgB;YACnB,MAAM,EAAE,yBAAyB;SAClC,CAAC;QACF,CAAC,CAAC,MAAM,CAAC;YACP,SAAS,EAAE,CAAC;iBACT,MAAM,EAAE;iBACR,GAAG,CAAC,CAAC,CAAC;iBACN,QAAQ,CAAC,yCAAyC,CAAC;YACtD,cAAc,EAAE,CAAC;iBACd,MAAM,EAAE;iBACR,GAAG,CAAC,CAAC,CAAC;iBACN,QAAQ,EAAE;iBACV,QAAQ,CAAC,8CAA8C,CAAC;YAC3D,GAAG,gBAAgB;YACnB,MAAM,EAAE,yBAAyB;SAClC,CAAC;KACH,CAAC;IACF,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;CACpC,CAAC"}
@@ -1,13 +1,18 @@
1
1
  import { z } from 'zod';
2
+ import { describeHttpRequest } from '../common.js';
3
+ const queryKeys = [];
2
4
  export const markConversationRead = {
3
5
  name: 'markConversationRead',
4
6
  title: 'Mark a conversation as read',
5
- description: "Required scope: conversations:write. Clears the unread count on the conversation's open ticket. Idempotent. A conversation with no open ticket returns 404.",
7
+ description: `Required scope: conversations:write. ${describeHttpRequest('PATCH', '/v1/conversations/read', queryKeys)} Clears the unread count on the conversation's open ticket. Idempotent. A conversation with no open ticket returns 404.`,
6
8
  method: 'PATCH',
7
9
  path: '/v1/conversations/read',
8
- queryKeys: [],
10
+ queryKeys,
9
11
  inputSchema: z.object({
10
- conversationId: z.string(),
12
+ conversationId: z
13
+ .string()
14
+ .min(1)
15
+ .describe('JSON body. The ID of the conversation.'),
11
16
  }),
12
17
  annotations: {
13
18
  readOnlyHint: false,
@@ -1 +1 @@
1
- {"version":3,"file":"mark-conversation-read.js","sourceRoot":"","sources":["../../../src/tools/conversations/mark-conversation-read.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,CAAC,MAAM,oBAAoB,GAAiB;IAChD,IAAI,EAAE,sBAAsB;IAC5B,KAAK,EAAE,6BAA6B;IACpC,WAAW,EACT,6JAA6J;IAC/J,MAAM,EAAE,OAAO;IACf,IAAI,EAAE,wBAAwB;IAC9B,SAAS,EAAE,EAAE;IACb,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE;KAC3B,CAAC;IACF,WAAW,EAAE;QACX,YAAY,EAAE,KAAK;QACnB,eAAe,EAAE,KAAK;QACtB,cAAc,EAAE,IAAI;KACrB;CACF,CAAC"}
1
+ {"version":3,"file":"mark-conversation-read.js","sourceRoot":"","sources":["../../../src/tools/conversations/mark-conversation-read.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,6BAA6B;IACpC,WAAW,EAAE,wCAAwC,mBAAmB,CAAC,OAAO,EAAE,wBAAwB,EAAE,SAAS,CAAC,yHAAyH;IAC/O,MAAM,EAAE,OAAO;IACf,IAAI,EAAE,wBAAwB;IAC9B,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;KACtD,CAAC;IACF,WAAW,EAAE;QACX,YAAY,EAAE,KAAK;QACnB,eAAe,EAAE,KAAK;QACtB,cAAc,EAAE,IAAI;KACrB;CACF,CAAC"}
@@ -1,21 +1,46 @@
1
1
  import { z } from 'zod';
2
+ import { describeHttpRequest } from '../common.js';
3
+ const queryKeys = [];
4
+ const MAX_LABELS_PER_REQUEST = 10;
2
5
  export const updateConversationLabels = {
3
6
  name: 'updateConversationLabels',
4
7
  title: 'Update conversation labels',
5
- description: 'Required scope: conversations:write. Add and/or remove up to 10 labels. At least one of addLabels or removeLabels is required.',
8
+ description: `Required scope: conversations:write. ${describeHttpRequest('PATCH', '/v1/conversations/labels', queryKeys)} Add and/or remove up to 10 labels. At least one of addLabels or removeLabels is required. Labels already applied (or not applied) are ignored.`,
6
9
  method: 'PATCH',
7
10
  path: '/v1/conversations/labels',
8
- queryKeys: [],
11
+ queryKeys,
9
12
  inputSchema: z.union([
10
13
  z.object({
11
- conversationId: z.string().min(1),
12
- addLabels: z.array(z.string()).min(1).max(10),
13
- removeLabels: z.array(z.string()).max(10).optional(),
14
+ conversationId: z
15
+ .string()
16
+ .min(1)
17
+ .describe('JSON body. The ID of the conversation.'),
18
+ addLabels: z
19
+ .array(z.string())
20
+ .min(1)
21
+ .max(MAX_LABELS_PER_REQUEST)
22
+ .describe('JSON body. Existing label IDs to add. Maximum 10.'),
23
+ removeLabels: z
24
+ .array(z.string())
25
+ .max(MAX_LABELS_PER_REQUEST)
26
+ .optional()
27
+ .describe('JSON body. Existing label IDs to remove. Maximum 10.'),
14
28
  }),
15
29
  z.object({
16
- conversationId: z.string().min(1),
17
- removeLabels: z.array(z.string()).min(1).max(10),
18
- addLabels: z.array(z.string()).max(10).optional(),
30
+ conversationId: z
31
+ .string()
32
+ .min(1)
33
+ .describe('JSON body. The ID of the conversation.'),
34
+ removeLabels: z
35
+ .array(z.string())
36
+ .min(1)
37
+ .max(MAX_LABELS_PER_REQUEST)
38
+ .describe('JSON body. Existing label IDs to remove. Maximum 10.'),
39
+ addLabels: z
40
+ .array(z.string())
41
+ .max(MAX_LABELS_PER_REQUEST)
42
+ .optional()
43
+ .describe('JSON body. Existing label IDs to add. Maximum 10.'),
19
44
  }),
20
45
  ]),
21
46
  annotations: { readOnlyHint: false, destructiveHint: false },
@@ -1 +1 @@
1
- {"version":3,"file":"update-conversation-labels.js","sourceRoot":"","sources":["../../../src/tools/conversations/update-conversation-labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,CAAC,MAAM,wBAAwB,GAAiB;IACpD,IAAI,EAAE,0BAA0B;IAChC,KAAK,EAAE,4BAA4B;IACnC,WAAW,EACT,gIAAgI;IAClI,MAAM,EAAE,OAAO;IACf,IAAI,EAAE,0BAA0B;IAChC,SAAS,EAAE,EAAE;IACb,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC;QACnB,CAAC,CAAC,MAAM,CAAC;YACP,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YACjC,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7C,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;SACrD,CAAC;QACF,CAAC,CAAC,MAAM,CAAC;YACP,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YACjC,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;YAChD,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;SAClD,CAAC;KACH,CAAC;IACF,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE;CAC7D,CAAC"}
1
+ {"version":3,"file":"update-conversation-labels.js","sourceRoot":"","sources":["../../../src/tools/conversations/update-conversation-labels.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;AAC9B,MAAM,sBAAsB,GAAG,EAAE,CAAC;AAElC,MAAM,CAAC,MAAM,wBAAwB,GAAiB;IACpD,IAAI,EAAE,0BAA0B;IAChC,KAAK,EAAE,4BAA4B;IACnC,WAAW,EAAE,wCAAwC,mBAAmB,CAAC,OAAO,EAAE,0BAA0B,EAAE,SAAS,CAAC,iJAAiJ;IACzQ,MAAM,EAAE,OAAO;IACf,IAAI,EAAE,0BAA0B;IAChC,SAAS;IACT,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC;QACnB,CAAC,CAAC,MAAM,CAAC;YACP,cAAc,EAAE,CAAC;iBACd,MAAM,EAAE;iBACR,GAAG,CAAC,CAAC,CAAC;iBACN,QAAQ,CAAC,wCAAwC,CAAC;YACrD,SAAS,EAAE,CAAC;iBACT,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;iBACjB,GAAG,CAAC,CAAC,CAAC;iBACN,GAAG,CAAC,sBAAsB,CAAC;iBAC3B,QAAQ,CAAC,mDAAmD,CAAC;YAChE,YAAY,EAAE,CAAC;iBACZ,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;iBACjB,GAAG,CAAC,sBAAsB,CAAC;iBAC3B,QAAQ,EAAE;iBACV,QAAQ,CAAC,sDAAsD,CAAC;SACpE,CAAC;QACF,CAAC,CAAC,MAAM,CAAC;YACP,cAAc,EAAE,CAAC;iBACd,MAAM,EAAE;iBACR,GAAG,CAAC,CAAC,CAAC;iBACN,QAAQ,CAAC,wCAAwC,CAAC;YACrD,YAAY,EAAE,CAAC;iBACZ,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;iBACjB,GAAG,CAAC,CAAC,CAAC;iBACN,GAAG,CAAC,sBAAsB,CAAC;iBAC3B,QAAQ,CAAC,sDAAsD,CAAC;YACnE,SAAS,EAAE,CAAC;iBACT,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;iBACjB,GAAG,CAAC,sBAAsB,CAAC;iBAC3B,QAAQ,EAAE;iBACV,QAAQ,CAAC,mDAAmD,CAAC;SACjE,CAAC;KACH,CAAC;IACF,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE;CAC7D,CAAC"}
@@ -5,6 +5,7 @@ import { filterConversations } from './conversations/filter-conversations.js';
5
5
  import { getContactById } from './contacts/get-contact-by-id.js';
6
6
  import { getMessages } from './messages/get-messages.js';
7
7
  import { getTicketById } from './tickets/get-ticket-by-id.js';
8
+ import { listAccounts } from './accounts/list-accounts.js';
8
9
  import { listContactFields } from './contacts/list-contact-fields.js';
9
10
  import { listContacts } from './contacts/list-contacts.js';
10
11
  import { listInternalComments } from './messages/list-internal-comments.js';
@@ -39,6 +40,7 @@ export const tools = [
39
40
  listUsers,
40
41
  listLabels,
41
42
  listTeams,
43
+ listAccounts,
42
44
  ];
43
45
  export function splitInput(input, queryKeys) {
44
46
  const query = {};
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAE,wBAAwB,EAAE,MAAM,+CAA+C,CAAC;AACzF,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAIrE,MAAM,CAAC,MAAM,KAAK,GAAmB;IACnC,aAAa;IACb,WAAW;IACX,gBAAgB;IAChB,iBAAiB;IACjB,WAAW;IACX,mBAAmB;IACnB,oBAAoB;IACpB,wBAAwB;IACxB,cAAc;IACd,YAAY;IACZ,iBAAiB;IACjB,aAAa;IACb,kBAAkB;IAClB,WAAW;IACX,oBAAoB;IACpB,qBAAqB;IACrB,oBAAoB;IACpB,SAAS;IACT,UAAU;IACV,SAAS;CACV,CAAC;AAEF,MAAM,UAAU,UAAU,CACxB,KAA8B,EAC9B,SAA4B;IAE5B,MAAM,KAAK,GAA4B,EAAE,CAAC;IAC1C,MAAM,IAAI,GAA4B,EAAE,CAAC;IAEzC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACjD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,SAAS;QACX,CAAC;QACD,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5B,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACrB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACpB,CAAC;IACH,CAAC;IAED,OAAO;QACL,KAAK;QACL,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAClD,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAE,wBAAwB,EAAE,MAAM,+CAA+C,CAAC;AACzF,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAIrE,MAAM,CAAC,MAAM,KAAK,GAAmB;IACnC,aAAa;IACb,WAAW;IACX,gBAAgB;IAChB,iBAAiB;IACjB,WAAW;IACX,mBAAmB;IACnB,oBAAoB;IACpB,wBAAwB;IACxB,cAAc;IACd,YAAY;IACZ,iBAAiB;IACjB,aAAa;IACb,kBAAkB;IAClB,WAAW;IACX,oBAAoB;IACpB,qBAAqB;IACrB,oBAAoB;IACpB,SAAS;IACT,UAAU;IACV,SAAS;IACT,YAAY;CACb,CAAC;AAEF,MAAM,UAAU,UAAU,CACxB,KAA8B,EAC9B,SAA4B;IAE5B,MAAM,KAAK,GAA4B,EAAE,CAAC;IAC1C,MAAM,IAAI,GAA4B,EAAE,CAAC;IAEzC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACjD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,SAAS;QACX,CAAC;QACD,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5B,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACrB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACpB,CAAC;IACH,CAAC;IAED,OAAO;QACL,KAAK;QACL,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAClD,CAAC;AACJ,CAAC"}
@@ -1,14 +1,20 @@
1
1
  import { z } from 'zod';
2
- import { paginationFields } from '../common.js';
2
+ import { describeHttpRequest, paginationFields, } from '../common.js';
3
+ const queryKeys = ['searchTerm', 'pageSize', 'cursor'];
3
4
  export const listLabels = {
4
5
  name: 'listLabels',
5
6
  title: 'List labels',
6
- description: 'Required scope: labels:read. Labels for the store, most recently updated first. searchTerm must be 3–100 characters.',
7
+ description: `Required scope: labels:read. ${describeHttpRequest('GET', '/v1/labels', queryKeys)} Labels for the store, most recently updated first. searchTerm must be 3–100 characters. Whitespace-only searchTerm is treated as omitted.`,
7
8
  method: 'GET',
8
9
  path: '/v1/labels',
9
- queryKeys: ['searchTerm', 'pageSize', 'cursor'],
10
+ queryKeys,
10
11
  inputSchema: z.object({
11
- searchTerm: z.string().min(3).max(100).optional(),
12
+ searchTerm: z
13
+ .string()
14
+ .min(3)
15
+ .max(100)
16
+ .optional()
17
+ .describe('Query parameter. Optional case-insensitive search on the label text. 3–100 characters.'),
12
18
  ...paginationFields,
13
19
  }),
14
20
  annotations: { readOnlyHint: true },
@@ -1 +1 @@
1
- {"version":3,"file":"list-labels.js","sourceRoot":"","sources":["../../../src/tools/labels/list-labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAqB,MAAM,cAAc,CAAC;AAEnE,MAAM,CAAC,MAAM,UAAU,GAAiB;IACtC,IAAI,EAAE,YAAY;IAClB,KAAK,EAAE,aAAa;IACpB,WAAW,EACT,sHAAsH;IACxH,MAAM,EAAE,KAAK;IACb,IAAI,EAAE,YAAY;IAClB,SAAS,EAAE,CAAC,YAAY,EAAE,UAAU,EAAE,QAAQ,CAAC;IAC/C,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;QACjD,GAAG,gBAAgB;KACpB,CAAC;IACF,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;CACpC,CAAC"}
1
+ {"version":3,"file":"list-labels.js","sourceRoot":"","sources":["../../../src/tools/labels/list-labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,mBAAmB,EACnB,gBAAgB,GAEjB,MAAM,cAAc,CAAC;AAEtB,MAAM,SAAS,GAAG,CAAC,YAAY,EAAE,UAAU,EAAE,QAAQ,CAAU,CAAC;AAEhE,MAAM,CAAC,MAAM,UAAU,GAAiB;IACtC,IAAI,EAAE,YAAY;IAClB,KAAK,EAAE,aAAa;IACpB,WAAW,EAAE,gCAAgC,mBAAmB,CAAC,KAAK,EAAE,YAAY,EAAE,SAAS,CAAC,4IAA4I;IAC5O,MAAM,EAAE,KAAK;IACb,IAAI,EAAE,YAAY;IAClB,SAAS;IACT,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,UAAU,EAAE,CAAC;aACV,MAAM,EAAE;aACR,GAAG,CAAC,CAAC,CAAC;aACN,GAAG,CAAC,GAAG,CAAC;aACR,QAAQ,EAAE;aACV,QAAQ,CACP,wFAAwF,CACzF;QACH,GAAG,gBAAgB;KACpB,CAAC;IACF,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;CACpC,CAAC"}
@@ -1,14 +1,22 @@
1
1
  import { z } from 'zod';
2
+ import { describeHttpRequest } from '../common.js';
3
+ const queryKeys = [];
2
4
  export const createInternalComment = {
3
5
  name: 'createInternalComment',
4
6
  title: 'Add an internal comment',
5
- description: 'Required scope: messages:write. Add a seller-private note. Not sent to the customer.',
7
+ description: `Required scope: messages:write. ${describeHttpRequest('POST', '/v1/messages/internal-comments', queryKeys)} Add a seller-private note. Not sent to the customer.`,
6
8
  method: 'POST',
7
9
  path: '/v1/messages/internal-comments',
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
+ .describe('JSON body. Internal comment text. Not sent to the customer.'),
12
20
  }),
13
21
  annotations: { readOnlyHint: false, destructiveHint: false },
14
22
  };
@@ -1 +1 @@
1
- {"version":3,"file":"create-internal-comment.js","sourceRoot":"","sources":["../../../src/tools/messages/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
+ {"version":3,"file":"create-internal-comment.js","sourceRoot":"","sources":["../../../src/tools/messages/create-internal-comment.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,qBAAqB,GAAiB;IACjD,IAAI,EAAE,uBAAuB;IAC7B,KAAK,EAAE,yBAAyB;IAChC,WAAW,EAAE,mCAAmC,mBAAmB,CAAC,MAAM,EAAE,gCAAgC,EAAE,SAAS,CAAC,uDAAuD;IAC/K,MAAM,EAAE,MAAM;IACd,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,wCAAwC,CAAC;QACrD,IAAI,EAAE,CAAC;aACJ,MAAM,EAAE;aACR,GAAG,CAAC,CAAC,CAAC;aACN,QAAQ,CAAC,6DAA6D,CAAC;KAC3E,CAAC;IACF,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE;CAC7D,CAAC"}
@@ -1,24 +1,45 @@
1
1
  import { z } from 'zod';
2
- import { cursor, expand, messagePageSize, } from '../common.js';
3
- const getMessagesExpand = expand('Pass sentBy,conversation,account to add related names.');
2
+ import { cursor, describeHttpRequest, expand, messagePageSize, } from '../common.js';
3
+ const queryKeys = [
4
+ 'conversationId',
5
+ 'ticketId',
6
+ 'pageSize',
7
+ 'cursor',
8
+ 'expand',
9
+ ];
10
+ const getMessagesExpand = expand('Pass sentBy,conversation,account to add related names. Those ids stay on the message.');
4
11
  export const getMessages = {
5
12
  name: 'getMessages',
6
13
  title: 'List messages',
7
- description: 'Required scope: messages:read. Customer-facing messages, newest first. Send conversationId and/or ticketId — at least one is required. pageSize max 15.',
14
+ description: `Required scope: messages:read. ${describeHttpRequest('GET', '/v1/messages', queryKeys)} Customer-facing messages, newest first. Events and internal comments are excluded. Send conversationId and/or ticketId — at least one is required. When ticketId is set, results are limited to that ticket's time window. pageSize defaults to 15 and cannot exceed 15.`,
8
15
  method: 'GET',
9
16
  path: '/v1/messages',
10
- queryKeys: ['conversationId', 'ticketId', 'pageSize', 'cursor', 'expand'],
17
+ queryKeys,
11
18
  inputSchema: z.union([
12
19
  z.object({
13
- conversationId: z.string().min(1),
14
- ticketId: z.string().min(1).optional(),
20
+ conversationId: z
21
+ .string()
22
+ .min(1)
23
+ .describe('Query parameter. The ID of the conversation.'),
24
+ ticketId: z
25
+ .string()
26
+ .min(1)
27
+ .optional()
28
+ .describe("Query parameter. The ID of the ticket. When set, results are limited to that ticket's time window."),
15
29
  pageSize: messagePageSize,
16
30
  cursor,
17
31
  expand: getMessagesExpand,
18
32
  }),
19
33
  z.object({
20
- ticketId: z.string().min(1),
21
- conversationId: z.string().min(1).optional(),
34
+ ticketId: z
35
+ .string()
36
+ .min(1)
37
+ .describe("Query parameter. The ID of the ticket. When set, results are limited to that ticket's time window."),
38
+ conversationId: z
39
+ .string()
40
+ .min(1)
41
+ .optional()
42
+ .describe('Query parameter. The ID of the conversation.'),
22
43
  pageSize: messagePageSize,
23
44
  cursor,
24
45
  expand: getMessagesExpand,
@@ -1 +1 @@
1
- {"version":3,"file":"get-messages.js","sourceRoot":"","sources":["../../../src/tools/messages/get-messages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,MAAM,EACN,MAAM,EACN,eAAe,GAEhB,MAAM,cAAc,CAAC;AAEtB,MAAM,iBAAiB,GAAG,MAAM,CAC9B,wDAAwD,CACzD,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAiB;IACvC,IAAI,EAAE,aAAa;IACnB,KAAK,EAAE,eAAe;IACtB,WAAW,EACT,yJAAyJ;IAC3J,MAAM,EAAE,KAAK;IACb,IAAI,EAAE,cAAc;IACpB,SAAS,EAAE,CAAC,gBAAgB,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,CAAC;IACzE,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC;QACnB,CAAC,CAAC,MAAM,CAAC;YACP,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YACjC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;YACtC,QAAQ,EAAE,eAAe;YACzB,MAAM;YACN,MAAM,EAAE,iBAAiB;SAC1B,CAAC;QACF,CAAC,CAAC,MAAM,CAAC;YACP,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YAC3B,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;YAC5C,QAAQ,EAAE,eAAe;YACzB,MAAM;YACN,MAAM,EAAE,iBAAiB;SAC1B,CAAC;KACH,CAAC;IACF,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;CACpC,CAAC"}
1
+ {"version":3,"file":"get-messages.js","sourceRoot":"","sources":["../../../src/tools/messages/get-messages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,MAAM,EACN,mBAAmB,EACnB,MAAM,EACN,eAAe,GAEhB,MAAM,cAAc,CAAC;AAEtB,MAAM,SAAS,GAAG;IAChB,gBAAgB;IAChB,UAAU;IACV,UAAU;IACV,QAAQ;IACR,QAAQ;CACA,CAAC;AAEX,MAAM,iBAAiB,GAAG,MAAM,CAC9B,uFAAuF,CACxF,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAiB;IACvC,IAAI,EAAE,aAAa;IACnB,KAAK,EAAE,eAAe;IACtB,WAAW,EAAE,kCAAkC,mBAAmB,CAAC,KAAK,EAAE,cAAc,EAAE,SAAS,CAAC,2QAA2Q;IAC/W,MAAM,EAAE,KAAK;IACb,IAAI,EAAE,cAAc;IACpB,SAAS;IACT,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC;QACnB,CAAC,CAAC,MAAM,CAAC;YACP,cAAc,EAAE,CAAC;iBACd,MAAM,EAAE;iBACR,GAAG,CAAC,CAAC,CAAC;iBACN,QAAQ,CAAC,8CAA8C,CAAC;YAC3D,QAAQ,EAAE,CAAC;iBACR,MAAM,EAAE;iBACR,GAAG,CAAC,CAAC,CAAC;iBACN,QAAQ,EAAE;iBACV,QAAQ,CACP,oGAAoG,CACrG;YACH,QAAQ,EAAE,eAAe;YACzB,MAAM;YACN,MAAM,EAAE,iBAAiB;SAC1B,CAAC;QACF,CAAC,CAAC,MAAM,CAAC;YACP,QAAQ,EAAE,CAAC;iBACR,MAAM,EAAE;iBACR,GAAG,CAAC,CAAC,CAAC;iBACN,QAAQ,CACP,oGAAoG,CACrG;YACH,cAAc,EAAE,CAAC;iBACd,MAAM,EAAE;iBACR,GAAG,CAAC,CAAC,CAAC;iBACN,QAAQ,EAAE;iBACV,QAAQ,CAAC,8CAA8C,CAAC;YAC3D,QAAQ,EAAE,eAAe;YACzB,MAAM;YACN,MAAM,EAAE,iBAAiB;SAC1B,CAAC;KACH,CAAC;IACF,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;CACpC,CAAC"}