@exileum/meta-mcp 6.0.0 → 7.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +14 -12
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -58
- package/dist/index.js.map +1 -1
- package/dist/register-all.d.ts +4 -0
- package/dist/register-all.d.ts.map +1 -0
- package/dist/register-all.js +41 -0
- package/dist/register-all.js.map +1 -0
- package/dist/services/meta-client.d.ts +54 -0
- package/dist/services/meta-client.d.ts.map +1 -1
- package/dist/services/meta-client.js +203 -45
- package/dist/services/meta-client.js.map +1 -1
- package/dist/tools/annotations.d.ts +6 -0
- package/dist/tools/annotations.d.ts.map +1 -0
- package/dist/tools/annotations.js +27 -0
- package/dist/tools/annotations.js.map +1 -0
- package/dist/tools/instagram/comments.d.ts.map +1 -1
- package/dist/tools/instagram/comments.js +63 -33
- package/dist/tools/instagram/comments.js.map +1 -1
- package/dist/tools/instagram/hashtags.d.ts.map +1 -1
- package/dist/tools/instagram/hashtags.js +36 -18
- package/dist/tools/instagram/hashtags.js.map +1 -1
- package/dist/tools/instagram/media.d.ts.map +1 -1
- package/dist/tools/instagram/media.js +46 -24
- package/dist/tools/instagram/media.js.map +1 -1
- package/dist/tools/instagram/mentions.d.ts.map +1 -1
- package/dist/tools/instagram/mentions.js +20 -10
- package/dist/tools/instagram/mentions.js.map +1 -1
- package/dist/tools/instagram/messaging.d.ts.map +1 -1
- package/dist/tools/instagram/messaging.js +65 -31
- package/dist/tools/instagram/messaging.js.map +1 -1
- package/dist/tools/instagram/profile.d.ts.map +1 -1
- package/dist/tools/instagram/profile.js +50 -28
- package/dist/tools/instagram/profile.js.map +1 -1
- package/dist/tools/instagram/publishing.d.ts.map +1 -1
- package/dist/tools/instagram/publishing.js +77 -51
- package/dist/tools/instagram/publishing.js.map +1 -1
- package/dist/tools/meta/auth.d.ts.map +1 -1
- package/dist/tools/meta/auth.js +47 -21
- package/dist/tools/meta/auth.js.map +1 -1
- package/dist/tools/threads/insights.d.ts.map +1 -1
- package/dist/tools/threads/insights.js +20 -10
- package/dist/tools/threads/insights.js.map +1 -1
- package/dist/tools/threads/media.d.ts.map +1 -1
- package/dist/tools/threads/media.js +37 -23
- package/dist/tools/threads/media.js.map +1 -1
- package/dist/tools/threads/mentions.d.ts.map +1 -1
- package/dist/tools/threads/mentions.js +12 -6
- package/dist/tools/threads/mentions.js.map +1 -1
- package/dist/tools/threads/profile.d.ts.map +1 -1
- package/dist/tools/threads/profile.js +8 -2
- package/dist/tools/threads/profile.js.map +1 -1
- package/dist/tools/threads/publishing.d.ts.map +1 -1
- package/dist/tools/threads/publishing.js +157 -73
- package/dist/tools/threads/publishing.js.map +1 -1
- package/dist/tools/threads/replies.d.ts.map +1 -1
- package/dist/tools/threads/replies.js +40 -22
- package/dist/tools/threads/replies.js.map +1 -1
- package/dist/utils/response.d.ts +11 -0
- package/dist/utils/response.d.ts.map +1 -0
- package/dist/utils/response.js +6 -0
- package/dist/utils/response.js.map +1 -0
- package/package.json +3 -3
|
@@ -2,6 +2,8 @@ import { z } from "zod";
|
|
|
2
2
|
import { httpsUrl, metaId } from "../../schemas.js";
|
|
3
3
|
import { waitForThreadsContainer, IMAGE_PROCESSING_TIMEOUT, VIDEO_PROCESSING_TIMEOUT } from "../../utils/container.js";
|
|
4
4
|
import { formatErrorResponse, validationError } from "../../utils/errors.js";
|
|
5
|
+
import { formatResponse } from "../../utils/response.js";
|
|
6
|
+
import { READ_ONLY_TOOL, DESTRUCTIVE_TOOL, WRITE_TOOL } from "../annotations.js";
|
|
5
7
|
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)");
|
|
6
8
|
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.");
|
|
7
9
|
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.");
|
|
@@ -34,24 +36,29 @@ function applyAllowlistedCountryCodes(params, codes) {
|
|
|
34
36
|
}
|
|
35
37
|
export function registerThreadsPublishingTools(server, client) {
|
|
36
38
|
// ─── threads_publish_text ────────────────────────────────────
|
|
37
|
-
server.
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
39
|
+
server.registerTool("threads_publish_text", {
|
|
40
|
+
description: "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, location tagging via location_id, 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.",
|
|
41
|
+
inputSchema: {
|
|
42
|
+
text: z.string().max(500).describe("Post text (max 500 chars)"),
|
|
43
|
+
reply_control: replyControlSchema,
|
|
44
|
+
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."),
|
|
45
|
+
topic_tag: topicTagSchema,
|
|
46
|
+
quote_post_id: z.string().optional().describe("ID of a post to quote"),
|
|
47
|
+
poll_options: pollOptionsSchema,
|
|
48
|
+
gif_id: z.string().min(1).optional().describe("GIPHY GIF ID. Must be provided together with gif_provider — providing only one returns an error."),
|
|
49
|
+
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."),
|
|
50
|
+
is_spoiler: z.boolean().optional().describe("Mark content as spoiler"),
|
|
51
|
+
share_to_ig_story: shareToIgStorySchema,
|
|
52
|
+
allowlisted_country_codes: allowlistedCountryCodesSchema,
|
|
53
|
+
location_id: z.string().optional().describe("Location ID for tagging the post. Use threads_search_locations to find IDs. Requires the threads_location_tagging permission on the access token."),
|
|
54
|
+
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."),
|
|
55
|
+
text_attachment_link: z.string().url().optional().describe("URL to include inside the text attachment card. Requires text_attachment."),
|
|
56
|
+
text_attachment_styling: textAttachmentStylingSchema,
|
|
57
|
+
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)."),
|
|
58
|
+
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."),
|
|
59
|
+
},
|
|
60
|
+
annotations: WRITE_TOOL,
|
|
61
|
+
}, 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, location_id, text_attachment, text_attachment_link, text_attachment_styling, auto_publish }) => {
|
|
55
62
|
try {
|
|
56
63
|
// Validate mutual exclusions
|
|
57
64
|
if (text_attachment && poll_options) {
|
|
@@ -131,6 +138,8 @@ export function registerThreadsPublishingTools(server, client) {
|
|
|
131
138
|
}
|
|
132
139
|
applyShareToIgStory(params, share_to_ig_story);
|
|
133
140
|
applyAllowlistedCountryCodes(params, allowlisted_country_codes);
|
|
141
|
+
if (location_id)
|
|
142
|
+
params.location_id = location_id;
|
|
134
143
|
// Treat `undefined` as the default (true) so the behavior is stable even
|
|
135
144
|
// if a caller bypasses Zod's schema-level default (e.g., direct handler
|
|
136
145
|
// invocation in tests). Only an explicit `false` takes the legacy path.
|
|
@@ -143,29 +152,34 @@ export function registerThreadsPublishingTools(server, client) {
|
|
|
143
152
|
if (typeof createResponse.id !== "string")
|
|
144
153
|
throw new Error("Container creation did not return a valid id");
|
|
145
154
|
if (useAutoPublish) {
|
|
146
|
-
return
|
|
155
|
+
return formatResponse(createResponse, createRateLimit);
|
|
147
156
|
}
|
|
148
157
|
const { data, rateLimit } = await client.threads("POST", `/${client.threadsUserId}/threads_publish`, {
|
|
149
158
|
creation_id: createResponse.id,
|
|
150
159
|
});
|
|
151
|
-
return
|
|
160
|
+
return formatResponse(data, rateLimit);
|
|
152
161
|
}
|
|
153
162
|
catch (error) {
|
|
154
163
|
return formatErrorResponse(error, "Publish text");
|
|
155
164
|
}
|
|
156
165
|
});
|
|
157
166
|
// ─── threads_publish_image ───────────────────────────────────
|
|
158
|
-
server.
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
167
|
+
server.registerTool("threads_publish_image", {
|
|
168
|
+
description: "Publish an image post on Threads. Supports topic tag, quote post, alt text, spoiler flag, cross-share to Instagram Stories, geo-gating via allowlisted_country_codes, and location tagging via location_id.",
|
|
169
|
+
inputSchema: {
|
|
170
|
+
image_url: httpsUrl.describe("Public HTTPS URL of the image (JPEG/PNG, max 8MB)"),
|
|
171
|
+
text: z.string().max(500).optional().describe("Caption text"),
|
|
172
|
+
reply_control: replyControlSchema,
|
|
173
|
+
topic_tag: topicTagSchema,
|
|
174
|
+
quote_post_id: z.string().optional().describe("ID of a post to quote"),
|
|
175
|
+
alt_text: z.string().max(1000).optional().describe("Alt text for accessibility (max 1000 chars)"),
|
|
176
|
+
is_spoiler: z.boolean().optional().describe("Mark content as spoiler"),
|
|
177
|
+
share_to_ig_story: shareToIgStorySchema,
|
|
178
|
+
allowlisted_country_codes: allowlistedCountryCodesSchema,
|
|
179
|
+
location_id: z.string().optional().describe("Location ID for tagging the post. Use threads_search_locations to find IDs. Requires the threads_location_tagging permission on the access token."),
|
|
180
|
+
},
|
|
181
|
+
annotations: WRITE_TOOL,
|
|
182
|
+
}, async ({ image_url, text, reply_control, topic_tag, quote_post_id, alt_text, is_spoiler, share_to_ig_story, allowlisted_country_codes, location_id }) => {
|
|
169
183
|
try {
|
|
170
184
|
const params = { media_type: "IMAGE", image_url };
|
|
171
185
|
if (text)
|
|
@@ -182,6 +196,8 @@ export function registerThreadsPublishingTools(server, client) {
|
|
|
182
196
|
params.is_spoiler_media = true;
|
|
183
197
|
applyShareToIgStory(params, share_to_ig_story);
|
|
184
198
|
applyAllowlistedCountryCodes(params, allowlisted_country_codes);
|
|
199
|
+
if (location_id)
|
|
200
|
+
params.location_id = location_id;
|
|
185
201
|
const { data: container } = await client.threads("POST", `/${client.threadsUserId}/threads`, params);
|
|
186
202
|
if (typeof container.id !== "string")
|
|
187
203
|
throw new Error("Container creation did not return a valid id");
|
|
@@ -190,24 +206,29 @@ export function registerThreadsPublishingTools(server, client) {
|
|
|
190
206
|
const { data, rateLimit } = await client.threads("POST", `/${client.threadsUserId}/threads_publish`, {
|
|
191
207
|
creation_id: containerId,
|
|
192
208
|
});
|
|
193
|
-
return
|
|
209
|
+
return formatResponse(data, rateLimit);
|
|
194
210
|
}
|
|
195
211
|
catch (error) {
|
|
196
212
|
return formatErrorResponse(error, "Publish image");
|
|
197
213
|
}
|
|
198
214
|
});
|
|
199
215
|
// ─── threads_publish_video ───────────────────────────────────
|
|
200
|
-
server.
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
216
|
+
server.registerTool("threads_publish_video", {
|
|
217
|
+
description: "Publish a video post on Threads. Waits for video processing. Supports topic tag, quote post, alt text, spoiler flag, cross-share to Instagram Stories, geo-gating via allowlisted_country_codes, and location tagging via location_id. Note: cross-share to IG Stories may silently fail for video posts (the Threads post still publishes).",
|
|
218
|
+
inputSchema: {
|
|
219
|
+
video_url: httpsUrl.describe("Public HTTPS URL of the video (MP4/MOV, max 1GB, up to 5 min)"),
|
|
220
|
+
text: z.string().max(500).optional().describe("Caption text"),
|
|
221
|
+
reply_control: replyControlSchema,
|
|
222
|
+
topic_tag: topicTagSchema,
|
|
223
|
+
quote_post_id: z.string().optional().describe("ID of a post to quote"),
|
|
224
|
+
alt_text: z.string().max(1000).optional().describe("Alt text for accessibility (max 1000 chars)"),
|
|
225
|
+
is_spoiler: z.boolean().optional().describe("Mark content as spoiler"),
|
|
226
|
+
share_to_ig_story: shareToIgStorySchema,
|
|
227
|
+
allowlisted_country_codes: allowlistedCountryCodesSchema,
|
|
228
|
+
location_id: z.string().optional().describe("Location ID for tagging the post. Use threads_search_locations to find IDs. Requires the threads_location_tagging permission on the access token."),
|
|
229
|
+
},
|
|
230
|
+
annotations: WRITE_TOOL,
|
|
231
|
+
}, async ({ video_url, text, reply_control, topic_tag, quote_post_id, alt_text, is_spoiler, share_to_ig_story, allowlisted_country_codes, location_id }) => {
|
|
211
232
|
try {
|
|
212
233
|
const params = { media_type: "VIDEO", video_url };
|
|
213
234
|
if (text)
|
|
@@ -224,6 +245,8 @@ export function registerThreadsPublishingTools(server, client) {
|
|
|
224
245
|
params.is_spoiler_media = true;
|
|
225
246
|
applyShareToIgStory(params, share_to_ig_story);
|
|
226
247
|
applyAllowlistedCountryCodes(params, allowlisted_country_codes);
|
|
248
|
+
if (location_id)
|
|
249
|
+
params.location_id = location_id;
|
|
227
250
|
const { data: container } = await client.threads("POST", `/${client.threadsUserId}/threads`, params);
|
|
228
251
|
if (typeof container.id !== "string")
|
|
229
252
|
throw new Error("Container creation did not return a valid id");
|
|
@@ -232,29 +255,35 @@ export function registerThreadsPublishingTools(server, client) {
|
|
|
232
255
|
const { data, rateLimit } = await client.threads("POST", `/${client.threadsUserId}/threads_publish`, {
|
|
233
256
|
creation_id: containerId,
|
|
234
257
|
});
|
|
235
|
-
return
|
|
258
|
+
return formatResponse(data, rateLimit);
|
|
236
259
|
}
|
|
237
260
|
catch (error) {
|
|
238
261
|
return formatErrorResponse(error, "Publish video");
|
|
239
262
|
}
|
|
240
263
|
});
|
|
241
264
|
// ─── threads_publish_carousel ────────────────────────────────
|
|
242
|
-
server.
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
265
|
+
server.registerTool("threads_publish_carousel", {
|
|
266
|
+
description: "Publish a carousel post on Threads with 2-20 images/videos. Supports cross-share to Instagram Stories, geo-gating via allowlisted_country_codes, and location tagging via location_id (parent container only).",
|
|
267
|
+
inputSchema: {
|
|
268
|
+
items: z.array(z.object({
|
|
269
|
+
type: z.enum(["IMAGE", "VIDEO"]).describe("Media type"),
|
|
270
|
+
url: httpsUrl.describe("Public HTTPS URL"),
|
|
271
|
+
alt_text: z.string().max(1000).optional().describe("Alt text for this item"),
|
|
272
|
+
})).min(2).max(20).describe("Array of media items"),
|
|
273
|
+
text: z.string().max(500).optional().describe("Caption text"),
|
|
274
|
+
reply_control: replyControlSchema,
|
|
275
|
+
topic_tag: topicTagSchema,
|
|
276
|
+
quote_post_id: z.string().optional().describe("ID of a post to quote"),
|
|
277
|
+
share_to_ig_story: shareToIgStorySchema,
|
|
278
|
+
allowlisted_country_codes: allowlistedCountryCodesSchema,
|
|
279
|
+
location_id: z.string().optional().describe("Location ID for tagging the post. Use threads_search_locations to find IDs. Requires the threads_location_tagging permission on the access token."),
|
|
280
|
+
},
|
|
281
|
+
annotations: WRITE_TOOL,
|
|
282
|
+
}, async ({ items, text, reply_control, topic_tag, quote_post_id, share_to_ig_story, allowlisted_country_codes, location_id }) => {
|
|
255
283
|
try {
|
|
256
|
-
|
|
257
|
-
|
|
284
|
+
// Children are independent — create them in parallel. Errors propagate
|
|
285
|
+
// unwrapped so formatErrorResponse keeps MetaApiError categorization.
|
|
286
|
+
const childIds = await Promise.all(items.map(async (item) => {
|
|
258
287
|
const params = { media_type: item.type, is_carousel_item: true };
|
|
259
288
|
if (item.type === "IMAGE") {
|
|
260
289
|
params.image_url = item.url;
|
|
@@ -269,8 +298,8 @@ export function registerThreadsPublishingTools(server, client) {
|
|
|
269
298
|
throw new Error("Container creation did not return a valid id");
|
|
270
299
|
const childId = child.id;
|
|
271
300
|
await waitForThreadsContainer(client, childId, item.type === "VIDEO" ? VIDEO_PROCESSING_TIMEOUT : IMAGE_PROCESSING_TIMEOUT);
|
|
272
|
-
|
|
273
|
-
}
|
|
301
|
+
return childId;
|
|
302
|
+
}));
|
|
274
303
|
const carouselParams = {
|
|
275
304
|
media_type: "CAROUSEL",
|
|
276
305
|
children: childIds.join(","),
|
|
@@ -285,6 +314,8 @@ export function registerThreadsPublishingTools(server, client) {
|
|
|
285
314
|
carouselParams.quote_post_id = quote_post_id;
|
|
286
315
|
applyShareToIgStory(carouselParams, share_to_ig_story);
|
|
287
316
|
applyAllowlistedCountryCodes(carouselParams, allowlisted_country_codes);
|
|
317
|
+
if (location_id)
|
|
318
|
+
carouselParams.location_id = location_id;
|
|
288
319
|
const { data: carousel } = await client.threads("POST", `/${client.threadsUserId}/threads`, carouselParams);
|
|
289
320
|
if (typeof carousel.id !== "string")
|
|
290
321
|
throw new Error("Container creation did not return a valid id");
|
|
@@ -293,33 +324,41 @@ export function registerThreadsPublishingTools(server, client) {
|
|
|
293
324
|
const { data, rateLimit } = await client.threads("POST", `/${client.threadsUserId}/threads_publish`, {
|
|
294
325
|
creation_id: carouselId,
|
|
295
326
|
});
|
|
296
|
-
return
|
|
327
|
+
return formatResponse(data, rateLimit);
|
|
297
328
|
}
|
|
298
329
|
catch (error) {
|
|
299
330
|
return formatErrorResponse(error, "Publish carousel");
|
|
300
331
|
}
|
|
301
332
|
});
|
|
302
333
|
// ─── threads_delete_post ──────────────────────────────────────
|
|
303
|
-
server.
|
|
304
|
-
|
|
334
|
+
server.registerTool("threads_delete_post", {
|
|
335
|
+
description: "Delete a Threads post. This action is irreversible. Rate limited to 100 deletions per 24 hours.",
|
|
336
|
+
inputSchema: {
|
|
337
|
+
post_id: metaId.describe("Threads post ID to delete"),
|
|
338
|
+
},
|
|
339
|
+
annotations: DESTRUCTIVE_TOOL,
|
|
305
340
|
}, async ({ post_id }) => {
|
|
306
341
|
try {
|
|
307
342
|
const { data, rateLimit } = await client.threads("DELETE", `/${post_id}`);
|
|
308
|
-
return
|
|
343
|
+
return formatResponse({ success: true, ...data }, rateLimit);
|
|
309
344
|
}
|
|
310
345
|
catch (error) {
|
|
311
346
|
return formatErrorResponse(error, "Delete post");
|
|
312
347
|
}
|
|
313
348
|
});
|
|
314
349
|
// ─── threads_get_container_status ────────────────────────────
|
|
315
|
-
server.
|
|
316
|
-
|
|
350
|
+
server.registerTool("threads_get_container_status", {
|
|
351
|
+
description: "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.",
|
|
352
|
+
inputSchema: {
|
|
353
|
+
container_id: metaId.describe("Unpublished container ID to check (from container creation, not a published post ID)"),
|
|
354
|
+
},
|
|
355
|
+
annotations: READ_ONLY_TOOL,
|
|
317
356
|
}, async ({ container_id }) => {
|
|
318
357
|
try {
|
|
319
358
|
const { data, rateLimit } = await client.threads("GET", `/${container_id}`, {
|
|
320
359
|
fields: "id,status,error_message",
|
|
321
360
|
});
|
|
322
|
-
return
|
|
361
|
+
return formatResponse(data, rateLimit);
|
|
323
362
|
}
|
|
324
363
|
catch (error) {
|
|
325
364
|
const msg = error instanceof Error ? error.message : String(error);
|
|
@@ -330,28 +369,73 @@ export function registerThreadsPublishingTools(server, client) {
|
|
|
330
369
|
}
|
|
331
370
|
});
|
|
332
371
|
// ─── threads_get_publishing_limit ────────────────────────────
|
|
333
|
-
server.
|
|
372
|
+
server.registerTool("threads_get_publishing_limit", {
|
|
373
|
+
description: "Check how many posts you can still publish within the current 24-hour window (max 250 posts/day).",
|
|
374
|
+
inputSchema: {},
|
|
375
|
+
annotations: READ_ONLY_TOOL,
|
|
376
|
+
}, async () => {
|
|
334
377
|
try {
|
|
335
378
|
const { data, rateLimit } = await client.threads("GET", `/${client.threadsUserId}/threads_publishing_limit`, {
|
|
336
379
|
fields: "quota_usage,config",
|
|
337
380
|
});
|
|
338
|
-
return
|
|
381
|
+
return formatResponse(data, rateLimit);
|
|
339
382
|
}
|
|
340
383
|
catch (error) {
|
|
341
384
|
return formatErrorResponse(error, "Get publishing limit");
|
|
342
385
|
}
|
|
343
386
|
});
|
|
344
387
|
// ─── threads_repost ──────────────────────────────────────────
|
|
345
|
-
server.
|
|
346
|
-
|
|
388
|
+
server.registerTool("threads_repost", {
|
|
389
|
+
description: "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.",
|
|
390
|
+
inputSchema: {
|
|
391
|
+
post_id: metaId.describe("Threads post ID to repost"),
|
|
392
|
+
},
|
|
393
|
+
annotations: WRITE_TOOL,
|
|
347
394
|
}, async ({ post_id }) => {
|
|
348
395
|
try {
|
|
349
396
|
const { data, rateLimit } = await client.threads("POST", `/${post_id}/repost`, {});
|
|
350
|
-
return
|
|
397
|
+
return formatResponse(data, rateLimit);
|
|
351
398
|
}
|
|
352
399
|
catch (error) {
|
|
353
400
|
return formatErrorResponse(error, "Repost");
|
|
354
401
|
}
|
|
355
402
|
});
|
|
403
|
+
// ─── threads_search_locations ────────────────────────────────
|
|
404
|
+
server.registerTool("threads_search_locations", {
|
|
405
|
+
description: "Search Threads-supported locations by keyword or coordinates. Returns a list of location objects (id, name, address, city, country, latitude, longitude, postal_code) whose id can be passed as location_id to the four threads_publish_* tools to tag a post. Either q or both latitude+longitude must be provided. Requires the threads_location_tagging permission; without app approval, the endpoint restricts results to the literal query 'Menlo Park' for testing.",
|
|
406
|
+
inputSchema: {
|
|
407
|
+
q: z.string().min(1).optional().describe("Search query (e.g., 'Menlo Park'). Either q or both latitude+longitude must be provided. If your app does not yet have the threads_location_tagging permission, the API restricts results to the literal query 'Menlo Park' for testing."),
|
|
408
|
+
latitude: z.number().min(-90).max(90).optional().describe("Latitude in decimal degrees (-90..90). Must be provided together with longitude."),
|
|
409
|
+
longitude: z.number().min(-180).max(180).optional().describe("Longitude in decimal degrees (-180..180). Must be provided together with latitude."),
|
|
410
|
+
},
|
|
411
|
+
annotations: READ_ONLY_TOOL,
|
|
412
|
+
}, async ({ q, latitude, longitude }) => {
|
|
413
|
+
try {
|
|
414
|
+
const hasLat = latitude !== undefined;
|
|
415
|
+
const hasLng = longitude !== undefined;
|
|
416
|
+
const hasCoords = hasLat || hasLng;
|
|
417
|
+
if (q === undefined && !hasCoords) {
|
|
418
|
+
return validationError("threads_search_locations requires either q or both latitude and longitude.");
|
|
419
|
+
}
|
|
420
|
+
if (q !== undefined && hasCoords) {
|
|
421
|
+
return validationError("threads_search_locations accepts either q or latitude+longitude, not both.");
|
|
422
|
+
}
|
|
423
|
+
if (hasCoords && !(hasLat && hasLng)) {
|
|
424
|
+
return validationError("threads_search_locations requires both latitude and longitude when searching by coordinates.");
|
|
425
|
+
}
|
|
426
|
+
const params = {};
|
|
427
|
+
if (q !== undefined)
|
|
428
|
+
params.q = q;
|
|
429
|
+
if (hasLat)
|
|
430
|
+
params.latitude = latitude;
|
|
431
|
+
if (hasLng)
|
|
432
|
+
params.longitude = longitude;
|
|
433
|
+
const { data, rateLimit } = await client.threads("GET", "/location_search", params);
|
|
434
|
+
return formatResponse(data, rateLimit);
|
|
435
|
+
}
|
|
436
|
+
catch (error) {
|
|
437
|
+
return formatErrorResponse(error, "Search locations");
|
|
438
|
+
}
|
|
439
|
+
});
|
|
356
440
|
}
|
|
357
441
|
//# sourceMappingURL=publishing.js.map
|
|
@@ -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 +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,EAAc,MAAM,+BAA+B,CAAC;
|
|
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;AAavE,eAAO,MAAM,gCAAgC,kKAA2D,CAAC;AACzG,eAAO,MAAM,gCAAgC,kIAAsB,CAAC;AAEpE,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CAsIrF"}
|
|
@@ -2,6 +2,8 @@ import { z } from "zod";
|
|
|
2
2
|
import { httpsUrl, metaId } from "../../schemas.js";
|
|
3
3
|
import { waitForThreadsContainer, IMAGE_PROCESSING_TIMEOUT, VIDEO_PROCESSING_TIMEOUT } from "../../utils/container.js";
|
|
4
4
|
import { formatErrorResponse, validationError } from "../../utils/errors.js";
|
|
5
|
+
import { formatResponse } from "../../utils/response.js";
|
|
6
|
+
import { READ_ONLY_TOOL, WRITE_TOOL, WRITE_IDEMPOTENT_TOOL } from "../annotations.js";
|
|
5
7
|
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
8
|
// is_verified / profile_picture_url are documented as "Only available on direct
|
|
7
9
|
// replies." Populated for /{post}/replies (top_level), but undefined for nested
|
|
@@ -11,13 +13,17 @@ export const REPLIES_TOP_LEVEL_DEFAULT_FIELDS = `${REPLIES_BASE_FIELDS},is_verif
|
|
|
11
13
|
export const REPLIES_FULL_TREE_DEFAULT_FIELDS = REPLIES_BASE_FIELDS;
|
|
12
14
|
export function registerThreadsReplyTools(server, client) {
|
|
13
15
|
// ─── threads_get_replies ─────────────────────────────────────
|
|
14
|
-
server.
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
16
|
+
server.registerTool("threads_get_replies", {
|
|
17
|
+
description: "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.",
|
|
18
|
+
inputSchema: {
|
|
19
|
+
post_id: metaId.describe("Threads post ID to get replies for"),
|
|
20
|
+
mode: z.enum(["top_level", "full_tree"]).optional().describe("'top_level' (default) returns only direct replies; 'full_tree' returns the full conversation tree flattened"),
|
|
21
|
+
reverse: z.boolean().optional().describe("Reverse chronological order"),
|
|
22
|
+
limit: z.number().optional().describe("Number of replies"),
|
|
23
|
+
after: z.string().optional().describe("Pagination cursor"),
|
|
24
|
+
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."),
|
|
25
|
+
},
|
|
26
|
+
annotations: READ_ONLY_TOOL,
|
|
21
27
|
}, async ({ post_id, mode, reverse, limit, after, fields }) => {
|
|
22
28
|
try {
|
|
23
29
|
const defaultFields = mode === "full_tree"
|
|
@@ -34,19 +40,23 @@ export function registerThreadsReplyTools(server, client) {
|
|
|
34
40
|
params.after = after;
|
|
35
41
|
const edge = mode === "full_tree" ? "conversation" : "replies";
|
|
36
42
|
const { data, rateLimit } = await client.threads("GET", `/${post_id}/${edge}`, params);
|
|
37
|
-
return
|
|
43
|
+
return formatResponse(data, rateLimit);
|
|
38
44
|
}
|
|
39
45
|
catch (error) {
|
|
40
46
|
return formatErrorResponse(error, "Get replies");
|
|
41
47
|
}
|
|
42
48
|
});
|
|
43
49
|
// ─── threads_reply ───────────────────────────────────────────
|
|
44
|
-
server.
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
+
server.registerTool("threads_reply", {
|
|
51
|
+
description: "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.",
|
|
52
|
+
inputSchema: {
|
|
53
|
+
reply_to_id: z.string().describe("Post ID to reply to"),
|
|
54
|
+
text: z.string().max(500).describe("Reply text"),
|
|
55
|
+
image_url: httpsUrl.optional().describe("Optional image HTTPS URL to attach. Mutually exclusive with video_url."),
|
|
56
|
+
video_url: httpsUrl.optional().describe("Optional video HTTPS URL to attach. Mutually exclusive with image_url."),
|
|
57
|
+
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."),
|
|
58
|
+
},
|
|
59
|
+
annotations: WRITE_TOOL,
|
|
50
60
|
}, async ({ reply_to_id, text, image_url, video_url, auto_publish }) => {
|
|
51
61
|
try {
|
|
52
62
|
if (image_url && video_url) {
|
|
@@ -79,7 +89,7 @@ export function registerThreadsReplyTools(server, client) {
|
|
|
79
89
|
if (typeof createResponse.id !== "string")
|
|
80
90
|
throw new Error("Container creation did not return a valid id");
|
|
81
91
|
if (useAutoPublish) {
|
|
82
|
-
return
|
|
92
|
+
return formatResponse(createResponse, createRateLimit);
|
|
83
93
|
}
|
|
84
94
|
if (image_url || video_url) {
|
|
85
95
|
await waitForThreadsContainer(client, createResponse.id, video_url ? VIDEO_PROCESSING_TIMEOUT : IMAGE_PROCESSING_TIMEOUT);
|
|
@@ -87,31 +97,39 @@ export function registerThreadsReplyTools(server, client) {
|
|
|
87
97
|
const { data, rateLimit } = await client.threads("POST", `/${client.threadsUserId}/threads_publish`, {
|
|
88
98
|
creation_id: createResponse.id,
|
|
89
99
|
});
|
|
90
|
-
return
|
|
100
|
+
return formatResponse(data, rateLimit);
|
|
91
101
|
}
|
|
92
102
|
catch (error) {
|
|
93
103
|
return formatErrorResponse(error, "Reply");
|
|
94
104
|
}
|
|
95
105
|
});
|
|
96
106
|
// ─── threads_hide_reply ──────────────────────────────────────
|
|
97
|
-
server.
|
|
98
|
-
|
|
107
|
+
server.registerTool("threads_hide_reply", {
|
|
108
|
+
description: "Hide a reply on your Threads post. Hidden replies are still visible if directly accessed.",
|
|
109
|
+
inputSchema: {
|
|
110
|
+
reply_id: metaId.describe("Reply ID to hide"),
|
|
111
|
+
},
|
|
112
|
+
annotations: WRITE_IDEMPOTENT_TOOL,
|
|
99
113
|
}, async ({ reply_id }) => {
|
|
100
114
|
try {
|
|
101
115
|
const { data, rateLimit } = await client.threads("POST", `/${reply_id}/manage_reply`, { hide: true });
|
|
102
|
-
return
|
|
116
|
+
return formatResponse({ success: true, hidden: true, ...data }, rateLimit);
|
|
103
117
|
}
|
|
104
118
|
catch (error) {
|
|
105
119
|
return formatErrorResponse(error, "Hide reply");
|
|
106
120
|
}
|
|
107
121
|
});
|
|
108
122
|
// ─── threads_unhide_reply ────────────────────────────────────
|
|
109
|
-
server.
|
|
110
|
-
|
|
123
|
+
server.registerTool("threads_unhide_reply", {
|
|
124
|
+
description: "Unhide a previously hidden reply on your Threads post.",
|
|
125
|
+
inputSchema: {
|
|
126
|
+
reply_id: metaId.describe("Reply ID to unhide"),
|
|
127
|
+
},
|
|
128
|
+
annotations: WRITE_IDEMPOTENT_TOOL,
|
|
111
129
|
}, async ({ reply_id }) => {
|
|
112
130
|
try {
|
|
113
131
|
const { data, rateLimit } = await client.threads("POST", `/${reply_id}/manage_reply`, { hide: false });
|
|
114
|
-
return
|
|
132
|
+
return formatResponse({ success: true, hidden: false, ...data }, rateLimit);
|
|
115
133
|
}
|
|
116
134
|
catch (error) {
|
|
117
135
|
return formatErrorResponse(error, "Unhide reply");
|