@exileum/meta-mcp 4.0.0 → 6.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 (76) hide show
  1. package/README.md +81 -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 +8 -1
  8. package/dist/index.js.map +1 -1
  9. package/dist/resources/instagram.d.ts.map +1 -1
  10. package/dist/resources/instagram.js +19 -13
  11. package/dist/resources/instagram.js.map +1 -1
  12. package/dist/resources/threads.d.ts.map +1 -1
  13. package/dist/resources/threads.js +19 -13
  14. package/dist/resources/threads.js.map +1 -1
  15. package/dist/schemas.d.ts +14 -0
  16. package/dist/schemas.d.ts.map +1 -1
  17. package/dist/schemas.js +14 -0
  18. package/dist/schemas.js.map +1 -1
  19. package/dist/services/meta-client.d.ts +47 -5
  20. package/dist/services/meta-client.d.ts.map +1 -1
  21. package/dist/services/meta-client.js +120 -27
  22. package/dist/services/meta-client.js.map +1 -1
  23. package/dist/tools/instagram/comments.d.ts.map +1 -1
  24. package/dist/tools/instagram/comments.js +35 -29
  25. package/dist/tools/instagram/comments.js.map +1 -1
  26. package/dist/tools/instagram/hashtags.d.ts.map +1 -1
  27. package/dist/tools/instagram/hashtags.js +19 -11
  28. package/dist/tools/instagram/hashtags.js.map +1 -1
  29. package/dist/tools/instagram/media.d.ts.map +1 -1
  30. package/dist/tools/instagram/media.js +17 -15
  31. package/dist/tools/instagram/media.js.map +1 -1
  32. package/dist/tools/instagram/mentions.d.ts.map +1 -1
  33. package/dist/tools/instagram/mentions.js +16 -12
  34. package/dist/tools/instagram/mentions.js.map +1 -1
  35. package/dist/tools/instagram/messaging.d.ts.map +1 -1
  36. package/dist/tools/instagram/messaging.js +34 -24
  37. package/dist/tools/instagram/messaging.js.map +1 -1
  38. package/dist/tools/instagram/profile.d.ts +2 -0
  39. package/dist/tools/instagram/profile.d.ts.map +1 -1
  40. package/dist/tools/instagram/profile.js +46 -21
  41. package/dist/tools/instagram/profile.js.map +1 -1
  42. package/dist/tools/instagram/publishing.d.ts.map +1 -1
  43. package/dist/tools/instagram/publishing.js +14 -13
  44. package/dist/tools/instagram/publishing.js.map +1 -1
  45. package/dist/tools/meta/auth.d.ts.map +1 -1
  46. package/dist/tools/meta/auth.js +7 -6
  47. package/dist/tools/meta/auth.js.map +1 -1
  48. package/dist/tools/threads/insights.d.ts.map +1 -1
  49. package/dist/tools/threads/insights.js +8 -8
  50. package/dist/tools/threads/insights.js.map +1 -1
  51. package/dist/tools/threads/media.d.ts.map +1 -1
  52. package/dist/tools/threads/media.js +12 -12
  53. package/dist/tools/threads/media.js.map +1 -1
  54. package/dist/tools/threads/mentions.d.ts.map +1 -1
  55. package/dist/tools/threads/mentions.js +2 -1
  56. package/dist/tools/threads/mentions.js.map +1 -1
  57. package/dist/tools/threads/profile.d.ts.map +1 -1
  58. package/dist/tools/threads/profile.js +2 -28
  59. package/dist/tools/threads/profile.js.map +1 -1
  60. package/dist/tools/threads/publishing.d.ts +7 -0
  61. package/dist/tools/threads/publishing.d.ts.map +1 -1
  62. package/dist/tools/threads/publishing.js +47 -35
  63. package/dist/tools/threads/publishing.js.map +1 -1
  64. package/dist/tools/threads/replies.d.ts +2 -0
  65. package/dist/tools/threads/replies.d.ts.map +1 -1
  66. package/dist/tools/threads/replies.js +32 -17
  67. package/dist/tools/threads/replies.js.map +1 -1
  68. package/dist/utils/container.d.ts +4 -2
  69. package/dist/utils/container.d.ts.map +1 -1
  70. package/dist/utils/container.js +8 -3
  71. package/dist/utils/container.js.map +1 -1
  72. package/dist/utils/errors.d.ts +38 -0
  73. package/dist/utils/errors.d.ts.map +1 -0
  74. package/dist/utils/errors.js +145 -0
  75. package/dist/utils/errors.js.map +1 -0
  76. package/package.json +10 -1
@@ -1,9 +1,10 @@
1
1
  import { z } from "zod";
2
- import { httpsUrl } from "../../schemas.js";
3
- import { waitForThreadsContainer } from "../../utils/container.js";
2
+ import { httpsUrl, metaId } from "../../schemas.js";
3
+ import { waitForThreadsContainer, IMAGE_PROCESSING_TIMEOUT, VIDEO_PROCESSING_TIMEOUT } from "../../utils/container.js";
4
+ import { formatErrorResponse, validationError } from "../../utils/errors.js";
4
5
  export const topicTagSchema = z.string().min(1).max(50).regex(/^[^.&]+$/, "Topic tags cannot contain periods or ampersands").optional().describe("Topic tag for the post (1-50 chars, no periods or ampersands)");
5
6
  export const shareToIgStorySchema = z.enum(["light", "dark"]).optional().describe("Cross-share this post to linked Instagram as a Story. 'light' = normal, 'dark' = dark mode. Requires threads_share_to_instagram permission and a linked Instagram account. The Threads post still publishes even if cross-share fails.");
6
- export const pollOptionsSchema = z.array(z.string().min(1).max(25)).min(2).max(4).optional().describe("Poll options (2-4 choices, each 1-25 chars). Creates a poll attachment.");
7
+ export const pollOptionsSchema = z.array(z.string().min(1).max(25)).min(2).max(4).optional().describe("Poll options (2-4 choices, each 1-25 chars). Creates a poll attachment. Cannot be combined with text_attachment, link_attachment, or gif_id+gif_provider.");
7
8
  export const textStylingEnum = z.enum(["bold", "italic", "highlight", "underline", "strikethrough"]);
8
9
  export const textAttachmentStylingSchema = z.array(z.object({
9
10
  offset: z.number().int().min(0).describe("Starting character position (0-based, automatically converted to UTF-8 byte offsets for the API)"),
@@ -11,6 +12,13 @@ export const textAttachmentStylingSchema = z.array(z.object({
11
12
  styles: z.array(textStylingEnum).min(1).describe("Styles to apply (bold, italic, highlight, underline, strikethrough)"),
12
13
  })).optional().describe("Text formatting for the text attachment. Ranges must not overlap.");
13
14
  export const allowlistedCountryCodesSchema = z.array(z.string().regex(/^[A-Za-z]{2}$/, "Must be an ISO 3166-1 alpha-2 country code (2 letters)")).min(1).optional().describe("ISO 3166-1 alpha-2 country codes (e.g., ['US','CA','GB']) restricting post visibility to those countries (geo-gating). Requires the account to be eligible — check `is_eligible_for_geo_gating` via `threads_get_profile`. The creator can always see their own posts regardless. Codes are normalized to uppercase and sent comma-joined (e.g., 'US,CA') as required by the API.");
15
+ export const replyControlSchema = z.enum([
16
+ "everyone",
17
+ "accounts_you_follow",
18
+ "mentioned_only",
19
+ "parent_post_author_only",
20
+ "followers_only",
21
+ ]).optional().describe("Who can reply to this post. One of: 'everyone' (default — anyone can reply), 'accounts_you_follow' (only profiles the author follows), 'mentioned_only' (only profiles @-mentioned in the post), 'parent_post_author_only' (only the author of the post being replied to — applies when this post is itself a reply, not a quote), or 'followers_only' (only the author's followers). See https://developers.facebook.com/docs/threads/reply-management/ for the authoritative list.");
14
22
  const POLL_OPTION_KEYS = ["option_a", "option_b", "option_c", "option_d"];
15
23
  function applyShareToIgStory(params, share_to_ig_story) {
16
24
  if (share_to_ig_story) {
@@ -26,42 +34,45 @@ function applyAllowlistedCountryCodes(params, codes) {
26
34
  }
27
35
  export function registerThreadsPublishingTools(server, client) {
28
36
  // ─── threads_publish_text ────────────────────────────────────
29
- server.tool("threads_publish_text", "Publish a text-only post on Threads. By default publishes in a single API call via auto_publish_text=true (faster and avoids the 4279009 'container not propagated' race condition). Supports optional link attachment, poll, GIF, topic tag, quote post, cross-share to Instagram Stories, geo-gating via allowlisted_country_codes, and text_attachment for long-form content (up to 10,000 chars with optional styling and link). text_attachment cannot be combined with poll_options or link_attachment. Set auto_publish=false to fall back to the legacy two-step create-then-publish flow.", {
37
+ server.tool("threads_publish_text", "Publish a text-only post on Threads. By default publishes in a single API call via auto_publish_text=true (faster and avoids the 4279009 'container not propagated' race condition). Supports optional link attachment, poll, GIF, topic tag, quote post, cross-share to Instagram Stories, geo-gating via allowlisted_country_codes, and text_attachment for long-form content (up to 10,000 chars with optional styling and link). Only one attachment type per post — text_attachment, poll_options, link_attachment, and gif_id+gif_provider are mutually exclusive. Set auto_publish=false to fall back to the legacy two-step create-then-publish flow.", {
30
38
  text: z.string().max(500).describe("Post text (max 500 chars)"),
31
- reply_control: z.enum(["everyone", "accounts_you_follow", "mentioned_only", "parent_post_author_only", "followers_only"]).optional().describe("Who can reply"),
32
- link_attachment: z.string().url().optional().describe("URL to attach as a link preview card (max 5 links per post). Cannot be combined with text_attachment."),
39
+ reply_control: replyControlSchema,
40
+ link_attachment: z.string().url().optional().describe("URL to attach as a link preview card (max 5 links per post). Cannot be combined with text_attachment, poll_options, or gif_id+gif_provider."),
33
41
  topic_tag: topicTagSchema,
34
42
  quote_post_id: z.string().optional().describe("ID of a post to quote"),
35
43
  poll_options: pollOptionsSchema,
36
44
  gif_id: z.string().min(1).optional().describe("GIPHY GIF ID. Must be provided together with gif_provider — providing only one returns an error."),
37
45
  gif_provider: z.enum(["GIPHY"]).optional().describe("GIF provider. Only GIPHY is currently supported. Must be provided together with gif_id — providing only one returns an error."),
38
- alt_text: z.string().max(1000).optional().describe("Alt text for accessibility (max 1000 chars)"),
39
46
  is_spoiler: z.boolean().optional().describe("Mark content as spoiler"),
40
47
  share_to_ig_story: shareToIgStorySchema,
41
48
  allowlisted_country_codes: allowlistedCountryCodesSchema,
42
- text_attachment: z.string().min(1).max(10000).optional().describe("Long-form text attachment (max 10,000 chars). Renders as expandable 'Read more' block beneath the primary text. Cannot be combined with poll_options or link_attachment."),
49
+ text_attachment: z.string().min(1).max(10000).optional().describe("Long-form text attachment (max 10,000 chars). Renders as expandable 'Read more' block beneath the primary text. Cannot be combined with poll_options, link_attachment, or gif_id+gif_provider."),
43
50
  text_attachment_link: z.string().url().optional().describe("URL to include inside the text attachment card. Requires text_attachment."),
44
51
  text_attachment_styling: textAttachmentStylingSchema,
45
52
  auto_publish: z.boolean().optional().default(true).describe("When true (default), combine container creation and publishing into a single API call via auto_publish_text=true — one HTTP request instead of two, and no risk of the 4279009 'container not propagated yet' race. Set to false to fall back to the legacy two-step flow (POST /threads, then POST /threads_publish)."),
46
- }, async ({ text, reply_control, link_attachment, topic_tag, quote_post_id, poll_options, gif_id, gif_provider, alt_text, is_spoiler, share_to_ig_story, allowlisted_country_codes, text_attachment, text_attachment_link, text_attachment_styling, auto_publish }) => {
53
+ alt_text: z.never("alt_text is not supported on text-only Threads posts (media_type=TEXT). Use threads_publish_image, threads_publish_video, or threads_publish_carousel for accessibility labels — those tools accept alt_text on IMAGE/VIDEO/CAROUSEL containers.").optional().describe("Reserved must be omitted. alt_text is only supported on image, video, and carousel posts; passing it here raises a Zod schema error."),
54
+ }, async ({ text, reply_control, link_attachment, topic_tag, quote_post_id, poll_options, gif_id, gif_provider, is_spoiler, share_to_ig_story, allowlisted_country_codes, text_attachment, text_attachment_link, text_attachment_styling, auto_publish }) => {
47
55
  try {
48
56
  // Validate mutual exclusions
49
57
  if (text_attachment && poll_options) {
50
- return { content: [{ type: "text", text: "text_attachment cannot be combined with poll_options" }], isError: true };
58
+ return validationError("text_attachment cannot be combined with poll_options");
51
59
  }
52
60
  if (text_attachment && link_attachment) {
53
- return { content: [{ type: "text", text: "text_attachment cannot be combined with link_attachment. Use text_attachment_link instead to include a link inside the text attachment." }], isError: true };
61
+ return validationError("text_attachment cannot be combined with link_attachment. Use text_attachment_link instead to include a link inside the text attachment.");
62
+ }
63
+ if (poll_options && link_attachment) {
64
+ return validationError("poll_options cannot be combined with link_attachment");
54
65
  }
55
66
  if (text_attachment_link && !text_attachment) {
56
- return { content: [{ type: "text", text: "text_attachment_link requires text_attachment" }], isError: true };
67
+ return validationError("text_attachment_link requires text_attachment");
57
68
  }
58
69
  if (text_attachment_styling && !text_attachment) {
59
- return { content: [{ type: "text", text: "text_attachment_styling requires text_attachment" }], isError: true };
70
+ return validationError("text_attachment_styling requires text_attachment");
60
71
  }
61
72
  if (text_attachment_styling) {
62
73
  for (const range of text_attachment_styling) {
63
74
  if (range.offset + range.length > text_attachment.length) {
64
- return { content: [{ type: "text", text: `text_attachment_styling range at offset ${range.offset} with length ${range.length} exceeds text_attachment length (${text_attachment.length})` }], isError: true };
75
+ return validationError(`text_attachment_styling range at offset ${range.offset} with length ${range.length} exceeds text_attachment length (${text_attachment.length})`);
65
76
  }
66
77
  }
67
78
  if (text_attachment_styling.length > 1) {
@@ -69,13 +80,16 @@ export function registerThreadsPublishingTools(server, client) {
69
80
  for (let i = 1; i < sorted.length; i++) {
70
81
  const prev = sorted[i - 1];
71
82
  if (sorted[i].offset < prev.offset + prev.length) {
72
- return { content: [{ type: "text", text: `text_attachment_styling ranges must not overlap: range at offset ${sorted[i].offset} overlaps with range at offset ${prev.offset}` }], isError: true };
83
+ return validationError(`text_attachment_styling ranges must not overlap: range at offset ${sorted[i].offset} overlaps with range at offset ${prev.offset}`);
73
84
  }
74
85
  }
75
86
  }
76
87
  }
77
88
  if ((gif_id && !gif_provider) || (!gif_id && gif_provider)) {
78
- return { content: [{ type: "text", text: "gif_id and gif_provider must be provided together (both or neither). Per the Threads Posts API, gif_attachment requires both the GIF ID and provider." }], isError: true };
89
+ return validationError("gif_id and gif_provider must be provided together (both or neither). Per the Threads Posts API, gif_attachment requires both the GIF ID and provider.");
90
+ }
91
+ if (gif_id && (text_attachment || poll_options || link_attachment)) {
92
+ return validationError("GIF attachment cannot be combined with text_attachment, poll_options, or link_attachment");
79
93
  }
80
94
  const params = { media_type: "TEXT", text };
81
95
  if (reply_control)
@@ -98,8 +112,6 @@ export function registerThreadsPublishingTools(server, client) {
98
112
  if (gif_id && gif_provider) {
99
113
  params.gif_attachment = JSON.stringify({ gif_id, provider: gif_provider });
100
114
  }
101
- if (alt_text)
102
- params.alt_text = alt_text;
103
115
  if (is_spoiler)
104
116
  params.is_spoiler_media = true;
105
117
  if (text_attachment) {
@@ -139,14 +151,14 @@ export function registerThreadsPublishingTools(server, client) {
139
151
  return { content: [{ type: "text", text: JSON.stringify({ ...data, _rateLimit: rateLimit }, null, 2) }] };
140
152
  }
141
153
  catch (error) {
142
- return { content: [{ type: "text", text: `Publish text failed: ${error instanceof Error ? error.message : String(error)}` }], isError: true };
154
+ return formatErrorResponse(error, "Publish text");
143
155
  }
144
156
  });
145
157
  // ─── threads_publish_image ───────────────────────────────────
146
158
  server.tool("threads_publish_image", "Publish an image post on Threads. Supports topic tag, quote post, alt text, spoiler flag, cross-share to Instagram Stories, and geo-gating via allowlisted_country_codes.", {
147
159
  image_url: httpsUrl.describe("Public HTTPS URL of the image (JPEG/PNG, max 8MB)"),
148
160
  text: z.string().max(500).optional().describe("Caption text"),
149
- reply_control: z.enum(["everyone", "accounts_you_follow", "mentioned_only", "parent_post_author_only", "followers_only"]).optional().describe("Who can reply"),
161
+ reply_control: replyControlSchema,
150
162
  topic_tag: topicTagSchema,
151
163
  quote_post_id: z.string().optional().describe("ID of a post to quote"),
152
164
  alt_text: z.string().max(1000).optional().describe("Alt text for accessibility (max 1000 chars)"),
@@ -181,14 +193,14 @@ export function registerThreadsPublishingTools(server, client) {
181
193
  return { content: [{ type: "text", text: JSON.stringify({ ...data, _rateLimit: rateLimit }, null, 2) }] };
182
194
  }
183
195
  catch (error) {
184
- return { content: [{ type: "text", text: `Publish image failed: ${error instanceof Error ? error.message : String(error)}` }], isError: true };
196
+ return formatErrorResponse(error, "Publish image");
185
197
  }
186
198
  });
187
199
  // ─── threads_publish_video ───────────────────────────────────
188
200
  server.tool("threads_publish_video", "Publish a video post on Threads. Waits for video processing. Supports topic tag, quote post, alt text, spoiler flag, cross-share to Instagram Stories, and geo-gating via allowlisted_country_codes. Note: cross-share to IG Stories may silently fail for video posts (the Threads post still publishes).", {
189
201
  video_url: httpsUrl.describe("Public HTTPS URL of the video (MP4/MOV, max 1GB, up to 5 min)"),
190
202
  text: z.string().max(500).optional().describe("Caption text"),
191
- reply_control: z.enum(["everyone", "accounts_you_follow", "mentioned_only", "parent_post_author_only", "followers_only"]).optional().describe("Who can reply"),
203
+ reply_control: replyControlSchema,
192
204
  topic_tag: topicTagSchema,
193
205
  quote_post_id: z.string().optional().describe("ID of a post to quote"),
194
206
  alt_text: z.string().max(1000).optional().describe("Alt text for accessibility (max 1000 chars)"),
@@ -216,14 +228,14 @@ export function registerThreadsPublishingTools(server, client) {
216
228
  if (typeof container.id !== "string")
217
229
  throw new Error("Container creation did not return a valid id");
218
230
  const containerId = container.id;
219
- await waitForThreadsContainer(client, containerId, 120);
231
+ await waitForThreadsContainer(client, containerId, VIDEO_PROCESSING_TIMEOUT);
220
232
  const { data, rateLimit } = await client.threads("POST", `/${client.threadsUserId}/threads_publish`, {
221
233
  creation_id: containerId,
222
234
  });
223
235
  return { content: [{ type: "text", text: JSON.stringify({ ...data, _rateLimit: rateLimit }, null, 2) }] };
224
236
  }
225
237
  catch (error) {
226
- return { content: [{ type: "text", text: `Publish video failed: ${error instanceof Error ? error.message : String(error)}` }], isError: true };
238
+ return formatErrorResponse(error, "Publish video");
227
239
  }
228
240
  });
229
241
  // ─── threads_publish_carousel ────────────────────────────────
@@ -234,7 +246,7 @@ export function registerThreadsPublishingTools(server, client) {
234
246
  alt_text: z.string().max(1000).optional().describe("Alt text for this item"),
235
247
  })).min(2).max(20).describe("Array of media items"),
236
248
  text: z.string().max(500).optional().describe("Caption text"),
237
- reply_control: z.enum(["everyone", "accounts_you_follow", "mentioned_only", "parent_post_author_only", "followers_only"]).optional().describe("Who can reply"),
249
+ reply_control: replyControlSchema,
238
250
  topic_tag: topicTagSchema,
239
251
  quote_post_id: z.string().optional().describe("ID of a post to quote"),
240
252
  share_to_ig_story: shareToIgStorySchema,
@@ -256,7 +268,7 @@ export function registerThreadsPublishingTools(server, client) {
256
268
  if (typeof child.id !== "string")
257
269
  throw new Error("Container creation did not return a valid id");
258
270
  const childId = child.id;
259
- await waitForThreadsContainer(client, childId, item.type === "VIDEO" ? 120 : 30);
271
+ await waitForThreadsContainer(client, childId, item.type === "VIDEO" ? VIDEO_PROCESSING_TIMEOUT : IMAGE_PROCESSING_TIMEOUT);
260
272
  childIds.push(childId);
261
273
  }
262
274
  const carouselParams = {
@@ -284,24 +296,24 @@ export function registerThreadsPublishingTools(server, client) {
284
296
  return { content: [{ type: "text", text: JSON.stringify({ ...data, _rateLimit: rateLimit }, null, 2) }] };
285
297
  }
286
298
  catch (error) {
287
- return { content: [{ type: "text", text: `Publish carousel failed: ${error instanceof Error ? error.message : String(error)}` }], isError: true };
299
+ return formatErrorResponse(error, "Publish carousel");
288
300
  }
289
301
  });
290
302
  // ─── threads_delete_post ──────────────────────────────────────
291
303
  server.tool("threads_delete_post", "Delete a Threads post. This action is irreversible. Rate limited to 100 deletions per 24 hours.", {
292
- post_id: z.string().describe("Threads post ID to delete"),
304
+ post_id: metaId.describe("Threads post ID to delete"),
293
305
  }, async ({ post_id }) => {
294
306
  try {
295
307
  const { data, rateLimit } = await client.threads("DELETE", `/${post_id}`);
296
308
  return { content: [{ type: "text", text: JSON.stringify({ success: true, ...data, _rateLimit: rateLimit }, null, 2) }] };
297
309
  }
298
310
  catch (error) {
299
- return { content: [{ type: "text", text: `Delete post failed: ${error instanceof Error ? error.message : String(error)}` }], isError: true };
311
+ return formatErrorResponse(error, "Delete post");
300
312
  }
301
313
  });
302
314
  // ─── threads_get_container_status ────────────────────────────
303
315
  server.tool("threads_get_container_status", "Check the processing status of a Threads media container. Only works with unpublished container IDs (returned from container creation endpoints) — not with published post IDs.", {
304
- container_id: z.string().describe("Unpublished container ID to check (from container creation, not a published post ID)"),
316
+ container_id: metaId.describe("Unpublished container ID to check (from container creation, not a published post ID)"),
305
317
  }, async ({ container_id }) => {
306
318
  try {
307
319
  const { data, rateLimit } = await client.threads("GET", `/${container_id}`, {
@@ -312,9 +324,9 @@ export function registerThreadsPublishingTools(server, client) {
312
324
  catch (error) {
313
325
  const msg = error instanceof Error ? error.message : String(error);
314
326
  if (msg.includes("nonexisting field")) {
315
- return { content: [{ type: "text", text: "This ID appears to be a published post, not an unpublished container. The status and error_message fields are only available on unpublished media containers (returned from container creation endpoints before calling threads_publish)." }], isError: true };
327
+ return validationError("This ID appears to be a published post, not an unpublished container. The status and error_message fields are only available on unpublished media containers (returned from container creation endpoints before calling threads_publish).");
316
328
  }
317
- return { content: [{ type: "text", text: `Get container status failed: ${msg}` }], isError: true };
329
+ return formatErrorResponse(error, "Get container status");
318
330
  }
319
331
  });
320
332
  // ─── threads_get_publishing_limit ────────────────────────────
@@ -326,19 +338,19 @@ export function registerThreadsPublishingTools(server, client) {
326
338
  return { content: [{ type: "text", text: JSON.stringify({ ...data, _rateLimit: rateLimit }, null, 2) }] };
327
339
  }
328
340
  catch (error) {
329
- return { content: [{ type: "text", text: `Get publishing limit failed: ${error instanceof Error ? error.message : String(error)}` }], isError: true };
341
+ return formatErrorResponse(error, "Get publishing limit");
330
342
  }
331
343
  });
332
344
  // ─── threads_repost ──────────────────────────────────────────
333
345
  server.tool("threads_repost", "Repost an existing Threads post to your own profile. Reposts appear under the Reposts tab on your profile. Requires the threads_content_publish permission. Note: this is a simple repost — for quote-reposts use threads_publish_text with quote_post_id.", {
334
- post_id: z.string().describe("Threads post ID to repost"),
346
+ post_id: metaId.describe("Threads post ID to repost"),
335
347
  }, async ({ post_id }) => {
336
348
  try {
337
349
  const { data, rateLimit } = await client.threads("POST", `/${post_id}/repost`, {});
338
350
  return { content: [{ type: "text", text: JSON.stringify({ ...data, _rateLimit: rateLimit }, null, 2) }] };
339
351
  }
340
352
  catch (error) {
341
- return { content: [{ type: "text", text: `Repost failed: ${error instanceof Error ? error.message : String(error)}` }], isError: true };
353
+ return formatErrorResponse(error, "Repost");
342
354
  }
343
355
  });
344
356
  }
@@ -1 +1 @@
1
- {"version":3,"file":"publishing.js","sourceRoot":"","sources":["../../../src/tools/threads/publishing.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"publishing.js","sourceRoot":"","sources":["../../../src/tools/threads/publishing.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,6 @@
1
1
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
2
  import { MetaClient } from "../../services/meta-client.js";
3
+ export declare const REPLIES_TOP_LEVEL_DEFAULT_FIELDS = "id,text,username,permalink,timestamp,media_type,media_url,has_replies,hide_status,root_post,replied_to,is_reply,is_quote_post,is_verified,profile_picture_url";
4
+ export declare const REPLIES_FULL_TREE_DEFAULT_FIELDS = "id,text,username,permalink,timestamp,media_type,media_url,has_replies,hide_status,root_post,replied_to,is_reply,is_quote_post";
3
5
  export declare function registerThreadsReplyTools(server: McpServer, client: MetaClient): void;
4
6
  //# sourceMappingURL=replies.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"replies.d.ts","sourceRoot":"","sources":["../../../src/tools/threads/replies.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAI3D,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CA+GrF"}
1
+ {"version":3,"file":"replies.d.ts","sourceRoot":"","sources":["../../../src/tools/threads/replies.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,UAAU,EAAc,MAAM,+BAA+B,CAAC;AAWvE,eAAO,MAAM,gCAAgC,kKAA2D,CAAC;AACzG,eAAO,MAAM,gCAAgC,kIAAsB,CAAC;AAEpE,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CA0HrF"}
@@ -1,18 +1,30 @@
1
1
  import { z } from "zod";
2
- import { httpsUrl } from "../../schemas.js";
3
- import { waitForThreadsContainer } from "../../utils/container.js";
2
+ import { httpsUrl, metaId } from "../../schemas.js";
3
+ import { waitForThreadsContainer, IMAGE_PROCESSING_TIMEOUT, VIDEO_PROCESSING_TIMEOUT } from "../../utils/container.js";
4
+ import { formatErrorResponse, validationError } from "../../utils/errors.js";
5
+ const REPLIES_BASE_FIELDS = "id,text,username,permalink,timestamp,media_type,media_url,has_replies,hide_status,root_post,replied_to,is_reply,is_quote_post";
6
+ // is_verified / profile_picture_url are documented as "Only available on direct
7
+ // replies." Populated for /{post}/replies (top_level), but undefined for nested
8
+ // entries returned by /{post}/conversation (full_tree) — keep them in the
9
+ // top_level default and drop from full_tree to avoid misleading sparse payloads.
10
+ export const REPLIES_TOP_LEVEL_DEFAULT_FIELDS = `${REPLIES_BASE_FIELDS},is_verified,profile_picture_url`;
11
+ export const REPLIES_FULL_TREE_DEFAULT_FIELDS = REPLIES_BASE_FIELDS;
4
12
  export function registerThreadsReplyTools(server, client) {
5
13
  // ─── threads_get_replies ─────────────────────────────────────
6
- server.tool("threads_get_replies", "Get replies for a specific Threads post. By default returns only top-level replies (mode='top_level', endpoint /{post}/replies). Set mode='full_tree' to get the entire conversation flattened — every reply at every nesting level (endpoint /{post}/conversation). Both modes share the same response shape; full_tree additionally populates root_post, replied_to, is_reply so the caller can reconstruct the tree.", {
7
- post_id: z.string().describe("Threads post ID to get replies for"),
14
+ server.tool("threads_get_replies", "Get replies for a specific Threads post. By default returns only top-level replies (mode='top_level', endpoint /{post}/replies). Set mode='full_tree' to get the entire conversation flattened — every reply at every nesting level (endpoint /{post}/conversation). Both modes share the same response shape; full_tree additionally populates root_post, replied_to, is_reply so the caller can reconstruct the tree. The default fields differ by mode: top_level requests is_verified and profile_picture_url (always populated for direct replies); full_tree drops them since they are 'Only available on direct replies' per the Threads Replies/Conversations docs and would be undefined for every nested entry. Pass an explicit fields override to re-request them in full_tree if needed.", {
15
+ post_id: metaId.describe("Threads post ID to get replies for"),
8
16
  mode: z.enum(["top_level", "full_tree"]).optional().describe("'top_level' (default) returns only direct replies; 'full_tree' returns the full conversation tree flattened"),
9
17
  reverse: z.boolean().optional().describe("Reverse chronological order"),
10
18
  limit: z.number().optional().describe("Number of replies"),
11
19
  after: z.string().optional().describe("Pagination cursor"),
12
- }, async ({ post_id, mode, reverse, limit, after }) => {
20
+ fields: z.string().min(1).optional().describe("Comma-separated fields override. Default depends on mode: top_level adds is_verified,profile_picture_url, full_tree omits them because they are 'Only available on direct replies' per the Threads Replies/Conversations docs."),
21
+ }, async ({ post_id, mode, reverse, limit, after, fields }) => {
13
22
  try {
23
+ const defaultFields = mode === "full_tree"
24
+ ? REPLIES_FULL_TREE_DEFAULT_FIELDS
25
+ : REPLIES_TOP_LEVEL_DEFAULT_FIELDS;
14
26
  const params = {
15
- fields: "id,text,username,permalink,timestamp,media_type,media_url,has_replies,hide_status,is_verified,profile_picture_url,root_post,replied_to,is_reply,is_quote_post",
27
+ fields: fields || defaultFields,
16
28
  };
17
29
  if (reverse !== undefined)
18
30
  params.reverse = reverse;
@@ -25,18 +37,21 @@ export function registerThreadsReplyTools(server, client) {
25
37
  return { content: [{ type: "text", text: JSON.stringify({ ...data, _rateLimit: rateLimit }, null, 2) }] };
26
38
  }
27
39
  catch (error) {
28
- return { content: [{ type: "text", text: `Get replies failed: ${error instanceof Error ? error.message : String(error)}` }], isError: true };
40
+ return formatErrorResponse(error, "Get replies");
29
41
  }
30
42
  });
31
43
  // ─── threads_reply ───────────────────────────────────────────
32
- server.tool("threads_reply", "Reply to a Threads post or another reply. Text-only replies publish in a single API call by default (auto_publish_text=true); media replies always use the two-step create-then-publish flow.", {
44
+ server.tool("threads_reply", "Reply to a Threads post or another reply. Text-only replies publish in a single API call by default (auto_publish_text=true); media replies always use the two-step create-then-publish flow. image_url and video_url are mutually exclusive — provide at most one.", {
33
45
  reply_to_id: z.string().describe("Post ID to reply to"),
34
46
  text: z.string().max(500).describe("Reply text"),
35
- image_url: httpsUrl.optional().describe("Optional image HTTPS URL to attach"),
36
- video_url: httpsUrl.optional().describe("Optional video HTTPS URL to attach"),
47
+ image_url: httpsUrl.optional().describe("Optional image HTTPS URL to attach. Mutually exclusive with video_url."),
48
+ video_url: httpsUrl.optional().describe("Optional video HTTPS URL to attach. Mutually exclusive with image_url."),
37
49
  auto_publish: z.boolean().optional().default(true).describe("When true (default) and the reply is text-only (no image_url/video_url), combine container creation and publishing into a single API call via auto_publish_text=true — one HTTP request instead of two, and no risk of the 4279009 'container not propagated yet' race. Ignored for media replies. Set to false to force the legacy two-step flow for text replies."),
38
50
  }, async ({ reply_to_id, text, image_url, video_url, auto_publish }) => {
39
51
  try {
52
+ if (image_url && video_url) {
53
+ return validationError("image_url and video_url cannot be combined on a single reply");
54
+ }
40
55
  let mediaType = "TEXT";
41
56
  if (image_url)
42
57
  mediaType = "IMAGE";
@@ -66,8 +81,8 @@ export function registerThreadsReplyTools(server, client) {
66
81
  if (useAutoPublish) {
67
82
  return { content: [{ type: "text", text: JSON.stringify({ ...createResponse, _rateLimit: createRateLimit }, null, 2) }] };
68
83
  }
69
- if (video_url) {
70
- await waitForThreadsContainer(client, createResponse.id);
84
+ if (image_url || video_url) {
85
+ await waitForThreadsContainer(client, createResponse.id, video_url ? VIDEO_PROCESSING_TIMEOUT : IMAGE_PROCESSING_TIMEOUT);
71
86
  }
72
87
  const { data, rateLimit } = await client.threads("POST", `/${client.threadsUserId}/threads_publish`, {
73
88
  creation_id: createResponse.id,
@@ -75,31 +90,31 @@ export function registerThreadsReplyTools(server, client) {
75
90
  return { content: [{ type: "text", text: JSON.stringify({ ...data, _rateLimit: rateLimit }, null, 2) }] };
76
91
  }
77
92
  catch (error) {
78
- return { content: [{ type: "text", text: `Reply failed: ${error instanceof Error ? error.message : String(error)}` }], isError: true };
93
+ return formatErrorResponse(error, "Reply");
79
94
  }
80
95
  });
81
96
  // ─── threads_hide_reply ──────────────────────────────────────
82
97
  server.tool("threads_hide_reply", "Hide a reply on your Threads post. Hidden replies are still visible if directly accessed.", {
83
- reply_id: z.string().describe("Reply ID to hide"),
98
+ reply_id: metaId.describe("Reply ID to hide"),
84
99
  }, async ({ reply_id }) => {
85
100
  try {
86
101
  const { data, rateLimit } = await client.threads("POST", `/${reply_id}/manage_reply`, { hide: true });
87
102
  return { content: [{ type: "text", text: JSON.stringify({ success: true, hidden: true, ...data, _rateLimit: rateLimit }, null, 2) }] };
88
103
  }
89
104
  catch (error) {
90
- return { content: [{ type: "text", text: `Hide reply failed: ${error instanceof Error ? error.message : String(error)}` }], isError: true };
105
+ return formatErrorResponse(error, "Hide reply");
91
106
  }
92
107
  });
93
108
  // ─── threads_unhide_reply ────────────────────────────────────
94
109
  server.tool("threads_unhide_reply", "Unhide a previously hidden reply on your Threads post.", {
95
- reply_id: z.string().describe("Reply ID to unhide"),
110
+ reply_id: metaId.describe("Reply ID to unhide"),
96
111
  }, async ({ reply_id }) => {
97
112
  try {
98
113
  const { data, rateLimit } = await client.threads("POST", `/${reply_id}/manage_reply`, { hide: false });
99
114
  return { content: [{ type: "text", text: JSON.stringify({ success: true, hidden: false, ...data, _rateLimit: rateLimit }, null, 2) }] };
100
115
  }
101
116
  catch (error) {
102
- return { content: [{ type: "text", text: `Unhide reply failed: ${error instanceof Error ? error.message : String(error)}` }], isError: true };
117
+ return formatErrorResponse(error, "Unhide reply");
103
118
  }
104
119
  });
105
120
  }
@@ -1 +1 @@
1
- {"version":3,"file":"replies.js","sourceRoot":"","sources":["../../../src/tools/threads/replies.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"replies.js","sourceRoot":"","sources":["../../../src/tools/threads/replies.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,7 @@
1
- import { MetaClient, ClientResponse } from "../services/meta-client.js";
2
- type ApiCallFn = (method: string, path: string, params?: Record<string, unknown>) => Promise<ClientResponse>;
1
+ import { MetaClient, ClientResponse, FormParams } from "../services/meta-client.js";
2
+ type ApiCallFn = (method: string, path: string, params?: FormParams) => Promise<ClientResponse>;
3
+ export declare const IMAGE_PROCESSING_TIMEOUT = 30;
4
+ export declare const VIDEO_PROCESSING_TIMEOUT = 300;
3
5
  export interface PollContainerOptions {
4
6
  apiCall: ApiCallFn;
5
7
  statusField: "status" | "status_code";
@@ -1 +1 @@
1
- {"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../../src/utils/container.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAExE,KAAK,SAAS,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;AAE7G,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,SAAS,CAAC;IACnB,WAAW,EAAE,QAAQ,GAAG,aAAa,CAAC;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,8DAA8D;AAC9D,wBAAsB,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiB3G;AAED,2EAA2E;AAC3E,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,SAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAO7G;AAED,yEAAyE;AACzE,wBAAsB,uBAAuB,CAAC,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,SAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAOlH"}
1
+ {"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../../src/utils/container.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAEpF,KAAK,SAAS,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,UAAU,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;AAKhG,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAC3C,eAAO,MAAM,wBAAwB,MAAM,CAAC;AAE5C,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,SAAS,CAAC;IACnB,WAAW,EAAE,QAAQ,GAAG,aAAa,CAAC;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,8DAA8D;AAC9D,wBAAsB,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiB3G;AAED,2EAA2E;AAC3E,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,SAA2B,GAAG,OAAO,CAAC,IAAI,CAAC,CAOnI;AAED,yEAAyE;AACzE,wBAAsB,uBAAuB,CAAC,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,SAA2B,GAAG,OAAO,CAAC,IAAI,CAAC,CAOxI"}
@@ -1,6 +1,11 @@
1
+ // Image containers typically finish in a single poll. Video containers can need
2
+ // up to 5 minutes — Meta recommends "querying a container's status once per minute,
3
+ // for no more than 5 minutes" per the Instagram content publishing docs.
4
+ export const IMAGE_PROCESSING_TIMEOUT = 30;
5
+ export const VIDEO_PROCESSING_TIMEOUT = 300;
1
6
  /** Poll container status until FINISHED or terminal status */
2
7
  export async function pollContainerStatus(containerId, options) {
3
- const { apiCall, statusField, label, maxWait = 30, interval = 5000 } = options;
8
+ const { apiCall, statusField, label, maxWait = IMAGE_PROCESSING_TIMEOUT, interval = 5000 } = options;
4
9
  const maxAttempts = Math.ceil((maxWait * 1000) / interval);
5
10
  let lastStatus;
6
11
  for (let i = 0; i < maxAttempts; i++) {
@@ -24,7 +29,7 @@ export async function pollContainerStatus(containerId, options) {
24
29
  throw new Error(`${label} processing timed out after ${maxWait}s (last status: ${lastStatus ?? "unknown"})`);
25
30
  }
26
31
  /** Instagram container polling — uses client.ig() and status_code field */
27
- export async function waitForIgContainer(client, containerId, maxWait = 30) {
32
+ export async function waitForIgContainer(client, containerId, maxWait = IMAGE_PROCESSING_TIMEOUT) {
28
33
  return pollContainerStatus(containerId, {
29
34
  apiCall: client.ig.bind(client),
30
35
  statusField: "status_code",
@@ -33,7 +38,7 @@ export async function waitForIgContainer(client, containerId, maxWait = 30) {
33
38
  });
34
39
  }
35
40
  /** Threads container polling — uses client.threads() and status field */
36
- export async function waitForThreadsContainer(client, containerId, maxWait = 30) {
41
+ export async function waitForThreadsContainer(client, containerId, maxWait = IMAGE_PROCESSING_TIMEOUT) {
37
42
  return pollContainerStatus(containerId, {
38
43
  apiCall: client.threads.bind(client),
39
44
  statusField: "status",
@@ -1 +1 @@
1
- {"version":3,"file":"container.js","sourceRoot":"","sources":["../../src/utils/container.ts"],"names":[],"mappings":"AAYA,8DAA8D;AAC9D,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,WAAmB,EAAE,OAA6B;IAC1F,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,GAAG,EAAE,EAAE,QAAQ,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;IAC/E,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;IAC3D,IAAI,UAA8B,CAAC;IACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,OAAO,CAAC,KAAK,EAAE,IAAI,WAAW,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;QAClF,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAuB,CAAC;QACvD,UAAU,GAAG,MAAM,CAAC;QACpB,IAAI,MAAM,KAAK,UAAU;YAAE,OAAO;QAClC,IAAI,MAAM,KAAK,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,mCAAmC,CAAC,CAAC;QACrF,IAAI,MAAM,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,uEAAuE,CAAC,CAAC;QAC3H,IAAI,MAAM,KAAK,WAAW;YAAE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,oBAAoB,CAAC,CAAC;QAC1E,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,yCAAyC,CAAC,CAAC;QAChF,IAAI,MAAM,KAAK,aAAa;YAAE,MAAM,IAAI,KAAK,CAAC,cAAc,KAAK,CAAC,WAAW,EAAE,YAAY,MAAM,EAAE,CAAC,CAAC;QACrG,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;IACpD,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,+BAA+B,OAAO,mBAAmB,UAAU,IAAI,SAAS,GAAG,CAAC,CAAC;AAC/G,CAAC;AAED,2EAA2E;AAC3E,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,MAAkB,EAAE,WAAmB,EAAE,OAAO,GAAG,EAAE;IAC5F,OAAO,mBAAmB,CAAC,WAAW,EAAE;QACtC,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC;QAC/B,WAAW,EAAE,aAAa;QAC1B,KAAK,EAAE,WAAW;QAClB,OAAO;KACR,CAAC,CAAC;AACL,CAAC;AAED,yEAAyE;AACzE,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,MAAkB,EAAE,WAAmB,EAAE,OAAO,GAAG,EAAE;IACjG,OAAO,mBAAmB,CAAC,WAAW,EAAE;QACtC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;QACpC,WAAW,EAAE,QAAQ;QACrB,KAAK,EAAE,mBAAmB;QAC1B,OAAO;KACR,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"container.js","sourceRoot":"","sources":["../../src/utils/container.ts"],"names":[],"mappings":"AAIA,gFAAgF;AAChF,oFAAoF;AACpF,yEAAyE;AACzE,MAAM,CAAC,MAAM,wBAAwB,GAAG,EAAE,CAAC;AAC3C,MAAM,CAAC,MAAM,wBAAwB,GAAG,GAAG,CAAC;AAU5C,8DAA8D;AAC9D,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,WAAmB,EAAE,OAA6B;IAC1F,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,GAAG,wBAAwB,EAAE,QAAQ,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;IACrG,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;IAC3D,IAAI,UAA8B,CAAC;IACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,OAAO,CAAC,KAAK,EAAE,IAAI,WAAW,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;QAClF,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAuB,CAAC;QACvD,UAAU,GAAG,MAAM,CAAC;QACpB,IAAI,MAAM,KAAK,UAAU;YAAE,OAAO;QAClC,IAAI,MAAM,KAAK,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,mCAAmC,CAAC,CAAC;QACrF,IAAI,MAAM,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,uEAAuE,CAAC,CAAC;QAC3H,IAAI,MAAM,KAAK,WAAW;YAAE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,oBAAoB,CAAC,CAAC;QAC1E,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,yCAAyC,CAAC,CAAC;QAChF,IAAI,MAAM,KAAK,aAAa;YAAE,MAAM,IAAI,KAAK,CAAC,cAAc,KAAK,CAAC,WAAW,EAAE,YAAY,MAAM,EAAE,CAAC,CAAC;QACrG,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;IACpD,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,+BAA+B,OAAO,mBAAmB,UAAU,IAAI,SAAS,GAAG,CAAC,CAAC;AAC/G,CAAC;AAED,2EAA2E;AAC3E,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,MAAkB,EAAE,WAAmB,EAAE,OAAO,GAAG,wBAAwB;IAClH,OAAO,mBAAmB,CAAC,WAAW,EAAE;QACtC,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC;QAC/B,WAAW,EAAE,aAAa;QAC1B,KAAK,EAAE,WAAW;QAClB,OAAO;KACR,CAAC,CAAC;AACL,CAAC;AAED,yEAAyE;AACzE,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,MAAkB,EAAE,WAAmB,EAAE,OAAO,GAAG,wBAAwB;IACvH,OAAO,mBAAmB,CAAC,WAAW,EAAE;QACtC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;QACpC,WAAW,EAAE,QAAQ;QACrB,KAAK,EAAE,mBAAmB;QAC1B,OAAO;KACR,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,38 @@
1
+ import { McpError } from "@modelcontextprotocol/sdk/types.js";
2
+ export type ErrorType = "auth" | "validation" | "rate_limit" | "server" | "network" | "internal";
3
+ interface MetaApiErrorInit {
4
+ message: string;
5
+ httpStatus?: number;
6
+ apiCode?: number;
7
+ apiSubcode?: number;
8
+ apiType?: string;
9
+ fbtraceId?: string;
10
+ endpoint: string;
11
+ method: string;
12
+ body?: string;
13
+ }
14
+ export declare class MetaApiError extends Error {
15
+ readonly httpStatus?: number;
16
+ readonly apiCode?: number;
17
+ readonly apiSubcode?: number;
18
+ readonly apiType?: string;
19
+ readonly fbtraceId?: string;
20
+ readonly endpoint: string;
21
+ readonly method: string;
22
+ readonly body?: string;
23
+ constructor(init: MetaApiErrorInit);
24
+ }
25
+ export declare function sanitizeRaw(text: string): string;
26
+ export interface McpErrorResult {
27
+ [key: string]: unknown;
28
+ content: {
29
+ type: "text";
30
+ text: string;
31
+ }[];
32
+ isError: true;
33
+ }
34
+ export declare function formatErrorResponse(error: unknown, label: string): McpErrorResult;
35
+ export declare function toMcpResourceError(error: unknown, label: string): McpError;
36
+ export declare function validationError(message: string): McpErrorResult;
37
+ export {};
38
+ //# sourceMappingURL=errors.d.ts.map