@exileum/meta-mcp 3.9.0 → 5.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 (69) hide show
  1. package/README.md +19 -19
  2. package/dist/prompts/index.d.ts.map +1 -1
  3. package/dist/prompts/index.js +3 -2
  4. package/dist/prompts/index.js.map +1 -1
  5. package/dist/resources/instagram.js +2 -2
  6. package/dist/resources/instagram.js.map +1 -1
  7. package/dist/resources/threads.js +2 -2
  8. package/dist/resources/threads.js.map +1 -1
  9. package/dist/services/meta-client.d.ts +5 -1
  10. package/dist/services/meta-client.d.ts.map +1 -1
  11. package/dist/services/meta-client.js +49 -2
  12. package/dist/services/meta-client.js.map +1 -1
  13. package/dist/tools/instagram/comments.d.ts.map +1 -1
  14. package/dist/tools/instagram/comments.js +28 -21
  15. package/dist/tools/instagram/comments.js.map +1 -1
  16. package/dist/tools/instagram/hashtags.d.ts.map +1 -1
  17. package/dist/tools/instagram/hashtags.js +15 -8
  18. package/dist/tools/instagram/hashtags.js.map +1 -1
  19. package/dist/tools/instagram/media.d.ts.map +1 -1
  20. package/dist/tools/instagram/media.js +17 -12
  21. package/dist/tools/instagram/media.js.map +1 -1
  22. package/dist/tools/instagram/mentions.d.ts.map +1 -1
  23. package/dist/tools/instagram/mentions.js +17 -13
  24. package/dist/tools/instagram/mentions.js.map +1 -1
  25. package/dist/tools/instagram/messaging.d.ts.map +1 -1
  26. package/dist/tools/instagram/messaging.js +25 -16
  27. package/dist/tools/instagram/messaging.js.map +1 -1
  28. package/dist/tools/instagram/profile.d.ts +2 -0
  29. package/dist/tools/instagram/profile.d.ts.map +1 -1
  30. package/dist/tools/instagram/profile.js +39 -15
  31. package/dist/tools/instagram/profile.js.map +1 -1
  32. package/dist/tools/instagram/publishing.d.ts +2 -0
  33. package/dist/tools/instagram/publishing.d.ts.map +1 -1
  34. package/dist/tools/instagram/publishing.js +59 -25
  35. package/dist/tools/instagram/publishing.js.map +1 -1
  36. package/dist/tools/meta/auth.d.ts.map +1 -1
  37. package/dist/tools/meta/auth.js +7 -6
  38. package/dist/tools/meta/auth.js.map +1 -1
  39. package/dist/tools/threads/insights.d.ts.map +1 -1
  40. package/dist/tools/threads/insights.js +8 -8
  41. package/dist/tools/threads/insights.js.map +1 -1
  42. package/dist/tools/threads/media.d.ts +2 -0
  43. package/dist/tools/threads/media.d.ts.map +1 -1
  44. package/dist/tools/threads/media.js +18 -12
  45. package/dist/tools/threads/media.js.map +1 -1
  46. package/dist/tools/threads/mentions.d.ts.map +1 -1
  47. package/dist/tools/threads/mentions.js +2 -1
  48. package/dist/tools/threads/mentions.js.map +1 -1
  49. package/dist/tools/threads/profile.d.ts.map +1 -1
  50. package/dist/tools/threads/profile.js +4 -30
  51. package/dist/tools/threads/profile.js.map +1 -1
  52. package/dist/tools/threads/publishing.d.ts +1 -0
  53. package/dist/tools/threads/publishing.d.ts.map +1 -1
  54. package/dist/tools/threads/publishing.js +54 -33
  55. package/dist/tools/threads/publishing.js.map +1 -1
  56. package/dist/tools/threads/replies.d.ts +2 -0
  57. package/dist/tools/threads/replies.d.ts.map +1 -1
  58. package/dist/tools/threads/replies.js +19 -7
  59. package/dist/tools/threads/replies.js.map +1 -1
  60. package/dist/utils/container.js +1 -1
  61. package/dist/utils/errors.d.ts +36 -0
  62. package/dist/utils/errors.d.ts.map +1 -0
  63. package/dist/utils/errors.js +128 -0
  64. package/dist/utils/errors.js.map +1 -0
  65. package/package.json +5 -5
  66. package/dist/types.d.ts +0 -45
  67. package/dist/types.d.ts.map +0 -1
  68. package/dist/types.js +0 -2
  69. package/dist/types.js.map +0 -1
@@ -1,41 +1,15 @@
1
- import { z } from "zod";
1
+ import { formatErrorResponse } from "../../utils/errors.js";
2
2
  export function registerThreadsProfileTools(server, client) {
3
3
  // ─── threads_get_profile ─────────────────────────────────────
4
- server.tool("threads_get_profile", "Get Threads user profile information including verification status.", {}, async () => {
4
+ server.tool("threads_get_profile", "Get Threads user profile information including verification status and geo-gating eligibility (is_eligible_for_geo_gating).", {}, async () => {
5
5
  try {
6
6
  const { data, rateLimit } = await client.threads("GET", `/${client.threadsUserId}`, {
7
- fields: "id,username,name,threads_profile_picture_url,threads_biography,is_verified",
7
+ fields: "id,username,name,threads_profile_picture_url,threads_biography,is_verified,is_eligible_for_geo_gating",
8
8
  });
9
9
  return { content: [{ type: "text", text: JSON.stringify({ ...data, _rateLimit: rateLimit }, null, 2) }] };
10
10
  }
11
11
  catch (error) {
12
- return { content: [{ type: "text", text: `Get profile failed: ${error instanceof Error ? error.message : String(error)}` }], isError: true };
13
- }
14
- });
15
- // ─── threads_get_user_threads ────────────────────────────────
16
- server.tool("threads_get_user_threads", "Get all threads published by the user (alias for threads_get_posts with user context).", {
17
- limit: z.number().optional().describe("Number of results"),
18
- since: z.string().optional().describe("Start date (ISO 8601 or Unix timestamp)"),
19
- until: z.string().optional().describe("End date (ISO 8601 or Unix timestamp)"),
20
- after: z.string().optional().describe("Pagination cursor"),
21
- }, async ({ limit, since, until, after }) => {
22
- try {
23
- const params = {
24
- fields: "id,media_product_type,media_type,text,permalink,timestamp,shortcode,is_quote_post,topic_tag",
25
- };
26
- if (limit !== undefined)
27
- params.limit = limit;
28
- if (since)
29
- params.since = since;
30
- if (until)
31
- params.until = until;
32
- if (after)
33
- params.after = after;
34
- const { data, rateLimit } = await client.threads("GET", `/${client.threadsUserId}/threads`, params);
35
- return { content: [{ type: "text", text: JSON.stringify({ ...data, _rateLimit: rateLimit }, null, 2) }] };
36
- }
37
- catch (error) {
38
- return { content: [{ type: "text", text: `Get user threads failed: ${error instanceof Error ? error.message : String(error)}` }], isError: true };
12
+ return formatErrorResponse(error, "Get profile");
39
13
  }
40
14
  });
41
15
  }
@@ -1 +1 @@
1
- {"version":3,"file":"profile.js","sourceRoot":"","sources":["../../../src/tools/threads/profile.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"profile.js","sourceRoot":"","sources":["../../../src/tools/threads/profile.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,MAAM,UAAU,2BAA2B,CAAC,MAAiB,EAAE,MAAkB;IAC/E,gEAAgE;IAChE,MAAM,CAAC,IAAI,CACT,qBAAqB,EACrB,6HAA6H,EAC7H,EAAE,EACF,KAAK,IAAI,EAAE;QACT,IAAI,CAAC;YACH,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,MAAM,CAAC,aAAa,EAAE,EAAE;gBAClF,MAAM,EAAE,uGAAuG;aAChH,CAAC,CAAC;YACH,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QAC5G,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,mBAAmB,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;QACnD,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -25,5 +25,6 @@ export declare const textAttachmentStylingSchema: z.ZodOptional<z.ZodArray<z.Zod
25
25
  strikethrough: "strikethrough";
26
26
  }>>;
27
27
  }, z.core.$strip>>>;
28
+ export declare const allowlistedCountryCodesSchema: z.ZodOptional<z.ZodArray<z.ZodString>>;
28
29
  export declare function registerThreadsPublishingTools(server: McpServer, client: MetaClient): void;
29
30
  //# sourceMappingURL=publishing.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"publishing.d.ts","sourceRoot":"","sources":["../../../src/tools/threads/publishing.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;AAI3D,eAAO,MAAM,cAAc,4BAAsL,CAAC;AAElN,eAAO,MAAM,oBAAoB;;;GAA0R,CAAC;AAE5T,eAAO,MAAM,iBAAiB,wCAAkJ,CAAC;AAEjL,eAAO,MAAM,eAAe;;;;;;EAAwE,CAAC;AAErG,eAAO,MAAM,2BAA2B;;;;;;;;;;mBAIoD,CAAC;AAW7F,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CA0T1F"}
1
+ {"version":3,"file":"publishing.d.ts","sourceRoot":"","sources":["../../../src/tools/threads/publishing.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;AAK3D,eAAO,MAAM,cAAc,4BAAsL,CAAC;AAElN,eAAO,MAAM,oBAAoB;;;GAA0R,CAAC;AAE5T,eAAO,MAAM,iBAAiB,wCAAoO,CAAC;AAEnQ,eAAO,MAAM,eAAe;;;;;;EAAwE,CAAC;AAErG,eAAO,MAAM,2BAA2B;;;;;;;;;;mBAIoD,CAAC;AAE7F,eAAO,MAAM,6BAA6B,wCAEuW,CAAC;AAiBlZ,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CAyU1F"}
@@ -1,15 +1,17 @@
1
1
  import { z } from "zod";
2
2
  import { httpsUrl } from "../../schemas.js";
3
3
  import { waitForThreadsContainer } 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)"),
10
11
  length: z.number().int().min(1).describe("Number of characters to style (automatically converted to UTF-8 byte length for the API)"),
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.");
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.");
13
15
  const POLL_OPTION_KEYS = ["option_a", "option_b", "option_c", "option_d"];
14
16
  function applyShareToIgStory(params, share_to_ig_story) {
15
17
  if (share_to_ig_story) {
@@ -18,43 +20,51 @@ function applyShareToIgStory(params, share_to_ig_story) {
18
20
  params.crossreshare_to_ig_dark_mode = true;
19
21
  }
20
22
  }
23
+ function applyAllowlistedCountryCodes(params, codes) {
24
+ if (codes?.length) {
25
+ params.allowlisted_country_codes = codes.map(c => c.toUpperCase()).join(",");
26
+ }
27
+ }
21
28
  export function registerThreadsPublishingTools(server, client) {
22
29
  // ─── threads_publish_text ────────────────────────────────────
23
- 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, 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.", {
30
+ 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.", {
24
31
  text: z.string().max(500).describe("Post text (max 500 chars)"),
25
32
  reply_control: z.enum(["everyone", "accounts_you_follow", "mentioned_only", "parent_post_author_only", "followers_only"]).optional().describe("Who can reply"),
26
- 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."),
33
+ 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."),
27
34
  topic_tag: topicTagSchema,
28
35
  quote_post_id: z.string().optional().describe("ID of a post to quote"),
29
36
  poll_options: pollOptionsSchema,
30
- gif_id: z.string().optional().describe("GIPHY GIF ID"),
31
- gif_provider: z.enum(["GIPHY"]).optional().describe("GIF provider. Only GIPHY is currently supported."),
32
- alt_text: z.string().max(1000).optional().describe("Alt text for accessibility (max 1000 chars)"),
37
+ gif_id: z.string().min(1).optional().describe("GIPHY GIF ID. Must be provided together with gif_provider — providing only one returns an error."),
38
+ 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."),
33
39
  is_spoiler: z.boolean().optional().describe("Mark content as spoiler"),
34
40
  share_to_ig_story: shareToIgStorySchema,
35
- 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."),
41
+ 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, link_attachment, or gif_id+gif_provider."),
36
43
  text_attachment_link: z.string().url().optional().describe("URL to include inside the text attachment card. Requires text_attachment."),
37
44
  text_attachment_styling: textAttachmentStylingSchema,
38
45
  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)."),
39
- }, 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, text_attachment, text_attachment_link, text_attachment_styling, auto_publish }) => {
46
+ }, 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 }) => {
40
47
  try {
41
48
  // Validate mutual exclusions
42
49
  if (text_attachment && poll_options) {
43
- return { content: [{ type: "text", text: "text_attachment cannot be combined with poll_options" }], isError: true };
50
+ return validationError("text_attachment cannot be combined with poll_options");
44
51
  }
45
52
  if (text_attachment && link_attachment) {
46
- 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 };
53
+ return validationError("text_attachment cannot be combined with link_attachment. Use text_attachment_link instead to include a link inside the text attachment.");
54
+ }
55
+ if (poll_options && link_attachment) {
56
+ return validationError("poll_options cannot be combined with link_attachment");
47
57
  }
48
58
  if (text_attachment_link && !text_attachment) {
49
- return { content: [{ type: "text", text: "text_attachment_link requires text_attachment" }], isError: true };
59
+ return validationError("text_attachment_link requires text_attachment");
50
60
  }
51
61
  if (text_attachment_styling && !text_attachment) {
52
- return { content: [{ type: "text", text: "text_attachment_styling requires text_attachment" }], isError: true };
62
+ return validationError("text_attachment_styling requires text_attachment");
53
63
  }
54
64
  if (text_attachment_styling) {
55
65
  for (const range of text_attachment_styling) {
56
66
  if (range.offset + range.length > text_attachment.length) {
57
- 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 };
67
+ return validationError(`text_attachment_styling range at offset ${range.offset} with length ${range.length} exceeds text_attachment length (${text_attachment.length})`);
58
68
  }
59
69
  }
60
70
  if (text_attachment_styling.length > 1) {
@@ -62,11 +72,17 @@ export function registerThreadsPublishingTools(server, client) {
62
72
  for (let i = 1; i < sorted.length; i++) {
63
73
  const prev = sorted[i - 1];
64
74
  if (sorted[i].offset < prev.offset + prev.length) {
65
- 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 };
75
+ return validationError(`text_attachment_styling ranges must not overlap: range at offset ${sorted[i].offset} overlaps with range at offset ${prev.offset}`);
66
76
  }
67
77
  }
68
78
  }
69
79
  }
80
+ if ((gif_id && !gif_provider) || (!gif_id && gif_provider)) {
81
+ 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.");
82
+ }
83
+ if (gif_id && (text_attachment || poll_options || link_attachment)) {
84
+ return validationError("GIF attachment cannot be combined with text_attachment, poll_options, or link_attachment");
85
+ }
70
86
  const params = { media_type: "TEXT", text };
71
87
  if (reply_control)
72
88
  params.reply_control = reply_control;
@@ -88,8 +104,6 @@ export function registerThreadsPublishingTools(server, client) {
88
104
  if (gif_id && gif_provider) {
89
105
  params.gif_attachment = JSON.stringify({ gif_id, provider: gif_provider });
90
106
  }
91
- if (alt_text)
92
- params.alt_text = alt_text;
93
107
  if (is_spoiler)
94
108
  params.is_spoiler_media = true;
95
109
  if (text_attachment) {
@@ -108,6 +122,7 @@ export function registerThreadsPublishingTools(server, client) {
108
122
  params.text_attachment = JSON.stringify(obj);
109
123
  }
110
124
  applyShareToIgStory(params, share_to_ig_story);
125
+ applyAllowlistedCountryCodes(params, allowlisted_country_codes);
111
126
  // Treat `undefined` as the default (true) so the behavior is stable even
112
127
  // if a caller bypasses Zod's schema-level default (e.g., direct handler
113
128
  // invocation in tests). Only an explicit `false` takes the legacy path.
@@ -128,11 +143,11 @@ export function registerThreadsPublishingTools(server, client) {
128
143
  return { content: [{ type: "text", text: JSON.stringify({ ...data, _rateLimit: rateLimit }, null, 2) }] };
129
144
  }
130
145
  catch (error) {
131
- return { content: [{ type: "text", text: `Publish text failed: ${error instanceof Error ? error.message : String(error)}` }], isError: true };
146
+ return formatErrorResponse(error, "Publish text");
132
147
  }
133
148
  });
134
149
  // ─── threads_publish_image ───────────────────────────────────
135
- server.tool("threads_publish_image", "Publish an image post on Threads. Supports topic tag, quote post, alt text, spoiler flag, and cross-share to Instagram Stories.", {
150
+ 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.", {
136
151
  image_url: httpsUrl.describe("Public HTTPS URL of the image (JPEG/PNG, max 8MB)"),
137
152
  text: z.string().max(500).optional().describe("Caption text"),
138
153
  reply_control: z.enum(["everyone", "accounts_you_follow", "mentioned_only", "parent_post_author_only", "followers_only"]).optional().describe("Who can reply"),
@@ -141,7 +156,8 @@ export function registerThreadsPublishingTools(server, client) {
141
156
  alt_text: z.string().max(1000).optional().describe("Alt text for accessibility (max 1000 chars)"),
142
157
  is_spoiler: z.boolean().optional().describe("Mark content as spoiler"),
143
158
  share_to_ig_story: shareToIgStorySchema,
144
- }, async ({ image_url, text, reply_control, topic_tag, quote_post_id, alt_text, is_spoiler, share_to_ig_story }) => {
159
+ allowlisted_country_codes: allowlistedCountryCodesSchema,
160
+ }, async ({ image_url, text, reply_control, topic_tag, quote_post_id, alt_text, is_spoiler, share_to_ig_story, allowlisted_country_codes }) => {
145
161
  try {
146
162
  const params = { media_type: "IMAGE", image_url };
147
163
  if (text)
@@ -157,6 +173,7 @@ export function registerThreadsPublishingTools(server, client) {
157
173
  if (is_spoiler)
158
174
  params.is_spoiler_media = true;
159
175
  applyShareToIgStory(params, share_to_ig_story);
176
+ applyAllowlistedCountryCodes(params, allowlisted_country_codes);
160
177
  const { data: container } = await client.threads("POST", `/${client.threadsUserId}/threads`, params);
161
178
  if (typeof container.id !== "string")
162
179
  throw new Error("Container creation did not return a valid id");
@@ -168,11 +185,11 @@ export function registerThreadsPublishingTools(server, client) {
168
185
  return { content: [{ type: "text", text: JSON.stringify({ ...data, _rateLimit: rateLimit }, null, 2) }] };
169
186
  }
170
187
  catch (error) {
171
- return { content: [{ type: "text", text: `Publish image failed: ${error instanceof Error ? error.message : String(error)}` }], isError: true };
188
+ return formatErrorResponse(error, "Publish image");
172
189
  }
173
190
  });
174
191
  // ─── threads_publish_video ───────────────────────────────────
175
- server.tool("threads_publish_video", "Publish a video post on Threads. Waits for video processing. Supports topic tag, quote post, alt text, spoiler flag, and cross-share to Instagram Stories. Note: cross-share to IG Stories may silently fail for video posts (the Threads post still publishes).", {
192
+ 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).", {
176
193
  video_url: httpsUrl.describe("Public HTTPS URL of the video (MP4/MOV, max 1GB, up to 5 min)"),
177
194
  text: z.string().max(500).optional().describe("Caption text"),
178
195
  reply_control: z.enum(["everyone", "accounts_you_follow", "mentioned_only", "parent_post_author_only", "followers_only"]).optional().describe("Who can reply"),
@@ -181,7 +198,8 @@ export function registerThreadsPublishingTools(server, client) {
181
198
  alt_text: z.string().max(1000).optional().describe("Alt text for accessibility (max 1000 chars)"),
182
199
  is_spoiler: z.boolean().optional().describe("Mark content as spoiler"),
183
200
  share_to_ig_story: shareToIgStorySchema,
184
- }, async ({ video_url, text, reply_control, topic_tag, quote_post_id, alt_text, is_spoiler, share_to_ig_story }) => {
201
+ allowlisted_country_codes: allowlistedCountryCodesSchema,
202
+ }, async ({ video_url, text, reply_control, topic_tag, quote_post_id, alt_text, is_spoiler, share_to_ig_story, allowlisted_country_codes }) => {
185
203
  try {
186
204
  const params = { media_type: "VIDEO", video_url };
187
205
  if (text)
@@ -197,22 +215,23 @@ export function registerThreadsPublishingTools(server, client) {
197
215
  if (is_spoiler)
198
216
  params.is_spoiler_media = true;
199
217
  applyShareToIgStory(params, share_to_ig_story);
218
+ applyAllowlistedCountryCodes(params, allowlisted_country_codes);
200
219
  const { data: container } = await client.threads("POST", `/${client.threadsUserId}/threads`, params);
201
220
  if (typeof container.id !== "string")
202
221
  throw new Error("Container creation did not return a valid id");
203
222
  const containerId = container.id;
204
- await waitForThreadsContainer(client, containerId);
223
+ await waitForThreadsContainer(client, containerId, 120);
205
224
  const { data, rateLimit } = await client.threads("POST", `/${client.threadsUserId}/threads_publish`, {
206
225
  creation_id: containerId,
207
226
  });
208
227
  return { content: [{ type: "text", text: JSON.stringify({ ...data, _rateLimit: rateLimit }, null, 2) }] };
209
228
  }
210
229
  catch (error) {
211
- return { content: [{ type: "text", text: `Publish video failed: ${error instanceof Error ? error.message : String(error)}` }], isError: true };
230
+ return formatErrorResponse(error, "Publish video");
212
231
  }
213
232
  });
214
233
  // ─── threads_publish_carousel ────────────────────────────────
215
- server.tool("threads_publish_carousel", "Publish a carousel post on Threads with 2-20 images/videos. Supports cross-share to Instagram Stories.", {
234
+ server.tool("threads_publish_carousel", "Publish a carousel post on Threads with 2-20 images/videos. Supports cross-share to Instagram Stories and geo-gating via allowlisted_country_codes (parent container only).", {
216
235
  items: z.array(z.object({
217
236
  type: z.enum(["IMAGE", "VIDEO"]).describe("Media type"),
218
237
  url: httpsUrl.describe("Public HTTPS URL"),
@@ -223,7 +242,8 @@ export function registerThreadsPublishingTools(server, client) {
223
242
  topic_tag: topicTagSchema,
224
243
  quote_post_id: z.string().optional().describe("ID of a post to quote"),
225
244
  share_to_ig_story: shareToIgStorySchema,
226
- }, async ({ items, text, reply_control, topic_tag, quote_post_id, share_to_ig_story }) => {
245
+ allowlisted_country_codes: allowlistedCountryCodesSchema,
246
+ }, async ({ items, text, reply_control, topic_tag, quote_post_id, share_to_ig_story, allowlisted_country_codes }) => {
227
247
  try {
228
248
  const childIds = [];
229
249
  for (const item of items) {
@@ -240,7 +260,7 @@ export function registerThreadsPublishingTools(server, client) {
240
260
  if (typeof child.id !== "string")
241
261
  throw new Error("Container creation did not return a valid id");
242
262
  const childId = child.id;
243
- await waitForThreadsContainer(client, childId);
263
+ await waitForThreadsContainer(client, childId, item.type === "VIDEO" ? 120 : 30);
244
264
  childIds.push(childId);
245
265
  }
246
266
  const carouselParams = {
@@ -256,6 +276,7 @@ export function registerThreadsPublishingTools(server, client) {
256
276
  if (quote_post_id)
257
277
  carouselParams.quote_post_id = quote_post_id;
258
278
  applyShareToIgStory(carouselParams, share_to_ig_story);
279
+ applyAllowlistedCountryCodes(carouselParams, allowlisted_country_codes);
259
280
  const { data: carousel } = await client.threads("POST", `/${client.threadsUserId}/threads`, carouselParams);
260
281
  if (typeof carousel.id !== "string")
261
282
  throw new Error("Container creation did not return a valid id");
@@ -267,7 +288,7 @@ export function registerThreadsPublishingTools(server, client) {
267
288
  return { content: [{ type: "text", text: JSON.stringify({ ...data, _rateLimit: rateLimit }, null, 2) }] };
268
289
  }
269
290
  catch (error) {
270
- return { content: [{ type: "text", text: `Publish carousel failed: ${error instanceof Error ? error.message : String(error)}` }], isError: true };
291
+ return formatErrorResponse(error, "Publish carousel");
271
292
  }
272
293
  });
273
294
  // ─── threads_delete_post ──────────────────────────────────────
@@ -279,7 +300,7 @@ export function registerThreadsPublishingTools(server, client) {
279
300
  return { content: [{ type: "text", text: JSON.stringify({ success: true, ...data, _rateLimit: rateLimit }, null, 2) }] };
280
301
  }
281
302
  catch (error) {
282
- return { content: [{ type: "text", text: `Delete post failed: ${error instanceof Error ? error.message : String(error)}` }], isError: true };
303
+ return formatErrorResponse(error, "Delete post");
283
304
  }
284
305
  });
285
306
  // ─── threads_get_container_status ────────────────────────────
@@ -295,9 +316,9 @@ export function registerThreadsPublishingTools(server, client) {
295
316
  catch (error) {
296
317
  const msg = error instanceof Error ? error.message : String(error);
297
318
  if (msg.includes("nonexisting field")) {
298
- 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 };
319
+ 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).");
299
320
  }
300
- return { content: [{ type: "text", text: `Get container status failed: ${msg}` }], isError: true };
321
+ return formatErrorResponse(error, "Get container status");
301
322
  }
302
323
  });
303
324
  // ─── threads_get_publishing_limit ────────────────────────────
@@ -309,7 +330,7 @@ export function registerThreadsPublishingTools(server, client) {
309
330
  return { content: [{ type: "text", text: JSON.stringify({ ...data, _rateLimit: rateLimit }, null, 2) }] };
310
331
  }
311
332
  catch (error) {
312
- return { content: [{ type: "text", text: `Get publishing limit failed: ${error instanceof Error ? error.message : String(error)}` }], isError: true };
333
+ return formatErrorResponse(error, "Get publishing limit");
313
334
  }
314
335
  });
315
336
  // ─── threads_repost ──────────────────────────────────────────
@@ -321,7 +342,7 @@ export function registerThreadsPublishingTools(server, client) {
321
342
  return { content: [{ type: "text", text: JSON.stringify({ ...data, _rateLimit: rateLimit }, null, 2) }] };
322
343
  }
323
344
  catch (error) {
324
- return { content: [{ type: "text", text: `Repost failed: ${error instanceof Error ? error.message : String(error)}` }], isError: true };
345
+ return formatErrorResponse(error, "Repost");
325
346
  }
326
347
  });
327
348
  }
@@ -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,EAAE,MAAM,+BAA+B,CAAC;AAW3D,eAAO,MAAM,gCAAgC,kKAA2D,CAAC;AACzG,eAAO,MAAM,gCAAgC,kIAAsB,CAAC;AAEpE,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CAmHrF"}
@@ -1,18 +1,30 @@
1
1
  import { z } from "zod";
2
2
  import { httpsUrl } from "../../schemas.js";
3
3
  import { waitForThreadsContainer } from "../../utils/container.js";
4
+ import { formatErrorResponse } 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.", {
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.", {
7
15
  post_id: z.string().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,7 +37,7 @@ 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 ───────────────────────────────────────────
@@ -75,7 +87,7 @@ export function registerThreadsReplyTools(server, client) {
75
87
  return { content: [{ type: "text", text: JSON.stringify({ ...data, _rateLimit: rateLimit }, null, 2) }] };
76
88
  }
77
89
  catch (error) {
78
- return { content: [{ type: "text", text: `Reply failed: ${error instanceof Error ? error.message : String(error)}` }], isError: true };
90
+ return formatErrorResponse(error, "Reply");
79
91
  }
80
92
  });
81
93
  // ─── threads_hide_reply ──────────────────────────────────────
@@ -87,7 +99,7 @@ export function registerThreadsReplyTools(server, client) {
87
99
  return { content: [{ type: "text", text: JSON.stringify({ success: true, hidden: true, ...data, _rateLimit: rateLimit }, null, 2) }] };
88
100
  }
89
101
  catch (error) {
90
- return { content: [{ type: "text", text: `Hide reply failed: ${error instanceof Error ? error.message : String(error)}` }], isError: true };
102
+ return formatErrorResponse(error, "Hide reply");
91
103
  }
92
104
  });
93
105
  // ─── threads_unhide_reply ────────────────────────────────────
@@ -99,7 +111,7 @@ export function registerThreadsReplyTools(server, client) {
99
111
  return { content: [{ type: "text", text: JSON.stringify({ success: true, hidden: false, ...data, _rateLimit: rateLimit }, null, 2) }] };
100
112
  }
101
113
  catch (error) {
102
- return { content: [{ type: "text", text: `Unhide reply failed: ${error instanceof Error ? error.message : String(error)}` }], isError: true };
114
+ return formatErrorResponse(error, "Unhide reply");
103
115
  }
104
116
  });
105
117
  }
@@ -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":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,MAAM,mBAAmB,GAAG,+HAA+H,CAAC;AAE5J,gFAAgF;AAChF,gFAAgF;AAChF,0EAA0E;AAC1E,iFAAiF;AACjF,MAAM,CAAC,MAAM,gCAAgC,GAAG,GAAG,mBAAmB,kCAAkC,CAAC;AACzG,MAAM,CAAC,MAAM,gCAAgC,GAAG,mBAAmB,CAAC;AAEpE,MAAM,UAAU,yBAAyB,CAAC,MAAiB,EAAE,MAAkB;IAC7E,gEAAgE;IAChE,MAAM,CAAC,IAAI,CACT,qBAAqB,EACrB,uwBAAuwB,EACvwB;QACE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;QAClE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6GAA6G,CAAC;QAC3K,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;QACvE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QAC1D,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QAC1D,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gOAAgO,CAAC;KAChR,EACD,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE;QACzD,IAAI,CAAC;YACH,MAAM,aAAa,GAAG,IAAI,KAAK,WAAW;gBACxC,CAAC,CAAC,gCAAgC;gBAClC,CAAC,CAAC,gCAAgC,CAAC;YACrC,MAAM,MAAM,GAA4B;gBACtC,MAAM,EAAE,MAAM,IAAI,aAAa;aAChC,CAAC;YACF,IAAI,OAAO,KAAK,SAAS;gBAAE,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;YACpD,IAAI,KAAK,KAAK,SAAS;gBAAE,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;YAC9C,IAAI,KAAK;gBAAE,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;YAChC,MAAM,IAAI,GAAG,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC;YAC/D,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,OAAO,IAAI,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC;YACvF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QAC5G,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,mBAAmB,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;QACnD,CAAC;IACH,CAAC,CACF,CAAC;IAEF,gEAAgE;IAChE,MAAM,CAAC,IAAI,CACT,eAAe,EACf,+LAA+L,EAC/L;QACE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;QACvD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC;QAChD,SAAS,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;QAC7E,SAAS,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;QAC7E,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,qWAAqW,CAAC;KACna,EACD,KAAK,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,EAAE,EAAE;QAClE,IAAI,CAAC;YACH,IAAI,SAAS,GAAG,MAAM,CAAC;YACvB,IAAI,SAAS;gBAAE,SAAS,GAAG,OAAO,CAAC;YACnC,IAAI,SAAS;gBAAE,SAAS,GAAG,OAAO,CAAC;YACnC,MAAM,UAAU,GAAG,SAAS,KAAK,MAAM,CAAC;YACxC,yEAAyE;YACzE,4EAA4E;YAC5E,oDAAoD;YACpD,MAAM,cAAc,GAAG,UAAU,IAAI,YAAY,KAAK,KAAK,CAAC;YAC5D,MAAM,MAAM,GAA4B;gBACtC,UAAU,EAAE,SAAS;gBACrB,IAAI;gBACJ,WAAW;aACZ,CAAC;YACF,IAAI,SAAS;gBAAE,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC;YAC5C,IAAI,SAAS;gBAAE,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC;YAC5C,IAAI,cAAc;gBAAE,MAAM,CAAC,iBAAiB,GAAG,IAAI,CAAC;YACpD,4EAA4E;YAC5E,8CAA8C;YAC9C,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,SAAS,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,MAAM,CAAC,aAAa,UAAU,EAAE,MAAM,CAAC,CAAC;YACtI,IAAI,OAAO,cAAc,CAAC,EAAE,KAAK,QAAQ;gBAAE,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;YAC3G,IAAI,cAAc,EAAE,CAAC;gBACnB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,cAAc,EAAE,UAAU,EAAE,eAAe,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;YAC5H,CAAC;YACD,IAAI,SAAS,EAAE,CAAC;gBACd,MAAM,uBAAuB,CAAC,MAAM,EAAE,cAAc,CAAC,EAAE,CAAC,CAAC;YAC3D,CAAC;YACD,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,MAAM,CAAC,aAAa,kBAAkB,EAAE;gBACnG,WAAW,EAAE,cAAc,CAAC,EAAE;aAC/B,CAAC,CAAC;YACH,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QAC5G,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC,CACF,CAAC;IAEF,gEAAgE;IAChE,MAAM,CAAC,IAAI,CACT,oBAAoB,EACpB,2FAA2F,EAC3F;QACE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;KAClD,EACD,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;QACrB,IAAI,CAAC;YACH,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,QAAQ,eAAe,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YACtG,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QACzI,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,mBAAmB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QAClD,CAAC;IACH,CAAC,CACF,CAAC;IAEF,gEAAgE;IAChE,MAAM,CAAC,IAAI,CACT,sBAAsB,EACtB,wDAAwD,EACxD;QACE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;KACpD,EACD,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;QACrB,IAAI,CAAC;YACH,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,QAAQ,eAAe,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YACvG,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QAC1I,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,mBAAmB,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;QACpD,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -1,6 +1,6 @@
1
1
  /** Poll container status until FINISHED or terminal status */
2
2
  export async function pollContainerStatus(containerId, options) {
3
- const { apiCall, statusField, label, maxWait = 30, interval = 2000 } = options;
3
+ const { apiCall, statusField, label, maxWait = 30, interval = 5000 } = options;
4
4
  const maxAttempts = Math.ceil((maxWait * 1000) / interval);
5
5
  let lastStatus;
6
6
  for (let i = 0; i < maxAttempts; i++) {
@@ -0,0 +1,36 @@
1
+ export type ErrorType = "auth" | "validation" | "rate_limit" | "server" | "network" | "internal";
2
+ interface MetaApiErrorInit {
3
+ message: string;
4
+ httpStatus?: number;
5
+ apiCode?: number;
6
+ apiSubcode?: number;
7
+ apiType?: string;
8
+ fbtraceId?: string;
9
+ endpoint: string;
10
+ method: string;
11
+ body?: string;
12
+ }
13
+ export declare class MetaApiError extends Error {
14
+ readonly httpStatus?: number;
15
+ readonly apiCode?: number;
16
+ readonly apiSubcode?: number;
17
+ readonly apiType?: string;
18
+ readonly fbtraceId?: string;
19
+ readonly endpoint: string;
20
+ readonly method: string;
21
+ readonly body?: string;
22
+ constructor(init: MetaApiErrorInit);
23
+ }
24
+ export declare function sanitizeRaw(text: string): string;
25
+ export interface McpErrorResult {
26
+ [key: string]: unknown;
27
+ content: {
28
+ type: "text";
29
+ text: string;
30
+ }[];
31
+ isError: true;
32
+ }
33
+ export declare function formatErrorResponse(error: unknown, label: string): McpErrorResult;
34
+ export declare function validationError(message: string): McpErrorResult;
35
+ export {};
36
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,YAAY,GAAG,YAAY,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,CAAC;AAEjG,UAAU,gBAAgB;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,qBAAa,YAAa,SAAQ,KAAK;IACrC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;gBAEX,IAAI,EAAE,gBAAgB;CAYnC;AA6DD,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAShD;AAeD,MAAM,WAAW,cAAc;IAC7B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IACvB,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC1C,OAAO,EAAE,IAAI,CAAC;CACf;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,cAAc,CAsBjF;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,CAU/D"}