posterly-mcp-server 0.8.2 → 0.19.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 (121) hide show
  1. package/README.md +38 -3
  2. package/dist/generated/platform-manifest.d.ts +392 -0
  3. package/dist/generated/platform-manifest.js +695 -0
  4. package/dist/index.js +331 -1
  5. package/dist/lib/api-client.d.ts +391 -24
  6. package/dist/lib/api-client.js +176 -0
  7. package/dist/tools/audit-google-business-profile.d.ts +24 -0
  8. package/dist/tools/audit-google-business-profile.js +27 -0
  9. package/dist/tools/create-oauth-client.d.ts +40 -0
  10. package/dist/tools/create-oauth-client.js +20 -0
  11. package/dist/tools/create-post.d.ts +399 -20
  12. package/dist/tools/create-post.js +81 -78
  13. package/dist/tools/create-posts-batch.d.ts +567 -0
  14. package/dist/tools/create-posts-batch.js +38 -0
  15. package/dist/tools/create-signed-upload.d.ts +24 -0
  16. package/dist/tools/create-signed-upload.js +20 -0
  17. package/dist/tools/create-webhook.d.ts +36 -0
  18. package/dist/tools/create-webhook.js +20 -0
  19. package/dist/tools/delete-google-business-review-reply.d.ts +32 -0
  20. package/dist/tools/delete-google-business-review-reply.js +17 -0
  21. package/dist/tools/delete-oauth-client.d.ts +20 -0
  22. package/dist/tools/delete-oauth-client.js +13 -0
  23. package/dist/tools/delete-post-group.d.ts +20 -0
  24. package/dist/tools/delete-post-group.js +13 -0
  25. package/dist/tools/delete-webhook.d.ts +20 -0
  26. package/dist/tools/delete-webhook.js +13 -0
  27. package/dist/tools/disconnect-account.d.ts +20 -0
  28. package/dist/tools/disconnect-account.js +22 -0
  29. package/dist/tools/generate-image.d.ts +4 -4
  30. package/dist/tools/generate-video.d.ts +59 -0
  31. package/dist/tools/generate-video.js +34 -0
  32. package/dist/tools/get-connect-link.d.ts +24 -0
  33. package/dist/tools/get-connect-link.js +46 -0
  34. package/dist/tools/get-google-business-review-link.d.ts +24 -0
  35. package/dist/tools/get-google-business-review-link.js +19 -0
  36. package/dist/tools/get-platform-schema.d.ts +24 -0
  37. package/dist/tools/get-platform-schema.js +44 -0
  38. package/dist/tools/get-post-missing.d.ts +16 -0
  39. package/dist/tools/get-post-missing.js +12 -0
  40. package/dist/tools/get-video-job.d.ts +24 -0
  41. package/dist/tools/get-video-job.js +31 -0
  42. package/dist/tools/get-video-options.d.ts +8 -0
  43. package/dist/tools/get-video-options.js +26 -0
  44. package/dist/tools/get-x-posting-quota.d.ts +16 -0
  45. package/dist/tools/get-x-posting-quota.js +21 -0
  46. package/dist/tools/list-activity.d.ts +32 -0
  47. package/dist/tools/list-activity.js +35 -0
  48. package/dist/tools/list-google-business-reviews.d.ts +32 -0
  49. package/dist/tools/list-google-business-reviews.js +28 -0
  50. package/dist/tools/list-oauth-clients.d.ts +8 -0
  51. package/dist/tools/list-oauth-clients.js +15 -0
  52. package/dist/tools/list-platforms.d.ts +16 -0
  53. package/dist/tools/list-platforms.js +20 -0
  54. package/dist/tools/list-posts.d.ts +3 -3
  55. package/dist/tools/list-posts.js +3 -2
  56. package/dist/tools/list-webhooks.d.ts +16 -0
  57. package/dist/tools/list-webhooks.js +24 -0
  58. package/dist/tools/reply-google-business-review.d.ts +36 -0
  59. package/dist/tools/reply-google-business-review.js +18 -0
  60. package/dist/tools/run-video-function.d.ts +24 -0
  61. package/dist/tools/run-video-function.js +25 -0
  62. package/dist/tools/suggest-google-business-review-reply.d.ts +48 -0
  63. package/dist/tools/suggest-google-business-review-reply.js +27 -0
  64. package/dist/tools/test-webhook.d.ts +20 -0
  65. package/dist/tools/test-webhook.js +14 -0
  66. package/dist/tools/trigger-platform-helper.d.ts +28 -0
  67. package/dist/tools/trigger-platform-helper.js +22 -0
  68. package/dist/tools/update-oauth-client.d.ts +44 -0
  69. package/dist/tools/update-oauth-client.js +21 -0
  70. package/dist/tools/update-post-release-id.d.ts +28 -0
  71. package/dist/tools/update-post-release-id.js +18 -0
  72. package/dist/tools/update-post-status.d.ts +28 -0
  73. package/dist/tools/update-post-status.js +23 -0
  74. package/dist/tools/update-post.js +1 -1
  75. package/dist/tools/update-webhook.d.ts +40 -0
  76. package/dist/tools/update-webhook.js +21 -0
  77. package/dist/tools/upload-media-from-url.d.ts +24 -0
  78. package/dist/tools/upload-media-from-url.js +26 -0
  79. package/dist/tools/webhook-events.d.ts +3 -0
  80. package/dist/tools/webhook-events.js +13 -0
  81. package/package.json +1 -1
  82. package/src/generated/platform-manifest.ts +695 -0
  83. package/src/index.ts +496 -1
  84. package/src/lib/api-client.ts +497 -19
  85. package/src/tools/audit-google-business-profile.ts +38 -0
  86. package/src/tools/create-oauth-client.ts +36 -0
  87. package/src/tools/create-post.ts +91 -94
  88. package/src/tools/create-posts-batch.ts +48 -0
  89. package/src/tools/create-signed-upload.ts +27 -0
  90. package/src/tools/create-webhook.ts +35 -0
  91. package/src/tools/delete-google-business-review-reply.ts +30 -0
  92. package/src/tools/delete-oauth-client.ts +23 -0
  93. package/src/tools/delete-post-group.ts +17 -0
  94. package/src/tools/delete-webhook.ts +18 -0
  95. package/src/tools/disconnect-account.ts +30 -0
  96. package/src/tools/generate-video.ts +38 -0
  97. package/src/tools/get-connect-link.ts +56 -0
  98. package/src/tools/get-google-business-review-link.ts +30 -0
  99. package/src/tools/get-platform-schema.ts +52 -0
  100. package/src/tools/get-post-missing.ts +17 -0
  101. package/src/tools/get-video-job.ts +36 -0
  102. package/src/tools/get-video-options.ts +30 -0
  103. package/src/tools/get-x-posting-quota.ts +25 -0
  104. package/src/tools/list-activity.ts +51 -0
  105. package/src/tools/list-google-business-reviews.ts +43 -0
  106. package/src/tools/list-oauth-clients.ts +18 -0
  107. package/src/tools/list-platforms.ts +25 -0
  108. package/src/tools/list-posts.ts +3 -2
  109. package/src/tools/list-webhooks.ts +30 -0
  110. package/src/tools/reply-google-business-review.ts +32 -0
  111. package/src/tools/run-video-function.ts +32 -0
  112. package/src/tools/suggest-google-business-review-reply.ts +44 -0
  113. package/src/tools/test-webhook.ts +18 -0
  114. package/src/tools/trigger-platform-helper.ts +34 -0
  115. package/src/tools/update-oauth-client.ts +38 -0
  116. package/src/tools/update-post-release-id.ts +26 -0
  117. package/src/tools/update-post-status.ts +31 -0
  118. package/src/tools/update-post.ts +1 -1
  119. package/src/tools/update-webhook.ts +37 -0
  120. package/src/tools/upload-media-from-url.ts +33 -0
  121. package/src/tools/webhook-events.ts +16 -0
package/src/index.ts CHANGED
@@ -4,25 +4,58 @@ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
4
4
  import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
5
5
  import { PosterlyClient } from './lib/api-client.js';
6
6
  import { listAccountsTool } from './tools/list-accounts.js';
7
+ import { disconnectAccountTool } from './tools/disconnect-account.js';
7
8
  import { listBrandsTool } from './tools/list-brands.js';
8
9
  import { getBrandTool } from './tools/get-brand.js';
9
10
  import { listBrandAccountsTool } from './tools/list-brand-accounts.js';
10
11
  import { getBrandProfileTool } from './tools/get-brand-profile.js';
11
12
  import { createPostTool } from './tools/create-post.js';
13
+ import { createPostsBatchTool } from './tools/create-posts-batch.js';
12
14
  import { findSlotTool } from './tools/find-slot.js';
13
15
  import { listPostsTool } from './tools/list-posts.js';
14
16
  import { uploadMediaTool } from './tools/upload-media.js';
15
17
  import { getPostTool } from './tools/get-post.js';
18
+ import { getPostMissingTool } from './tools/get-post-missing.js';
16
19
  import { updatePostTool } from './tools/update-post.js';
20
+ import { updatePostStatusTool } from './tools/update-post-status.js';
21
+ import { updatePostReleaseIdTool } from './tools/update-post-release-id.js';
17
22
  import { deletePostTool } from './tools/delete-post.js';
23
+ import { deletePostGroupTool } from './tools/delete-post-group.js';
18
24
  import { whoamiTool } from './tools/whoami.js';
19
25
  import { generateImageTool } from './tools/generate-image.js';
26
+ import { getVideoOptionsTool } from './tools/get-video-options.js';
27
+ import { runVideoFunctionTool } from './tools/run-video-function.js';
28
+ import { generateVideoTool } from './tools/generate-video.js';
29
+ import { getVideoJobTool } from './tools/get-video-job.js';
20
30
  import { getAccountAnalyticsTool } from './tools/get-account-analytics.js';
21
31
  import { getPostAnalyticsTool } from './tools/get-post-analytics.js';
32
+ import { listGoogleBusinessReviewsTool } from './tools/list-google-business-reviews.js';
33
+ import { getGoogleBusinessReviewLinkTool } from './tools/get-google-business-review-link.js';
34
+ import { auditGoogleBusinessProfileTool } from './tools/audit-google-business-profile.js';
35
+ import { suggestGoogleBusinessReviewReplyTool } from './tools/suggest-google-business-review-reply.js';
36
+ import { replyGoogleBusinessReviewTool } from './tools/reply-google-business-review.js';
37
+ import { deleteGoogleBusinessReviewReplyTool } from './tools/delete-google-business-review-reply.js';
38
+ import { listActivityTool } from './tools/list-activity.js';
39
+ import { listWebhooksTool } from './tools/list-webhooks.js';
40
+ import { createWebhookTool } from './tools/create-webhook.js';
41
+ import { updateWebhookTool } from './tools/update-webhook.js';
42
+ import { deleteWebhookTool } from './tools/delete-webhook.js';
43
+ import { testWebhookTool } from './tools/test-webhook.js';
44
+ import { listPlatformsTool } from './tools/list-platforms.js';
45
+ import { getPlatformSchemaTool } from './tools/get-platform-schema.js';
46
+ import { triggerPlatformHelperTool } from './tools/trigger-platform-helper.js';
47
+ import { getXPostingQuotaTool } from './tools/get-x-posting-quota.js';
48
+ import { createSignedUploadTool } from './tools/create-signed-upload.js';
49
+ import { uploadMediaFromUrlTool } from './tools/upload-media-from-url.js';
50
+ import { getConnectLinkTool } from './tools/get-connect-link.js';
51
+ import { listOAuthClientsTool } from './tools/list-oauth-clients.js';
52
+ import { createOAuthClientTool } from './tools/create-oauth-client.js';
53
+ import { updateOAuthClientTool } from './tools/update-oauth-client.js';
54
+ import { deleteOAuthClientTool } from './tools/delete-oauth-client.js';
22
55
 
23
56
  const server = new McpServer({
24
57
  name: 'posterly',
25
- version: '0.8.0',
58
+ version: '0.19.0',
26
59
  });
27
60
 
28
61
  let client: PosterlyClient;
@@ -63,6 +96,132 @@ server.tool(
63
96
  }
64
97
  );
65
98
 
99
+ server.tool(
100
+ disconnectAccountTool.name,
101
+ disconnectAccountTool.description,
102
+ disconnectAccountTool.inputSchema.shape,
103
+ async (input) => {
104
+ try {
105
+ const text = await disconnectAccountTool.execute(client, input as any);
106
+ return { content: [{ type: 'text' as const, text }] };
107
+ } catch (err: any) {
108
+ return { content: [{ type: 'text' as const, text: `Error: ${err.message}` }], isError: true };
109
+ }
110
+ }
111
+ );
112
+
113
+ server.tool(
114
+ getConnectLinkTool.name,
115
+ getConnectLinkTool.description,
116
+ getConnectLinkTool.inputSchema.shape,
117
+ async (input) => {
118
+ try {
119
+ const text = await getConnectLinkTool.execute(client, input as any);
120
+ return { content: [{ type: 'text' as const, text }] };
121
+ } catch (err: any) {
122
+ return { content: [{ type: 'text' as const, text: `Error: ${err.message}` }], isError: true };
123
+ }
124
+ }
125
+ );
126
+
127
+ server.tool(
128
+ listOAuthClientsTool.name,
129
+ listOAuthClientsTool.description,
130
+ listOAuthClientsTool.inputSchema.shape,
131
+ async () => {
132
+ try {
133
+ const text = await listOAuthClientsTool.execute(client);
134
+ return { content: [{ type: 'text' as const, text }] };
135
+ } catch (err: any) {
136
+ return { content: [{ type: 'text' as const, text: `Error: ${err.message}` }], isError: true };
137
+ }
138
+ }
139
+ );
140
+
141
+ server.tool(
142
+ createOAuthClientTool.name,
143
+ createOAuthClientTool.description,
144
+ createOAuthClientTool.inputSchema.shape,
145
+ async (input) => {
146
+ try {
147
+ const text = await createOAuthClientTool.execute(client, input as any);
148
+ return { content: [{ type: 'text' as const, text }] };
149
+ } catch (err: any) {
150
+ return { content: [{ type: 'text' as const, text: `Error: ${err.message}` }], isError: true };
151
+ }
152
+ }
153
+ );
154
+
155
+ server.tool(
156
+ updateOAuthClientTool.name,
157
+ updateOAuthClientTool.description,
158
+ updateOAuthClientTool.inputSchema.shape,
159
+ async (input) => {
160
+ try {
161
+ const text = await updateOAuthClientTool.execute(client, input as any);
162
+ return { content: [{ type: 'text' as const, text }] };
163
+ } catch (err: any) {
164
+ return { content: [{ type: 'text' as const, text: `Error: ${err.message}` }], isError: true };
165
+ }
166
+ }
167
+ );
168
+
169
+ server.tool(
170
+ deleteOAuthClientTool.name,
171
+ deleteOAuthClientTool.description,
172
+ deleteOAuthClientTool.inputSchema.shape,
173
+ async (input) => {
174
+ try {
175
+ const text = await deleteOAuthClientTool.execute(client, input as any);
176
+ return { content: [{ type: 'text' as const, text }] };
177
+ } catch (err: any) {
178
+ return { content: [{ type: 'text' as const, text: `Error: ${err.message}` }], isError: true };
179
+ }
180
+ }
181
+ );
182
+
183
+ server.tool(
184
+ listPlatformsTool.name,
185
+ listPlatformsTool.description,
186
+ listPlatformsTool.inputSchema.shape,
187
+ async (input) => {
188
+ try {
189
+ const text = await listPlatformsTool.execute(client, input as any);
190
+ return { content: [{ type: 'text' as const, text }] };
191
+ } catch (err: any) {
192
+ return { content: [{ type: 'text' as const, text: `Error: ${err.message}` }], isError: true };
193
+ }
194
+ }
195
+ );
196
+
197
+ server.tool(
198
+ getPlatformSchemaTool.name,
199
+ getPlatformSchemaTool.description,
200
+ getPlatformSchemaTool.inputSchema.shape,
201
+ async (input) => {
202
+ try {
203
+ const text = await getPlatformSchemaTool.execute(client, input as any);
204
+ return { content: [{ type: 'text' as const, text }] };
205
+ } catch (err: any) {
206
+ return { content: [{ type: 'text' as const, text: `Error: ${err.message}` }], isError: true };
207
+ }
208
+ }
209
+ );
210
+
211
+ server.tool(
212
+ triggerPlatformHelperTool.name,
213
+ triggerPlatformHelperTool.description,
214
+ triggerPlatformHelperTool.inputSchema.shape,
215
+ async (input) => {
216
+ try {
217
+ const text = await triggerPlatformHelperTool.execute(client, input as any);
218
+ return { content: [{ type: 'text' as const, text }] };
219
+ } catch (err: any) {
220
+ return { content: [{ type: 'text' as const, text: `Error: ${err.message}` }], isError: true };
221
+ }
222
+ }
223
+ );
224
+
66
225
  server.tool(
67
226
  listBrandsTool.name,
68
227
  listBrandsTool.description,
@@ -133,6 +292,20 @@ server.tool(
133
292
  }
134
293
  );
135
294
 
295
+ server.tool(
296
+ createPostsBatchTool.name,
297
+ createPostsBatchTool.description,
298
+ createPostsBatchTool.inputSchema.shape,
299
+ async (input) => {
300
+ try {
301
+ const text = await createPostsBatchTool.execute(client, input as any);
302
+ return { content: [{ type: 'text' as const, text }] };
303
+ } catch (err: any) {
304
+ return { content: [{ type: 'text' as const, text: `Error: ${err.message}` }], isError: true };
305
+ }
306
+ }
307
+ );
308
+
136
309
  server.tool(
137
310
  findSlotTool.name,
138
311
  findSlotTool.description,
@@ -175,6 +348,90 @@ server.tool(
175
348
  }
176
349
  );
177
350
 
351
+ server.tool(
352
+ uploadMediaFromUrlTool.name,
353
+ uploadMediaFromUrlTool.description,
354
+ uploadMediaFromUrlTool.inputSchema.shape,
355
+ async (input) => {
356
+ try {
357
+ const text = await uploadMediaFromUrlTool.execute(client, input as any);
358
+ return { content: [{ type: 'text' as const, text }] };
359
+ } catch (err: any) {
360
+ return { content: [{ type: 'text' as const, text: `Error: ${err.message}` }], isError: true };
361
+ }
362
+ }
363
+ );
364
+
365
+ server.tool(
366
+ createSignedUploadTool.name,
367
+ createSignedUploadTool.description,
368
+ createSignedUploadTool.inputSchema.shape,
369
+ async (input) => {
370
+ try {
371
+ const text = await createSignedUploadTool.execute(client, input as any);
372
+ return { content: [{ type: 'text' as const, text }] };
373
+ } catch (err: any) {
374
+ return { content: [{ type: 'text' as const, text: `Error: ${err.message}` }], isError: true };
375
+ }
376
+ }
377
+ );
378
+
379
+ server.tool(
380
+ getVideoOptionsTool.name,
381
+ getVideoOptionsTool.description,
382
+ getVideoOptionsTool.inputSchema.shape,
383
+ async () => {
384
+ try {
385
+ const text = await getVideoOptionsTool.execute(client);
386
+ return { content: [{ type: 'text' as const, text }] };
387
+ } catch (err: any) {
388
+ return { content: [{ type: 'text' as const, text: `Error: ${err.message}` }], isError: true };
389
+ }
390
+ }
391
+ );
392
+
393
+ server.tool(
394
+ runVideoFunctionTool.name,
395
+ runVideoFunctionTool.description,
396
+ runVideoFunctionTool.inputSchema.shape,
397
+ async (input) => {
398
+ try {
399
+ const text = await runVideoFunctionTool.execute(client, input as any);
400
+ return { content: [{ type: 'text' as const, text }] };
401
+ } catch (err: any) {
402
+ return { content: [{ type: 'text' as const, text: `Error: ${err.message}` }], isError: true };
403
+ }
404
+ }
405
+ );
406
+
407
+ server.tool(
408
+ generateVideoTool.name,
409
+ generateVideoTool.description,
410
+ generateVideoTool.inputSchema.shape,
411
+ async (input) => {
412
+ try {
413
+ const text = await generateVideoTool.execute(client, input as any);
414
+ return { content: [{ type: 'text' as const, text }] };
415
+ } catch (err: any) {
416
+ return { content: [{ type: 'text' as const, text: `Error: ${err.message}` }], isError: true };
417
+ }
418
+ }
419
+ );
420
+
421
+ server.tool(
422
+ getVideoJobTool.name,
423
+ getVideoJobTool.description,
424
+ getVideoJobTool.inputSchema.shape,
425
+ async (input) => {
426
+ try {
427
+ const text = await getVideoJobTool.execute(client, input as any);
428
+ return { content: [{ type: 'text' as const, text }] };
429
+ } catch (err: any) {
430
+ return { content: [{ type: 'text' as const, text: `Error: ${err.message}` }], isError: true };
431
+ }
432
+ }
433
+ );
434
+
178
435
  server.tool(
179
436
  generateImageTool.name,
180
437
  generateImageTool.description,
@@ -203,6 +460,20 @@ server.tool(
203
460
  }
204
461
  );
205
462
 
463
+ server.tool(
464
+ getPostMissingTool.name,
465
+ getPostMissingTool.description,
466
+ getPostMissingTool.inputSchema.shape,
467
+ async (input) => {
468
+ try {
469
+ const text = await getPostMissingTool.execute(client, input as any);
470
+ return { content: [{ type: 'text' as const, text }] };
471
+ } catch (err: any) {
472
+ return { content: [{ type: 'text' as const, text: `Error: ${err.message}` }], isError: true };
473
+ }
474
+ }
475
+ );
476
+
206
477
  server.tool(
207
478
  updatePostTool.name,
208
479
  updatePostTool.description,
@@ -217,6 +488,34 @@ server.tool(
217
488
  }
218
489
  );
219
490
 
491
+ server.tool(
492
+ updatePostStatusTool.name,
493
+ updatePostStatusTool.description,
494
+ updatePostStatusTool.inputSchema.shape,
495
+ async (input) => {
496
+ try {
497
+ const text = await updatePostStatusTool.execute(client, input as any);
498
+ return { content: [{ type: 'text' as const, text }] };
499
+ } catch (err: any) {
500
+ return { content: [{ type: 'text' as const, text: `Error: ${err.message}` }], isError: true };
501
+ }
502
+ }
503
+ );
504
+
505
+ server.tool(
506
+ updatePostReleaseIdTool.name,
507
+ updatePostReleaseIdTool.description,
508
+ updatePostReleaseIdTool.inputSchema.shape,
509
+ async (input) => {
510
+ try {
511
+ const text = await updatePostReleaseIdTool.execute(client, input as any);
512
+ return { content: [{ type: 'text' as const, text }] };
513
+ } catch (err: any) {
514
+ return { content: [{ type: 'text' as const, text: `Error: ${err.message}` }], isError: true };
515
+ }
516
+ }
517
+ );
518
+
220
519
  server.tool(
221
520
  deletePostTool.name,
222
521
  deletePostTool.description,
@@ -231,6 +530,20 @@ server.tool(
231
530
  }
232
531
  );
233
532
 
533
+ server.tool(
534
+ deletePostGroupTool.name,
535
+ deletePostGroupTool.description,
536
+ deletePostGroupTool.inputSchema.shape,
537
+ async (input) => {
538
+ try {
539
+ const text = await deletePostGroupTool.execute(client, input as any);
540
+ return { content: [{ type: 'text' as const, text }] };
541
+ } catch (err: any) {
542
+ return { content: [{ type: 'text' as const, text: `Error: ${err.message}` }], isError: true };
543
+ }
544
+ }
545
+ );
546
+
234
547
  server.tool(
235
548
  getAccountAnalyticsTool.name,
236
549
  getAccountAnalyticsTool.description,
@@ -259,6 +572,188 @@ server.tool(
259
572
  }
260
573
  );
261
574
 
575
+ server.tool(
576
+ listGoogleBusinessReviewsTool.name,
577
+ listGoogleBusinessReviewsTool.description,
578
+ listGoogleBusinessReviewsTool.inputSchema.shape,
579
+ async (input) => {
580
+ try {
581
+ const text = await listGoogleBusinessReviewsTool.execute(client, input as any);
582
+ return { content: [{ type: 'text' as const, text }] };
583
+ } catch (err: any) {
584
+ return { content: [{ type: 'text' as const, text: `Error: ${err.message}` }], isError: true };
585
+ }
586
+ }
587
+ );
588
+
589
+ server.tool(
590
+ getGoogleBusinessReviewLinkTool.name,
591
+ getGoogleBusinessReviewLinkTool.description,
592
+ getGoogleBusinessReviewLinkTool.inputSchema.shape,
593
+ async (input) => {
594
+ try {
595
+ const text = await getGoogleBusinessReviewLinkTool.execute(client, input as any);
596
+ return { content: [{ type: 'text' as const, text }] };
597
+ } catch (err: any) {
598
+ return { content: [{ type: 'text' as const, text: `Error: ${err.message}` }], isError: true };
599
+ }
600
+ }
601
+ );
602
+
603
+ server.tool(
604
+ auditGoogleBusinessProfileTool.name,
605
+ auditGoogleBusinessProfileTool.description,
606
+ auditGoogleBusinessProfileTool.inputSchema.shape,
607
+ async (input) => {
608
+ try {
609
+ const text = await auditGoogleBusinessProfileTool.execute(client, input as any);
610
+ return { content: [{ type: 'text' as const, text }] };
611
+ } catch (err: any) {
612
+ return { content: [{ type: 'text' as const, text: `Error: ${err.message}` }], isError: true };
613
+ }
614
+ }
615
+ );
616
+
617
+ server.tool(
618
+ suggestGoogleBusinessReviewReplyTool.name,
619
+ suggestGoogleBusinessReviewReplyTool.description,
620
+ suggestGoogleBusinessReviewReplyTool.inputSchema.shape,
621
+ async (input) => {
622
+ try {
623
+ const text = await suggestGoogleBusinessReviewReplyTool.execute(client, input as any);
624
+ return { content: [{ type: 'text' as const, text }] };
625
+ } catch (err: any) {
626
+ return { content: [{ type: 'text' as const, text: `Error: ${err.message}` }], isError: true };
627
+ }
628
+ }
629
+ );
630
+
631
+ server.tool(
632
+ replyGoogleBusinessReviewTool.name,
633
+ replyGoogleBusinessReviewTool.description,
634
+ replyGoogleBusinessReviewTool.inputSchema.shape,
635
+ async (input) => {
636
+ try {
637
+ const text = await replyGoogleBusinessReviewTool.execute(client, input as any);
638
+ return { content: [{ type: 'text' as const, text }] };
639
+ } catch (err: any) {
640
+ return { content: [{ type: 'text' as const, text: `Error: ${err.message}` }], isError: true };
641
+ }
642
+ }
643
+ );
644
+
645
+ server.tool(
646
+ deleteGoogleBusinessReviewReplyTool.name,
647
+ deleteGoogleBusinessReviewReplyTool.description,
648
+ deleteGoogleBusinessReviewReplyTool.inputSchema.shape,
649
+ async (input) => {
650
+ try {
651
+ const text = await deleteGoogleBusinessReviewReplyTool.execute(client, input as any);
652
+ return { content: [{ type: 'text' as const, text }] };
653
+ } catch (err: any) {
654
+ return { content: [{ type: 'text' as const, text: `Error: ${err.message}` }], isError: true };
655
+ }
656
+ }
657
+ );
658
+
659
+ server.tool(
660
+ listActivityTool.name,
661
+ listActivityTool.description,
662
+ listActivityTool.inputSchema.shape,
663
+ async (input) => {
664
+ try {
665
+ const text = await listActivityTool.execute(client, input as any);
666
+ return { content: [{ type: 'text' as const, text }] };
667
+ } catch (err: any) {
668
+ return { content: [{ type: 'text' as const, text: `Error: ${err.message}` }], isError: true };
669
+ }
670
+ }
671
+ );
672
+
673
+ server.tool(
674
+ listWebhooksTool.name,
675
+ listWebhooksTool.description,
676
+ listWebhooksTool.inputSchema.shape,
677
+ async (input) => {
678
+ try {
679
+ const text = await listWebhooksTool.execute(client, input as any);
680
+ return { content: [{ type: 'text' as const, text }] };
681
+ } catch (err: any) {
682
+ return { content: [{ type: 'text' as const, text: `Error: ${err.message}` }], isError: true };
683
+ }
684
+ }
685
+ );
686
+
687
+ server.tool(
688
+ createWebhookTool.name,
689
+ createWebhookTool.description,
690
+ createWebhookTool.inputSchema.shape,
691
+ async (input) => {
692
+ try {
693
+ const text = await createWebhookTool.execute(client, input as any);
694
+ return { content: [{ type: 'text' as const, text }] };
695
+ } catch (err: any) {
696
+ return { content: [{ type: 'text' as const, text: `Error: ${err.message}` }], isError: true };
697
+ }
698
+ }
699
+ );
700
+
701
+ server.tool(
702
+ updateWebhookTool.name,
703
+ updateWebhookTool.description,
704
+ updateWebhookTool.inputSchema.shape,
705
+ async (input) => {
706
+ try {
707
+ const text = await updateWebhookTool.execute(client, input as any);
708
+ return { content: [{ type: 'text' as const, text }] };
709
+ } catch (err: any) {
710
+ return { content: [{ type: 'text' as const, text: `Error: ${err.message}` }], isError: true };
711
+ }
712
+ }
713
+ );
714
+
715
+ server.tool(
716
+ deleteWebhookTool.name,
717
+ deleteWebhookTool.description,
718
+ deleteWebhookTool.inputSchema.shape,
719
+ async (input) => {
720
+ try {
721
+ const text = await deleteWebhookTool.execute(client, input as any);
722
+ return { content: [{ type: 'text' as const, text }] };
723
+ } catch (err: any) {
724
+ return { content: [{ type: 'text' as const, text: `Error: ${err.message}` }], isError: true };
725
+ }
726
+ }
727
+ );
728
+
729
+ server.tool(
730
+ testWebhookTool.name,
731
+ testWebhookTool.description,
732
+ testWebhookTool.inputSchema.shape,
733
+ async (input) => {
734
+ try {
735
+ const text = await testWebhookTool.execute(client, input as any);
736
+ return { content: [{ type: 'text' as const, text }] };
737
+ } catch (err: any) {
738
+ return { content: [{ type: 'text' as const, text: `Error: ${err.message}` }], isError: true };
739
+ }
740
+ }
741
+ );
742
+
743
+ server.tool(
744
+ getXPostingQuotaTool.name,
745
+ getXPostingQuotaTool.description,
746
+ getXPostingQuotaTool.inputSchema.shape,
747
+ async (input) => {
748
+ try {
749
+ const text = await getXPostingQuotaTool.execute(client, input as any);
750
+ return { content: [{ type: 'text' as const, text }] };
751
+ } catch (err: any) {
752
+ return { content: [{ type: 'text' as const, text: `Error: ${err.message}` }], isError: true };
753
+ }
754
+ }
755
+ );
756
+
262
757
  // Start the server
263
758
  async function main() {
264
759
  const transport = new StdioServerTransport();