@exileum/meta-mcp 5.0.0 → 7.0.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 (86) hide show
  1. package/README.md +83 -12
  2. package/dist/config.d.ts +10 -8
  3. package/dist/config.d.ts.map +1 -1
  4. package/dist/config.js +65 -8
  5. package/dist/config.js.map +1 -1
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +11 -59
  8. package/dist/index.js.map +1 -1
  9. package/dist/register-all.d.ts +4 -0
  10. package/dist/register-all.d.ts.map +1 -0
  11. package/dist/register-all.js +41 -0
  12. package/dist/register-all.js.map +1 -0
  13. package/dist/resources/instagram.d.ts.map +1 -1
  14. package/dist/resources/instagram.js +18 -12
  15. package/dist/resources/instagram.js.map +1 -1
  16. package/dist/resources/threads.d.ts.map +1 -1
  17. package/dist/resources/threads.js +18 -12
  18. package/dist/resources/threads.js.map +1 -1
  19. package/dist/schemas.d.ts +14 -0
  20. package/dist/schemas.d.ts.map +1 -1
  21. package/dist/schemas.js +14 -0
  22. package/dist/schemas.js.map +1 -1
  23. package/dist/services/meta-client.d.ts +101 -5
  24. package/dist/services/meta-client.d.ts.map +1 -1
  25. package/dist/services/meta-client.js +273 -69
  26. package/dist/services/meta-client.js.map +1 -1
  27. package/dist/tools/annotations.d.ts +6 -0
  28. package/dist/tools/annotations.d.ts.map +1 -0
  29. package/dist/tools/annotations.js +27 -0
  30. package/dist/tools/annotations.js.map +1 -0
  31. package/dist/tools/instagram/comments.d.ts.map +1 -1
  32. package/dist/tools/instagram/comments.js +64 -33
  33. package/dist/tools/instagram/comments.js.map +1 -1
  34. package/dist/tools/instagram/hashtags.d.ts.map +1 -1
  35. package/dist/tools/instagram/hashtags.js +37 -18
  36. package/dist/tools/instagram/hashtags.js.map +1 -1
  37. package/dist/tools/instagram/media.d.ts.map +1 -1
  38. package/dist/tools/instagram/media.js +47 -24
  39. package/dist/tools/instagram/media.js.map +1 -1
  40. package/dist/tools/instagram/mentions.d.ts.map +1 -1
  41. package/dist/tools/instagram/mentions.js +21 -10
  42. package/dist/tools/instagram/mentions.js.map +1 -1
  43. package/dist/tools/instagram/messaging.d.ts.map +1 -1
  44. package/dist/tools/instagram/messaging.js +64 -27
  45. package/dist/tools/instagram/messaging.js.map +1 -1
  46. package/dist/tools/instagram/profile.d.ts.map +1 -1
  47. package/dist/tools/instagram/profile.js +54 -31
  48. package/dist/tools/instagram/profile.js.map +1 -1
  49. package/dist/tools/instagram/publishing.d.ts.map +1 -1
  50. package/dist/tools/instagram/publishing.js +83 -57
  51. package/dist/tools/instagram/publishing.js.map +1 -1
  52. package/dist/tools/meta/auth.d.ts.map +1 -1
  53. package/dist/tools/meta/auth.js +47 -21
  54. package/dist/tools/meta/auth.js.map +1 -1
  55. package/dist/tools/threads/insights.d.ts.map +1 -1
  56. package/dist/tools/threads/insights.js +21 -10
  57. package/dist/tools/threads/insights.js.map +1 -1
  58. package/dist/tools/threads/media.d.ts.map +1 -1
  59. package/dist/tools/threads/media.js +38 -23
  60. package/dist/tools/threads/media.js.map +1 -1
  61. package/dist/tools/threads/mentions.d.ts.map +1 -1
  62. package/dist/tools/threads/mentions.js +12 -6
  63. package/dist/tools/threads/mentions.js.map +1 -1
  64. package/dist/tools/threads/profile.d.ts.map +1 -1
  65. package/dist/tools/threads/profile.js +8 -2
  66. package/dist/tools/threads/profile.js.map +1 -1
  67. package/dist/tools/threads/publishing.d.ts +7 -0
  68. package/dist/tools/threads/publishing.d.ts.map +1 -1
  69. package/dist/tools/threads/publishing.js +168 -76
  70. package/dist/tools/threads/publishing.js.map +1 -1
  71. package/dist/tools/threads/replies.d.ts.map +1 -1
  72. package/dist/tools/threads/replies.js +48 -27
  73. package/dist/tools/threads/replies.js.map +1 -1
  74. package/dist/utils/container.d.ts +4 -2
  75. package/dist/utils/container.d.ts.map +1 -1
  76. package/dist/utils/container.js +8 -3
  77. package/dist/utils/container.js.map +1 -1
  78. package/dist/utils/errors.d.ts +2 -0
  79. package/dist/utils/errors.d.ts.map +1 -1
  80. package/dist/utils/errors.js +27 -10
  81. package/dist/utils/errors.js.map +1 -1
  82. package/dist/utils/response.d.ts +11 -0
  83. package/dist/utils/response.d.ts.map +1 -0
  84. package/dist/utils/response.js +6 -0
  85. package/dist/utils/response.js.map +1 -0
  86. package/package.json +10 -1
@@ -1,7 +1,9 @@
1
1
  import { z } from "zod";
2
- import { httpsUrl } from "../../schemas.js";
3
- import { waitForIgContainer } from "../../utils/container.js";
2
+ import { httpsUrl, metaId } from "../../schemas.js";
3
+ import { waitForIgContainer, IMAGE_PROCESSING_TIMEOUT, VIDEO_PROCESSING_TIMEOUT } from "../../utils/container.js";
4
4
  import { formatErrorResponse } from "../../utils/errors.js";
5
+ import { formatResponse } from "../../utils/response.js";
6
+ import { READ_ONLY_TOOL, WRITE_TOOL } from "../annotations.js";
5
7
  const collaboratorUsername = z
6
8
  .string()
7
9
  .trim()
@@ -20,13 +22,17 @@ export const collaboratorsSchema = z
20
22
  .describe("Optional. Up to 3 unique Instagram usernames to invite as collaborators. Per Instagram Graph API: supported for Feed image, Reels, and Carousels — not supported for Stories. Leading '@' characters and surrounding whitespace are auto-stripped before the uniqueness check.");
21
23
  export function registerIgPublishingTools(server, client) {
22
24
  // ─── ig_publish_photo ────────────────────────────────────────
23
- server.tool("ig_publish_photo", "Publish a photo to Instagram. Two-step process: creates container then publishes. Requires image_url (publicly accessible HTTPS URL).", {
24
- image_url: httpsUrl.describe("Public HTTPS URL of the image (JPEG only)"),
25
- caption: z.string().optional().describe("Post caption (max 2200 chars)"),
26
- location_id: z.string().optional().describe("Facebook Page location ID"),
27
- user_tags: z.string().optional().describe("JSON array of user tags: [{username, x, y}]"),
28
- alt_text: z.string().optional().describe("Alt text for accessibility"),
29
- collaborators: collaboratorsSchema,
25
+ server.registerTool("ig_publish_photo", {
26
+ description: "Publish a photo to Instagram. Two-step process: creates container then publishes. Requires image_url (publicly accessible HTTPS URL).",
27
+ inputSchema: {
28
+ image_url: httpsUrl.describe("Public HTTPS URL of the image (JPEG only)"),
29
+ caption: z.string().optional().describe("Post caption (max 2200 chars)"),
30
+ location_id: z.string().optional().describe("Facebook Page location ID"),
31
+ user_tags: z.string().optional().describe("JSON array of user tags: [{username, x, y}]"),
32
+ alt_text: z.string().optional().describe("Alt text for accessibility"),
33
+ collaborators: collaboratorsSchema,
34
+ },
35
+ annotations: WRITE_TOOL,
30
36
  }, async ({ image_url, caption, location_id, user_tags, alt_text, collaborators }) => {
31
37
  try {
32
38
  const params = { image_url };
@@ -51,19 +57,23 @@ export function registerIgPublishingTools(server, client) {
51
57
  const { data, rateLimit } = await client.ig("POST", `/${client.igUserId}/media_publish`, {
52
58
  creation_id: containerId,
53
59
  });
54
- return { content: [{ type: "text", text: JSON.stringify({ ...data, _rateLimit: rateLimit }, null, 2) }] };
60
+ return formatResponse(data, rateLimit);
55
61
  }
56
62
  catch (error) {
57
63
  return formatErrorResponse(error, "Publish photo");
58
64
  }
59
65
  });
60
66
  // ─── ig_publish_video ────────────────────────────────────────
61
- server.tool("ig_publish_video", "[DEPRECATED] Use ig_publish_reel instead. Publishes via media_type=REELS under the hood; the legacy VIDEO media_type was deprecated by Meta on Nov 9, 2023. Kept for backward compatibility — new integrations should use ig_publish_reel which exposes Reels-specific options (cover_url, share_to_feed, alt_text).", {
62
- video_url: httpsUrl.describe("Public HTTPS URL of the video"),
63
- caption: z.string().optional().describe("Post caption"),
64
- thumb_offset: z.number().optional().describe("Thumbnail offset in ms"),
65
- location_id: z.string().optional().describe("Facebook Page location ID"),
66
- collaborators: collaboratorsSchema,
67
+ server.registerTool("ig_publish_video", {
68
+ description: "[DEPRECATED] Use ig_publish_reel instead. Publishes via media_type=REELS under the hood; the legacy VIDEO media_type was deprecated by Meta on Nov 9, 2023. Kept for backward compatibility — new integrations should use ig_publish_reel which exposes Reels-specific options (cover_url, share_to_feed, alt_text).",
69
+ inputSchema: {
70
+ video_url: httpsUrl.describe("Public HTTPS URL of the video"),
71
+ caption: z.string().optional().describe("Post caption"),
72
+ thumb_offset: z.number().optional().describe("Thumbnail offset in ms"),
73
+ location_id: z.string().optional().describe("Facebook Page location ID"),
74
+ collaborators: collaboratorsSchema,
75
+ },
76
+ annotations: WRITE_TOOL,
67
77
  }, async ({ video_url, caption, thumb_offset, location_id, collaborators }) => {
68
78
  try {
69
79
  // share_to_feed: true preserves the legacy feed placement of the deprecated
@@ -81,37 +91,41 @@ export function registerIgPublishingTools(server, client) {
81
91
  if (typeof container.id !== "string")
82
92
  throw new Error("Container creation did not return a valid id");
83
93
  const containerId = container.id;
84
- await waitForIgContainer(client, containerId, 120);
94
+ await waitForIgContainer(client, containerId, VIDEO_PROCESSING_TIMEOUT);
85
95
  const { data, rateLimit } = await client.ig("POST", `/${client.igUserId}/media_publish`, {
86
96
  creation_id: containerId,
87
97
  });
88
- return { content: [{ type: "text", text: JSON.stringify({ ...data, _rateLimit: rateLimit }, null, 2) }] };
98
+ return formatResponse(data, rateLimit);
89
99
  }
90
100
  catch (error) {
91
101
  return formatErrorResponse(error, "Publish video");
92
102
  }
93
103
  });
94
104
  // ─── ig_publish_carousel ─────────────────────────────────────
95
- server.tool("ig_publish_carousel", "Publish a carousel (album) post with 2-10 images/videos. Each item needs a `url` (JPEG image or MP4 video) and a `type` (IMAGE or VIDEO).", {
96
- items: z.array(z.discriminatedUnion("type", [
97
- z.object({
98
- type: z.literal("IMAGE"),
99
- url: httpsUrl.describe("Public HTTPS URL of the image (JPEG only)"),
100
- alt_text: z.string().optional().describe("Alt text for accessibility (IMAGE items only)"),
101
- }),
102
- z.object({
103
- type: z.literal("VIDEO"),
104
- url: httpsUrl.describe("Public HTTPS URL of the video"),
105
- }),
106
- ])).min(2).max(10).describe("Array of media items"),
107
- caption: z.string().optional().describe("Post caption"),
108
- location_id: z.string().optional().describe("Facebook Page location ID"),
109
- collaborators: collaboratorsSchema,
105
+ server.registerTool("ig_publish_carousel", {
106
+ description: "Publish a carousel (album) post with 2-10 images/videos. Each item needs a `url` (JPEG image or MP4 video) and a `type` (IMAGE or VIDEO).",
107
+ inputSchema: {
108
+ items: z.array(z.discriminatedUnion("type", [
109
+ z.object({
110
+ type: z.literal("IMAGE"),
111
+ url: httpsUrl.describe("Public HTTPS URL of the image (JPEG only)"),
112
+ alt_text: z.string().optional().describe("Alt text for accessibility (IMAGE items only)"),
113
+ }),
114
+ z.object({
115
+ type: z.literal("VIDEO"),
116
+ url: httpsUrl.describe("Public HTTPS URL of the video"),
117
+ }),
118
+ ])).min(2).max(10).describe("Array of media items"),
119
+ caption: z.string().optional().describe("Post caption"),
120
+ location_id: z.string().optional().describe("Facebook Page location ID"),
121
+ collaborators: collaboratorsSchema,
122
+ },
123
+ annotations: WRITE_TOOL,
110
124
  }, async ({ items, caption, location_id, collaborators }) => {
111
125
  try {
112
- // Step 1: Create child containers
113
- const childIds = [];
114
- for (const item of items) {
126
+ // Children are independent create them in parallel. Errors propagate
127
+ // unwrapped so formatErrorResponse keeps MetaApiError categorization.
128
+ const childIds = await Promise.all(items.map(async (item) => {
115
129
  const params = { is_carousel_item: true };
116
130
  if (item.type === "IMAGE") {
117
131
  params.image_url = item.url;
@@ -126,9 +140,9 @@ export function registerIgPublishingTools(server, client) {
126
140
  if (typeof child.id !== "string")
127
141
  throw new Error("Container creation did not return a valid id");
128
142
  const childId = child.id;
129
- await waitForIgContainer(client, childId, item.type === "VIDEO" ? 120 : 30);
130
- childIds.push(childId);
131
- }
143
+ await waitForIgContainer(client, childId, item.type === "VIDEO" ? VIDEO_PROCESSING_TIMEOUT : IMAGE_PROCESSING_TIMEOUT);
144
+ return childId;
145
+ }));
132
146
  // Step 2: Create carousel container
133
147
  const carouselParams = {
134
148
  media_type: "CAROUSEL",
@@ -150,20 +164,24 @@ export function registerIgPublishingTools(server, client) {
150
164
  const { data, rateLimit } = await client.ig("POST", `/${client.igUserId}/media_publish`, {
151
165
  creation_id: carouselId,
152
166
  });
153
- return { content: [{ type: "text", text: JSON.stringify({ ...data, _rateLimit: rateLimit }, null, 2) }] };
167
+ return formatResponse(data, rateLimit);
154
168
  }
155
169
  catch (error) {
156
170
  return formatErrorResponse(error, "Publish carousel");
157
171
  }
158
172
  });
159
173
  // ─── ig_publish_reel ─────────────────────────────────────────
160
- server.tool("ig_publish_reel", "Publish a Reel (short video). Waits for video processing.", {
161
- video_url: httpsUrl.describe("Public HTTPS URL of the video"),
162
- caption: z.string().optional().describe("Reel caption"),
163
- cover_url: httpsUrl.optional().describe("Custom cover image HTTPS URL"),
164
- share_to_feed: z.boolean().optional().describe("Also share to feed (default true)"),
165
- thumb_offset: z.number().optional().describe("Thumbnail offset in ms"),
166
- collaborators: collaboratorsSchema,
174
+ server.registerTool("ig_publish_reel", {
175
+ description: "Publish a Reel (short video). Waits for video processing.",
176
+ inputSchema: {
177
+ video_url: httpsUrl.describe("Public HTTPS URL of the video"),
178
+ caption: z.string().optional().describe("Reel caption"),
179
+ cover_url: httpsUrl.optional().describe("Custom cover image HTTPS URL"),
180
+ share_to_feed: z.boolean().optional().describe("Also share to feed (default true)"),
181
+ thumb_offset: z.number().optional().describe("Thumbnail offset in ms"),
182
+ collaborators: collaboratorsSchema,
183
+ },
184
+ annotations: WRITE_TOOL,
167
185
  }, async ({ video_url, caption, cover_url, share_to_feed, thumb_offset, collaborators }) => {
168
186
  try {
169
187
  const params = { video_url, media_type: "REELS" };
@@ -181,20 +199,24 @@ export function registerIgPublishingTools(server, client) {
181
199
  if (typeof container.id !== "string")
182
200
  throw new Error("Container creation did not return a valid id");
183
201
  const containerId = container.id;
184
- await waitForIgContainer(client, containerId, 120);
202
+ await waitForIgContainer(client, containerId, VIDEO_PROCESSING_TIMEOUT);
185
203
  const { data, rateLimit } = await client.ig("POST", `/${client.igUserId}/media_publish`, {
186
204
  creation_id: containerId,
187
205
  });
188
- return { content: [{ type: "text", text: JSON.stringify({ ...data, _rateLimit: rateLimit }, null, 2) }] };
206
+ return formatResponse(data, rateLimit);
189
207
  }
190
208
  catch (error) {
191
209
  return formatErrorResponse(error, "Publish reel");
192
210
  }
193
211
  });
194
212
  // ─── ig_publish_story ────────────────────────────────────────
195
- server.tool("ig_publish_story", "Publish a Story (image or video). Stories disappear after 24 hours.", {
196
- media_type: z.enum(["IMAGE", "VIDEO"]).describe("Story media type"),
197
- media_url: httpsUrl.describe("Public HTTPS URL of the media"),
213
+ server.registerTool("ig_publish_story", {
214
+ description: "Publish a Story (image or video). Stories disappear after 24 hours.",
215
+ inputSchema: {
216
+ media_type: z.enum(["IMAGE", "VIDEO"]).describe("Story media type"),
217
+ media_url: httpsUrl.describe("Public HTTPS URL of the media"),
218
+ },
219
+ annotations: WRITE_TOOL,
198
220
  }, async ({ media_type, media_url }) => {
199
221
  try {
200
222
  const params = { media_type: "STORIES" };
@@ -208,25 +230,29 @@ export function registerIgPublishingTools(server, client) {
208
230
  if (typeof container.id !== "string")
209
231
  throw new Error("Container creation did not return a valid id");
210
232
  const containerId = container.id;
211
- await waitForIgContainer(client, containerId, media_type === "VIDEO" ? 120 : 30);
233
+ await waitForIgContainer(client, containerId, media_type === "VIDEO" ? VIDEO_PROCESSING_TIMEOUT : IMAGE_PROCESSING_TIMEOUT);
212
234
  const { data, rateLimit } = await client.ig("POST", `/${client.igUserId}/media_publish`, {
213
235
  creation_id: containerId,
214
236
  });
215
- return { content: [{ type: "text", text: JSON.stringify({ ...data, _rateLimit: rateLimit }, null, 2) }] };
237
+ return formatResponse(data, rateLimit);
216
238
  }
217
239
  catch (error) {
218
240
  return formatErrorResponse(error, "Publish story");
219
241
  }
220
242
  });
221
243
  // ─── ig_get_container_status ─────────────────────────────────
222
- server.tool("ig_get_container_status", "Check the processing status of a media container (useful for videos).", {
223
- container_id: z.string().describe("Container ID to check"),
244
+ server.registerTool("ig_get_container_status", {
245
+ description: "Check the processing status of a media container (useful for videos).",
246
+ inputSchema: {
247
+ container_id: metaId.describe("Container ID to check"),
248
+ },
249
+ annotations: READ_ONLY_TOOL,
224
250
  }, async ({ container_id }) => {
225
251
  try {
226
252
  const { data, rateLimit } = await client.ig("GET", `/${container_id}`, {
227
253
  fields: "id,status,status_code",
228
254
  });
229
- return { content: [{ type: "text", text: JSON.stringify({ ...data, _rateLimit: rateLimit }, null, 2) }] };
255
+ return formatResponse(data, rateLimit);
230
256
  }
231
257
  catch (error) {
232
258
  return formatErrorResponse(error, "Get container status");
@@ -1 +1 @@
1
- {"version":3,"file":"publishing.js","sourceRoot":"","sources":["../../../src/tools/instagram/publishing.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"publishing.js","sourceRoot":"","sources":["../../../src/tools/instagram/publishing.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/tools/meta/auth.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAI3D,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CAkHjF"}
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/tools/meta/auth.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAM3D,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CAoIjF"}
@@ -1,67 +1,89 @@
1
1
  import { z } from "zod";
2
2
  import { httpsUrl } from "../../schemas.js";
3
3
  import { formatErrorResponse } from "../../utils/errors.js";
4
+ import { formatResponse } from "../../utils/response.js";
5
+ import { READ_ONLY_TOOL, WRITE_TOOL, WRITE_IDEMPOTENT_TOOL } from "../annotations.js";
4
6
  export function registerMetaAuthTools(server, client) {
5
7
  // ─── meta_exchange_token ─────────────────────────────────────
6
- server.tool("meta_exchange_token", "Exchange a short-lived token for a long-lived token (valid ~60 days). Uses platform-specific endpoints: Instagram (graph.instagram.com) or Threads (graph.threads.net). Requires META_APP_SECRET.", {
7
- short_lived_token: z.string().describe("Short-lived access token to exchange"),
8
- platform: z.enum(["instagram", "threads"]).describe("Target platform: 'instagram' or 'threads'"),
8
+ server.registerTool("meta_exchange_token", {
9
+ description: "Exchange a short-lived token for a long-lived token (valid ~60 days). Uses platform-specific endpoints: Instagram (graph.instagram.com) or Threads (graph.threads.net). Requires META_APP_SECRET.",
10
+ inputSchema: {
11
+ short_lived_token: z.string().describe("Short-lived access token to exchange"),
12
+ platform: z.enum(["instagram", "threads"]).describe("Target platform: 'instagram' or 'threads'"),
13
+ },
14
+ annotations: WRITE_TOOL,
9
15
  }, async ({ short_lived_token, platform }) => {
10
16
  try {
11
17
  const { data, rateLimit } = platform === "threads"
12
18
  ? await client.threadsExchangeToken(short_lived_token)
13
19
  : await client.igExchangeToken(short_lived_token);
14
- return { content: [{ type: "text", text: JSON.stringify({ ...data, _rateLimit: rateLimit }, null, 2) }] };
20
+ return formatResponse(data, rateLimit);
15
21
  }
16
22
  catch (error) {
17
23
  return formatErrorResponse(error, "Token exchange");
18
24
  }
19
25
  });
20
26
  // ─── meta_refresh_token ──────────────────────────────────────
21
- server.tool("meta_refresh_token", "Refresh a long-lived token before it expires (must be at least 24h old). Uses platform-specific endpoints: Instagram (graph.instagram.com) or Threads (graph.threads.net). Returns a new long-lived token valid for 60 days.", {
22
- long_lived_token: z.string().describe("Current long-lived access token to refresh"),
23
- platform: z.enum(["instagram", "threads"]).describe("Target platform: 'instagram' or 'threads'"),
27
+ server.registerTool("meta_refresh_token", {
28
+ description: "Refresh a long-lived token before it expires (must be at least 24h old). Uses platform-specific endpoints: Instagram (graph.instagram.com) or Threads (graph.threads.net). Returns a new long-lived token valid for 60 days.",
29
+ inputSchema: {
30
+ long_lived_token: z.string().describe("Current long-lived access token to refresh"),
31
+ platform: z.enum(["instagram", "threads"]).describe("Target platform: 'instagram' or 'threads'"),
32
+ },
33
+ annotations: WRITE_TOOL,
24
34
  }, async ({ long_lived_token, platform }) => {
25
35
  try {
26
36
  const { data, rateLimit } = platform === "threads"
27
37
  ? await client.threadsRefreshToken(long_lived_token)
28
38
  : await client.igRefreshToken(long_lived_token);
29
- return { content: [{ type: "text", text: JSON.stringify({ ...data, _rateLimit: rateLimit }, null, 2) }] };
39
+ return formatResponse(data, rateLimit);
30
40
  }
31
41
  catch (error) {
32
42
  return formatErrorResponse(error, "Token refresh");
33
43
  }
34
44
  });
35
45
  // ─── meta_debug_token ────────────────────────────────────────
36
- server.tool("meta_debug_token", "Debug/inspect an access token to check validity, expiration, scopes and associated user.", {
37
- input_token: z.string().describe("Access token to inspect"),
46
+ server.registerTool("meta_debug_token", {
47
+ description: "Debug/inspect an access token to check validity, expiration, scopes and associated user.",
48
+ inputSchema: {
49
+ input_token: z.string().describe("Access token to inspect"),
50
+ },
51
+ annotations: READ_ONLY_TOOL,
38
52
  }, async ({ input_token }) => {
39
53
  try {
40
54
  const { data, rateLimit } = await client.debugToken(input_token);
41
- return { content: [{ type: "text", text: JSON.stringify({ ...data, _rateLimit: rateLimit }, null, 2) }] };
55
+ return formatResponse(data, rateLimit);
42
56
  }
43
57
  catch (error) {
44
58
  return formatErrorResponse(error, "Token debug");
45
59
  }
46
60
  });
47
61
  // ─── meta_get_app_info ───────────────────────────────────────
48
- server.tool("meta_get_app_info", "Get Meta App basic information (name, category, namespace, etc.).", {}, async () => {
62
+ server.registerTool("meta_get_app_info", {
63
+ description: "Get Meta App basic information (name, category, namespace, etc.).",
64
+ inputSchema: {},
65
+ annotations: READ_ONLY_TOOL,
66
+ }, async () => {
49
67
  try {
50
68
  const { data, rateLimit } = await client.meta("GET", `/app`, {
51
69
  fields: "id,name,category,namespace,link,company,description",
52
70
  });
53
- return { content: [{ type: "text", text: JSON.stringify({ ...data, _rateLimit: rateLimit }, null, 2) }] };
71
+ return formatResponse(data, rateLimit);
54
72
  }
55
73
  catch (error) {
56
74
  return formatErrorResponse(error, "Get app info");
57
75
  }
58
76
  });
59
77
  // ─── meta_subscribe_webhook ──────────────────────────────────
60
- server.tool("meta_subscribe_webhook", "Subscribe to webhook notifications for an object (e.g., 'instagram', 'page'). Requires META_APP_ID and META_APP_SECRET.", {
61
- object: z.enum(["instagram", "page", "user", "permissions"]).describe("Object type to subscribe to"),
62
- callback_url: httpsUrl.describe("HTTPS webhook endpoint URL"),
63
- verify_token: z.string().describe("Verification token for the webhook"),
64
- fields: z.string().describe("Comma-separated list of fields to subscribe (e.g., 'messages,feed')"),
78
+ server.registerTool("meta_subscribe_webhook", {
79
+ description: "Subscribe to webhook notifications for an object (e.g., 'instagram', 'page'). Requires META_APP_ID and META_APP_SECRET.",
80
+ inputSchema: {
81
+ object: z.enum(["instagram", "page", "user", "permissions"]).describe("Object type to subscribe to"),
82
+ callback_url: httpsUrl.describe("HTTPS webhook endpoint URL"),
83
+ verify_token: z.string().describe("Verification token for the webhook"),
84
+ fields: z.string().describe("Comma-separated list of fields to subscribe (e.g., 'messages,feed')"),
85
+ },
86
+ annotations: WRITE_IDEMPOTENT_TOOL,
65
87
  }, async ({ object, callback_url, verify_token, fields }) => {
66
88
  try {
67
89
  const { data, rateLimit } = await client.meta("POST", `/app/subscriptions`, {
@@ -70,17 +92,21 @@ export function registerMetaAuthTools(server, client) {
70
92
  verify_token,
71
93
  fields,
72
94
  });
73
- return { content: [{ type: "text", text: JSON.stringify({ ...data, _rateLimit: rateLimit }, null, 2) }] };
95
+ return formatResponse(data, rateLimit);
74
96
  }
75
97
  catch (error) {
76
98
  return formatErrorResponse(error, "Webhook subscribe");
77
99
  }
78
100
  });
79
101
  // ─── meta_get_webhook_subscriptions ──────────────────────────
80
- server.tool("meta_get_webhook_subscriptions", "List current webhook subscriptions for the Meta App.", {}, async () => {
102
+ server.registerTool("meta_get_webhook_subscriptions", {
103
+ description: "List current webhook subscriptions for the Meta App.",
104
+ inputSchema: {},
105
+ annotations: READ_ONLY_TOOL,
106
+ }, async () => {
81
107
  try {
82
108
  const { data, rateLimit } = await client.meta("GET", `/app/subscriptions`);
83
- return { content: [{ type: "text", text: JSON.stringify({ ...data, _rateLimit: rateLimit }, null, 2) }] };
109
+ return formatResponse(data, rateLimit);
84
110
  }
85
111
  catch (error) {
86
112
  return formatErrorResponse(error, "Get webhooks");
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/tools/meta/auth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/tools/meta/auth.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"insights.d.ts","sourceRoot":"","sources":["../../../src/tools/threads/insights.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAK3D,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CAyCvF"}
1
+ {"version":3,"file":"insights.d.ts","sourceRoot":"","sources":["../../../src/tools/threads/insights.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,UAAU,EAAc,MAAM,+BAA+B,CAAC;AAQvE,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CA+CvF"}
@@ -1,26 +1,37 @@
1
1
  import { z } from "zod";
2
+ import { metaId } from "../../schemas.js";
2
3
  import { formatErrorResponse } from "../../utils/errors.js";
4
+ import { formatResponse } from "../../utils/response.js";
5
+ import { READ_ONLY_TOOL } from "../annotations.js";
3
6
  const POST_INSIGHTS_DEFAULT_METRICS = "views,likes,replies,reposts,quotes,shares";
4
7
  export function registerThreadsInsightTools(server, client) {
5
8
  // ─── threads_get_post_insights ───────────────────────────────
6
- server.tool("threads_get_post_insights", `Get insights/analytics for a specific Threads post (${POST_INSIGHTS_DEFAULT_METRICS.replaceAll(",", ", ")}).`, {
7
- post_id: z.string().describe("Threads post ID"),
8
- metric: z.string().optional().default(POST_INSIGHTS_DEFAULT_METRICS).describe(`Comma-separated metrics (default: ${POST_INSIGHTS_DEFAULT_METRICS})`),
9
+ server.registerTool("threads_get_post_insights", {
10
+ description: `Get insights/analytics for a specific Threads post (${POST_INSIGHTS_DEFAULT_METRICS.replaceAll(",", ", ")}).`,
11
+ inputSchema: {
12
+ post_id: metaId.describe("Threads post ID"),
13
+ metric: z.string().optional().default(POST_INSIGHTS_DEFAULT_METRICS).describe(`Comma-separated metrics (default: ${POST_INSIGHTS_DEFAULT_METRICS})`),
14
+ },
15
+ annotations: READ_ONLY_TOOL,
9
16
  }, async ({ post_id, metric }) => {
10
17
  try {
11
18
  const { data, rateLimit } = await client.threads("GET", `/${post_id}/insights`, { metric });
12
- return { content: [{ type: "text", text: JSON.stringify({ ...data, _rateLimit: rateLimit }, null, 2) }] };
19
+ return formatResponse(data, rateLimit);
13
20
  }
14
21
  catch (error) {
15
22
  return formatErrorResponse(error, "Get post insights");
16
23
  }
17
24
  });
18
25
  // ─── threads_get_user_insights ───────────────────────────────
19
- server.tool("threads_get_user_insights", "Get account-level Threads insights (views, likes, replies, reposts, quotes, clicks, followers, follower demographics). Requires period parameter.", {
20
- metric: z.string().describe("Comma-separated metrics: views,likes,replies,reposts,quotes,clicks,followers_count,follower_demographics"),
21
- period: z.enum(["day", "lifetime"]).optional().default("day").describe("Time aggregation period. Use 'day' for time-series metrics (views, likes, replies, reposts, quotes, followers_count). Use 'lifetime' only for follower_demographics."),
22
- since: z.string().optional().describe("Start date (Unix timestamp). Required when period is 'day'."),
23
- until: z.string().optional().describe("End date (Unix timestamp). Required when period is 'day'."),
26
+ server.registerTool("threads_get_user_insights", {
27
+ description: "Get account-level Threads insights (views, likes, replies, reposts, quotes, clicks, followers, follower demographics). Requires period parameter.",
28
+ inputSchema: {
29
+ metric: z.string().describe("Comma-separated metrics: views,likes,replies,reposts,quotes,clicks,followers_count,follower_demographics"),
30
+ period: z.enum(["day", "lifetime"]).optional().default("day").describe("Time aggregation period. Use 'day' for time-series metrics (views, likes, replies, reposts, quotes, followers_count). Use 'lifetime' only for follower_demographics."),
31
+ since: z.string().optional().describe("Start date (Unix timestamp). Required when period is 'day'."),
32
+ until: z.string().optional().describe("End date (Unix timestamp). Required when period is 'day'."),
33
+ },
34
+ annotations: READ_ONLY_TOOL,
24
35
  }, async ({ metric, period, since, until }) => {
25
36
  try {
26
37
  const params = { metric, period };
@@ -29,7 +40,7 @@ export function registerThreadsInsightTools(server, client) {
29
40
  if (until)
30
41
  params.until = until;
31
42
  const { data, rateLimit } = await client.threads("GET", `/${client.threadsUserId}/threads_insights`, params);
32
- return { content: [{ type: "text", text: JSON.stringify({ ...data, _rateLimit: rateLimit }, null, 2) }] };
43
+ return formatResponse(data, rateLimit);
33
44
  }
34
45
  catch (error) {
35
46
  return formatErrorResponse(error, "Get user insights");
@@ -1 +1 @@
1
- {"version":3,"file":"insights.js","sourceRoot":"","sources":["../../../src/tools/threads/insights.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"insights.js","sourceRoot":"","sources":["../../../src/tools/threads/insights.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,MAAM,6BAA6B,GAAG,2CAA2C,CAAC;AAElF,MAAM,UAAU,2BAA2B,CAAC,MAAiB,EAAE,MAAkB;IAC/E,gEAAgE;IAChE,MAAM,CAAC,YAAY,CACjB,2BAA2B,EAC3B;QACE,WAAW,EAAE,uDAAuD,6BAA6B,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI;QAC3H,WAAW,EAAE;YACX,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC;YAC3C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC,QAAQ,CAAC,qCAAqC,6BAA6B,GAAG,CAAC;SACrJ;QACD,WAAW,EAAE,cAAc;KAC5B,EACD,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE;QAC5B,IAAI,CAAC;YACH,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,OAAO,WAAW,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;YAC5F,OAAO,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACzC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,mBAAmB,CAAC,KAAK,EAAE,mBAAmB,CAAC,CAAC;QACzD,CAAC;IACH,CAAC,CACF,CAAC;IAEF,gEAAgE;IAChE,MAAM,CAAC,YAAY,CACjB,2BAA2B,EAC3B;QACE,WAAW,EAAE,mJAAmJ;QAChK,WAAW,EAAE;YACX,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0GAA0G,CAAC;YACvI,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,sKAAsK,CAAC;YAC9O,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6DAA6D,CAAC;YACpG,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2DAA2D,CAAC;SACnG;QACD,WAAW,EAAE,cAAc;KAC5B,EACD,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE;QACzC,IAAI,CAAC;YACH,MAAM,MAAM,GAAe,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;YAC9C,IAAI,KAAK;gBAAE,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;YAChC,IAAI,KAAK;gBAAE,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;YAChC,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,MAAM,CAAC,aAAa,mBAAmB,EAAE,MAAM,CAAC,CAAC;YAC7G,OAAO,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACzC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,mBAAmB,CAAC,KAAK,EAAE,mBAAmB,CAAC,CAAC;QACzD,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"media.d.ts","sourceRoot":"","sources":["../../../src/tools/threads/media.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAsB3D,eAAO,MAAM,oBAAoB,uEAQ9B,CAAC;AAEJ,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CAmFrF"}
1
+ {"version":3,"file":"media.d.ts","sourceRoot":"","sources":["../../../src/tools/threads/media.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,UAAU,EAAc,MAAM,+BAA+B,CAAC;AAyBvE,eAAO,MAAM,oBAAoB,uEAQ9B,CAAC;AAEJ,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CA4FrF"}