@exileum/meta-mcp 3.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/LICENSE +21 -0
- package/README.md +335 -0
- package/dist/config.d.ts +10 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +11 -0
- package/dist/config.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +93 -0
- package/dist/index.js.map +1 -0
- package/dist/prompts/index.d.ts +3 -0
- package/dist/prompts/index.d.ts.map +1 -0
- package/dist/prompts/index.js +61 -0
- package/dist/prompts/index.js.map +1 -0
- package/dist/resources/instagram.d.ts +4 -0
- package/dist/resources/instagram.d.ts.map +1 -0
- package/dist/resources/instagram.js +17 -0
- package/dist/resources/instagram.js.map +1 -0
- package/dist/resources/threads.d.ts +4 -0
- package/dist/resources/threads.d.ts.map +1 -0
- package/dist/resources/threads.js +17 -0
- package/dist/resources/threads.js.map +1 -0
- package/dist/services/meta-client.d.ts +25 -0
- package/dist/services/meta-client.d.ts.map +1 -0
- package/dist/services/meta-client.js +115 -0
- package/dist/services/meta-client.js.map +1 -0
- package/dist/tools/instagram/comments.d.ts +4 -0
- package/dist/tools/instagram/comments.d.ts.map +1 -0
- package/dist/tools/instagram/comments.js +111 -0
- package/dist/tools/instagram/comments.js.map +1 -0
- package/dist/tools/instagram/hashtags.d.ts +4 -0
- package/dist/tools/instagram/hashtags.d.ts.map +1 -0
- package/dist/tools/instagram/hashtags.js +77 -0
- package/dist/tools/instagram/hashtags.js.map +1 -0
- package/dist/tools/instagram/media.d.ts +4 -0
- package/dist/tools/instagram/media.d.ts.map +1 -0
- package/dist/tools/instagram/media.js +82 -0
- package/dist/tools/instagram/media.js.map +1 -0
- package/dist/tools/instagram/mentions.d.ts +4 -0
- package/dist/tools/instagram/mentions.d.ts.map +1 -0
- package/dist/tools/instagram/mentions.js +41 -0
- package/dist/tools/instagram/mentions.js.map +1 -0
- package/dist/tools/instagram/messaging.d.ts +4 -0
- package/dist/tools/instagram/messaging.d.ts.map +1 -0
- package/dist/tools/instagram/messaging.js +80 -0
- package/dist/tools/instagram/messaging.js.map +1 -0
- package/dist/tools/instagram/profile.d.ts +4 -0
- package/dist/tools/instagram/profile.d.ts.map +1 -0
- package/dist/tools/instagram/profile.js +86 -0
- package/dist/tools/instagram/profile.js.map +1 -0
- package/dist/tools/instagram/publishing.d.ts +4 -0
- package/dist/tools/instagram/publishing.d.ts.map +1 -0
- package/dist/tools/instagram/publishing.js +202 -0
- package/dist/tools/instagram/publishing.js.map +1 -0
- package/dist/tools/meta/auth.d.ts +4 -0
- package/dist/tools/meta/auth.d.ts.map +1 -0
- package/dist/tools/meta/auth.js +82 -0
- package/dist/tools/meta/auth.js.map +1 -0
- package/dist/tools/threads/insights.d.ts +4 -0
- package/dist/tools/threads/insights.d.ts.map +1 -0
- package/dist/tools/threads/insights.js +37 -0
- package/dist/tools/threads/insights.js.map +1 -0
- package/dist/tools/threads/media.d.ts +4 -0
- package/dist/tools/threads/media.d.ts.map +1 -0
- package/dist/tools/threads/media.js +84 -0
- package/dist/tools/threads/media.js.map +1 -0
- package/dist/tools/threads/profile.d.ts +4 -0
- package/dist/tools/threads/profile.d.ts.map +1 -0
- package/dist/tools/threads/profile.js +42 -0
- package/dist/tools/threads/profile.js.map +1 -0
- package/dist/tools/threads/publishing.d.ts +4 -0
- package/dist/tools/threads/publishing.d.ts.map +1 -0
- package/dist/tools/threads/publishing.js +223 -0
- package/dist/tools/threads/publishing.js.map +1 -0
- package/dist/tools/threads/replies.d.ts +4 -0
- package/dist/tools/threads/replies.d.ts.map +1 -0
- package/dist/tools/threads/replies.js +99 -0
- package/dist/tools/threads/replies.js.map +1 -0
- package/dist/types.d.ts +45 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/package.json +60 -0
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export function registerThreadsMediaTools(server, client) {
|
|
3
|
+
// ─── threads_get_posts ───────────────────────────────────────
|
|
4
|
+
server.tool("threads_get_posts", "Get a list of published Threads posts.", {
|
|
5
|
+
limit: z.number().optional().describe("Number of results (default 25)"),
|
|
6
|
+
since: z.string().optional().describe("Start date (ISO 8601 or Unix timestamp)"),
|
|
7
|
+
until: z.string().optional().describe("End date (ISO 8601 or Unix timestamp)"),
|
|
8
|
+
after: z.string().optional().describe("Pagination cursor"),
|
|
9
|
+
before: z.string().optional().describe("Pagination cursor"),
|
|
10
|
+
}, async ({ limit, since, until, after, before }) => {
|
|
11
|
+
try {
|
|
12
|
+
const params = {
|
|
13
|
+
fields: "id,media_product_type,media_type,media_url,permalink,text,timestamp,shortcode,is_quote_post,has_replies,reply_audience,topic_tag,link_attachment_url,poll_attachment,gif_attachment,alt_text",
|
|
14
|
+
};
|
|
15
|
+
if (limit)
|
|
16
|
+
params.limit = limit;
|
|
17
|
+
if (since)
|
|
18
|
+
params.since = since;
|
|
19
|
+
if (until)
|
|
20
|
+
params.until = until;
|
|
21
|
+
if (after)
|
|
22
|
+
params.after = after;
|
|
23
|
+
if (before)
|
|
24
|
+
params.before = before;
|
|
25
|
+
const { data, rateLimit } = await client.threads("GET", `/${client.threadsUserId}/threads`, params);
|
|
26
|
+
return { content: [{ type: "text", text: JSON.stringify({ ...data, _rateLimit: rateLimit }, null, 2) }] };
|
|
27
|
+
}
|
|
28
|
+
catch (error) {
|
|
29
|
+
return { content: [{ type: "text", text: `Get posts failed: ${error instanceof Error ? error.message : String(error)}` }], isError: true };
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
// ─── threads_get_post ────────────────────────────────────────
|
|
33
|
+
server.tool("threads_get_post", "Get details of a specific Threads post.", {
|
|
34
|
+
post_id: z.string().describe("Threads post ID"),
|
|
35
|
+
fields: z.string().optional().describe("Comma-separated fields"),
|
|
36
|
+
}, async ({ post_id, fields }) => {
|
|
37
|
+
try {
|
|
38
|
+
const f = fields || "id,media_product_type,media_type,media_url,permalink,text,timestamp,shortcode,is_quote_post,has_replies,reply_audience,topic_tag,link_attachment_url,poll_attachment,gif_attachment,alt_text";
|
|
39
|
+
const { data, rateLimit } = await client.threads("GET", `/${post_id}`, { fields: f });
|
|
40
|
+
return { content: [{ type: "text", text: JSON.stringify({ ...data, _rateLimit: rateLimit }, null, 2) }] };
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
return { content: [{ type: "text", text: `Get post failed: ${error instanceof Error ? error.message : String(error)}` }], isError: true };
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
// ─── threads_search_posts ────────────────────────────────────
|
|
47
|
+
server.tool("threads_search_posts", "Search for public Threads posts by keyword or topic tag. Results can be filtered by media type and author.", {
|
|
48
|
+
q: z.string().describe("Search keyword or query"),
|
|
49
|
+
search_type: z.enum(["keyword", "tag"]).optional().describe("Search by keyword or topic tag (default: keyword)"),
|
|
50
|
+
media_type: z.enum(["TEXT", "IMAGE", "VIDEO", "CAROUSEL"]).optional().describe("Filter results by media type"),
|
|
51
|
+
author_username: z.string().optional().describe("Filter results by author username"),
|
|
52
|
+
since: z.string().optional().describe("Start date (Unix timestamp)"),
|
|
53
|
+
until: z.string().optional().describe("End date (Unix timestamp)"),
|
|
54
|
+
limit: z.number().optional().describe("Number of results"),
|
|
55
|
+
after: z.string().optional().describe("Pagination cursor"),
|
|
56
|
+
}, async ({ q, search_type, media_type, author_username, since, until, limit, after }) => {
|
|
57
|
+
try {
|
|
58
|
+
const params = {
|
|
59
|
+
q,
|
|
60
|
+
fields: "id,text,username,permalink,timestamp,media_type,media_url,topic_tag",
|
|
61
|
+
};
|
|
62
|
+
if (search_type)
|
|
63
|
+
params.search_type = search_type;
|
|
64
|
+
if (media_type)
|
|
65
|
+
params.media_type = media_type;
|
|
66
|
+
if (author_username)
|
|
67
|
+
params.author_username = author_username;
|
|
68
|
+
if (since)
|
|
69
|
+
params.since = since;
|
|
70
|
+
if (until)
|
|
71
|
+
params.until = until;
|
|
72
|
+
if (limit)
|
|
73
|
+
params.limit = limit;
|
|
74
|
+
if (after)
|
|
75
|
+
params.after = after;
|
|
76
|
+
const { data, rateLimit } = await client.threads("GET", `/${client.threadsUserId}/threads_search`, params);
|
|
77
|
+
return { content: [{ type: "text", text: JSON.stringify({ ...data, _rateLimit: rateLimit }, null, 2) }] };
|
|
78
|
+
}
|
|
79
|
+
catch (error) {
|
|
80
|
+
return { content: [{ type: "text", text: `Search posts failed: ${error instanceof Error ? error.message : String(error)}` }], isError: true };
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=media.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"media.js","sourceRoot":"","sources":["../../../src/tools/threads/media.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profile.d.ts","sourceRoot":"","sources":["../../../src/tools/threads/profile.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAE3D,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CA4CvF"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export function registerThreadsProfileTools(server, client) {
|
|
3
|
+
// ─── threads_get_profile ─────────────────────────────────────
|
|
4
|
+
server.tool("threads_get_profile", "Get Threads user profile information including verification status.", {}, async () => {
|
|
5
|
+
try {
|
|
6
|
+
const { data, rateLimit } = await client.threads("GET", `/${client.threadsUserId}`, {
|
|
7
|
+
fields: "id,username,name,threads_profile_picture_url,threads_biography,is_verified",
|
|
8
|
+
});
|
|
9
|
+
return { content: [{ type: "text", text: JSON.stringify({ ...data, _rateLimit: rateLimit }, null, 2) }] };
|
|
10
|
+
}
|
|
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)
|
|
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 };
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=profile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profile.js","sourceRoot":"","sources":["../../../src/tools/threads/profile.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
import { MetaClient } from "../../services/meta-client.js";
|
|
3
|
+
export declare function registerThreadsPublishingTools(server: McpServer, client: MetaClient): void;
|
|
4
|
+
//# sourceMappingURL=publishing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publishing.d.ts","sourceRoot":"","sources":["../../../src/tools/threads/publishing.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAe3D,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CAwN1F"}
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
async function waitForThreadsContainer(client, containerId, maxWait = 30) {
|
|
3
|
+
const interval = 2000;
|
|
4
|
+
const maxAttempts = Math.ceil((maxWait * 1000) / interval);
|
|
5
|
+
for (let i = 0; i < maxAttempts; i++) {
|
|
6
|
+
const { data } = await client.threads("GET", `/${containerId}`, { fields: "status" });
|
|
7
|
+
const status = data.status;
|
|
8
|
+
if (status === "FINISHED")
|
|
9
|
+
return;
|
|
10
|
+
if (status === "ERROR")
|
|
11
|
+
throw new Error("Threads container processing failed (ERROR status)");
|
|
12
|
+
await new Promise((r) => setTimeout(r, interval));
|
|
13
|
+
}
|
|
14
|
+
throw new Error(`Threads container processing timed out after ${maxWait}s`);
|
|
15
|
+
}
|
|
16
|
+
export function registerThreadsPublishingTools(server, client) {
|
|
17
|
+
// ─── threads_publish_text ────────────────────────────────────
|
|
18
|
+
server.tool("threads_publish_text", "Publish a text-only post on Threads. Supports optional link attachment, poll, GIF, topic tag, and quote post.", {
|
|
19
|
+
text: z.string().max(500).describe("Post text (max 500 chars)"),
|
|
20
|
+
reply_control: z.enum(["everyone", "accounts_you_follow", "mentioned_only", "parent_post_author_only", "followers_only"]).optional().describe("Who can reply"),
|
|
21
|
+
link_attachment: z.string().url().optional().describe("URL to attach as a link preview card (max 5 links per post)"),
|
|
22
|
+
topic_tag: z.string().max(50).optional().describe("Topic tag for the post (1-50 chars, no periods or ampersands)"),
|
|
23
|
+
quote_post_id: z.string().optional().describe("ID of a post to quote"),
|
|
24
|
+
poll_options: z.array(z.string()).min(2).max(4).optional().describe("Poll options (2-4 choices). Creates a poll attachment."),
|
|
25
|
+
gif_id: z.string().optional().describe("GIF ID from GIPHY or Tenor"),
|
|
26
|
+
gif_provider: z.enum(["GIPHY", "TENOR"]).optional().describe("GIF provider (GIPHY or TENOR). Tenor sunsets March 31, 2026."),
|
|
27
|
+
alt_text: z.string().max(1000).optional().describe("Alt text for accessibility (max 1000 chars)"),
|
|
28
|
+
is_spoiler: z.boolean().optional().describe("Mark content as spoiler"),
|
|
29
|
+
}, async ({ text, reply_control, link_attachment, topic_tag, quote_post_id, poll_options, gif_id, gif_provider, alt_text, is_spoiler }) => {
|
|
30
|
+
try {
|
|
31
|
+
const params = { media_type: "TEXT", text };
|
|
32
|
+
if (reply_control)
|
|
33
|
+
params.reply_control = reply_control;
|
|
34
|
+
if (link_attachment)
|
|
35
|
+
params.link_attachment = link_attachment;
|
|
36
|
+
if (topic_tag)
|
|
37
|
+
params.topic_tag = topic_tag;
|
|
38
|
+
if (quote_post_id)
|
|
39
|
+
params.quote_post_id = quote_post_id;
|
|
40
|
+
if (poll_options) {
|
|
41
|
+
params.poll_attachment = JSON.stringify({ options: poll_options.map(o => ({ option_text: o })) });
|
|
42
|
+
}
|
|
43
|
+
if (gif_id && gif_provider) {
|
|
44
|
+
params.gif_attachment = JSON.stringify({ gif_id, provider: gif_provider });
|
|
45
|
+
}
|
|
46
|
+
if (alt_text)
|
|
47
|
+
params.alt_text = alt_text;
|
|
48
|
+
if (is_spoiler)
|
|
49
|
+
params.is_spoiler_media = true;
|
|
50
|
+
const { data: container } = await client.threads("POST", `/${client.threadsUserId}/threads`, params);
|
|
51
|
+
const containerId = container.id;
|
|
52
|
+
const { data, rateLimit } = await client.threads("POST", `/${client.threadsUserId}/threads_publish`, {
|
|
53
|
+
creation_id: containerId,
|
|
54
|
+
});
|
|
55
|
+
return { content: [{ type: "text", text: JSON.stringify({ ...data, _rateLimit: rateLimit }, null, 2) }] };
|
|
56
|
+
}
|
|
57
|
+
catch (error) {
|
|
58
|
+
return { content: [{ type: "text", text: `Publish text failed: ${error instanceof Error ? error.message : String(error)}` }], isError: true };
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
// ─── threads_publish_image ───────────────────────────────────
|
|
62
|
+
server.tool("threads_publish_image", "Publish an image post on Threads. Supports topic tag, quote post, alt text, and spoiler flag.", {
|
|
63
|
+
image_url: z.string().url().describe("Public HTTPS URL of the image (JPEG/PNG, max 8MB)"),
|
|
64
|
+
text: z.string().max(500).optional().describe("Caption text"),
|
|
65
|
+
reply_control: z.enum(["everyone", "accounts_you_follow", "mentioned_only", "parent_post_author_only", "followers_only"]).optional().describe("Who can reply"),
|
|
66
|
+
topic_tag: z.string().max(50).optional().describe("Topic tag for the post"),
|
|
67
|
+
quote_post_id: z.string().optional().describe("ID of a post to quote"),
|
|
68
|
+
alt_text: z.string().max(1000).optional().describe("Alt text for accessibility (max 1000 chars)"),
|
|
69
|
+
is_spoiler: z.boolean().optional().describe("Mark content as spoiler"),
|
|
70
|
+
}, async ({ image_url, text, reply_control, topic_tag, quote_post_id, alt_text, is_spoiler }) => {
|
|
71
|
+
try {
|
|
72
|
+
const params = { media_type: "IMAGE", image_url };
|
|
73
|
+
if (text)
|
|
74
|
+
params.text = text;
|
|
75
|
+
if (reply_control)
|
|
76
|
+
params.reply_control = reply_control;
|
|
77
|
+
if (topic_tag)
|
|
78
|
+
params.topic_tag = topic_tag;
|
|
79
|
+
if (quote_post_id)
|
|
80
|
+
params.quote_post_id = quote_post_id;
|
|
81
|
+
if (alt_text)
|
|
82
|
+
params.alt_text = alt_text;
|
|
83
|
+
if (is_spoiler)
|
|
84
|
+
params.is_spoiler_media = true;
|
|
85
|
+
const { data: container } = await client.threads("POST", `/${client.threadsUserId}/threads`, params);
|
|
86
|
+
const containerId = container.id;
|
|
87
|
+
const { data, rateLimit } = await client.threads("POST", `/${client.threadsUserId}/threads_publish`, {
|
|
88
|
+
creation_id: containerId,
|
|
89
|
+
});
|
|
90
|
+
return { content: [{ type: "text", text: JSON.stringify({ ...data, _rateLimit: rateLimit }, null, 2) }] };
|
|
91
|
+
}
|
|
92
|
+
catch (error) {
|
|
93
|
+
return { content: [{ type: "text", text: `Publish image failed: ${error instanceof Error ? error.message : String(error)}` }], isError: true };
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
// ─── threads_publish_video ───────────────────────────────────
|
|
97
|
+
server.tool("threads_publish_video", "Publish a video post on Threads. Waits for video processing. Supports topic tag, quote post, alt text, and spoiler flag.", {
|
|
98
|
+
video_url: z.string().url().describe("Public HTTPS URL of the video (MP4/MOV, max 1GB, up to 5 min)"),
|
|
99
|
+
text: z.string().max(500).optional().describe("Caption text"),
|
|
100
|
+
reply_control: z.enum(["everyone", "accounts_you_follow", "mentioned_only", "parent_post_author_only", "followers_only"]).optional().describe("Who can reply"),
|
|
101
|
+
topic_tag: z.string().max(50).optional().describe("Topic tag for the post"),
|
|
102
|
+
quote_post_id: z.string().optional().describe("ID of a post to quote"),
|
|
103
|
+
alt_text: z.string().max(1000).optional().describe("Alt text for accessibility (max 1000 chars)"),
|
|
104
|
+
is_spoiler: z.boolean().optional().describe("Mark content as spoiler"),
|
|
105
|
+
}, async ({ video_url, text, reply_control, topic_tag, quote_post_id, alt_text, is_spoiler }) => {
|
|
106
|
+
try {
|
|
107
|
+
const params = { media_type: "VIDEO", video_url };
|
|
108
|
+
if (text)
|
|
109
|
+
params.text = text;
|
|
110
|
+
if (reply_control)
|
|
111
|
+
params.reply_control = reply_control;
|
|
112
|
+
if (topic_tag)
|
|
113
|
+
params.topic_tag = topic_tag;
|
|
114
|
+
if (quote_post_id)
|
|
115
|
+
params.quote_post_id = quote_post_id;
|
|
116
|
+
if (alt_text)
|
|
117
|
+
params.alt_text = alt_text;
|
|
118
|
+
if (is_spoiler)
|
|
119
|
+
params.is_spoiler_media = true;
|
|
120
|
+
const { data: container } = await client.threads("POST", `/${client.threadsUserId}/threads`, params);
|
|
121
|
+
const containerId = container.id;
|
|
122
|
+
await waitForThreadsContainer(client, containerId);
|
|
123
|
+
const { data, rateLimit } = await client.threads("POST", `/${client.threadsUserId}/threads_publish`, {
|
|
124
|
+
creation_id: containerId,
|
|
125
|
+
});
|
|
126
|
+
return { content: [{ type: "text", text: JSON.stringify({ ...data, _rateLimit: rateLimit }, null, 2) }] };
|
|
127
|
+
}
|
|
128
|
+
catch (error) {
|
|
129
|
+
return { content: [{ type: "text", text: `Publish video failed: ${error instanceof Error ? error.message : String(error)}` }], isError: true };
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
// ─── threads_publish_carousel ────────────────────────────────
|
|
133
|
+
server.tool("threads_publish_carousel", "Publish a carousel post on Threads with 2-20 images/videos.", {
|
|
134
|
+
items: z.array(z.object({
|
|
135
|
+
type: z.enum(["IMAGE", "VIDEO"]).describe("Media type"),
|
|
136
|
+
url: z.string().url().describe("Public HTTPS URL"),
|
|
137
|
+
alt_text: z.string().max(1000).optional().describe("Alt text for this item"),
|
|
138
|
+
})).min(2).max(20).describe("Array of media items"),
|
|
139
|
+
text: z.string().max(500).optional().describe("Caption text"),
|
|
140
|
+
reply_control: z.enum(["everyone", "accounts_you_follow", "mentioned_only", "parent_post_author_only", "followers_only"]).optional().describe("Who can reply"),
|
|
141
|
+
topic_tag: z.string().max(50).optional().describe("Topic tag for the post"),
|
|
142
|
+
quote_post_id: z.string().optional().describe("ID of a post to quote"),
|
|
143
|
+
}, async ({ items, text, reply_control, topic_tag, quote_post_id }) => {
|
|
144
|
+
try {
|
|
145
|
+
const childIds = [];
|
|
146
|
+
for (const item of items) {
|
|
147
|
+
const params = { media_type: item.type, is_carousel_item: true };
|
|
148
|
+
if (item.type === "IMAGE") {
|
|
149
|
+
params.image_url = item.url;
|
|
150
|
+
}
|
|
151
|
+
else {
|
|
152
|
+
params.video_url = item.url;
|
|
153
|
+
}
|
|
154
|
+
if (item.alt_text)
|
|
155
|
+
params.alt_text = item.alt_text;
|
|
156
|
+
const { data: child } = await client.threads("POST", `/${client.threadsUserId}/threads`, params);
|
|
157
|
+
const childId = child.id;
|
|
158
|
+
await waitForThreadsContainer(client, childId);
|
|
159
|
+
childIds.push(childId);
|
|
160
|
+
}
|
|
161
|
+
const carouselParams = {
|
|
162
|
+
media_type: "CAROUSEL",
|
|
163
|
+
children: childIds.join(","),
|
|
164
|
+
};
|
|
165
|
+
if (text)
|
|
166
|
+
carouselParams.text = text;
|
|
167
|
+
if (reply_control)
|
|
168
|
+
carouselParams.reply_control = reply_control;
|
|
169
|
+
if (topic_tag)
|
|
170
|
+
carouselParams.topic_tag = topic_tag;
|
|
171
|
+
if (quote_post_id)
|
|
172
|
+
carouselParams.quote_post_id = quote_post_id;
|
|
173
|
+
const { data: carousel } = await client.threads("POST", `/${client.threadsUserId}/threads`, carouselParams);
|
|
174
|
+
const carouselId = carousel.id;
|
|
175
|
+
const { data, rateLimit } = await client.threads("POST", `/${client.threadsUserId}/threads_publish`, {
|
|
176
|
+
creation_id: carouselId,
|
|
177
|
+
});
|
|
178
|
+
return { content: [{ type: "text", text: JSON.stringify({ ...data, _rateLimit: rateLimit }, null, 2) }] };
|
|
179
|
+
}
|
|
180
|
+
catch (error) {
|
|
181
|
+
return { content: [{ type: "text", text: `Publish carousel failed: ${error instanceof Error ? error.message : String(error)}` }], isError: true };
|
|
182
|
+
}
|
|
183
|
+
});
|
|
184
|
+
// ─── threads_delete_post ──────────────────────────────────────
|
|
185
|
+
server.tool("threads_delete_post", "Delete a Threads post. This action is irreversible. Rate limited to 100 deletions per 24 hours.", {
|
|
186
|
+
post_id: z.string().describe("Threads post ID to delete"),
|
|
187
|
+
}, async ({ post_id }) => {
|
|
188
|
+
try {
|
|
189
|
+
const { data, rateLimit } = await client.threads("DELETE", `/${post_id}`);
|
|
190
|
+
return { content: [{ type: "text", text: JSON.stringify({ success: true, ...data, _rateLimit: rateLimit }, null, 2) }] };
|
|
191
|
+
}
|
|
192
|
+
catch (error) {
|
|
193
|
+
return { content: [{ type: "text", text: `Delete post failed: ${error instanceof Error ? error.message : String(error)}` }], isError: true };
|
|
194
|
+
}
|
|
195
|
+
});
|
|
196
|
+
// ─── threads_get_container_status ────────────────────────────
|
|
197
|
+
server.tool("threads_get_container_status", "Check the processing status of a Threads media container.", {
|
|
198
|
+
container_id: z.string().describe("Container ID to check"),
|
|
199
|
+
}, async ({ container_id }) => {
|
|
200
|
+
try {
|
|
201
|
+
const { data, rateLimit } = await client.threads("GET", `/${container_id}`, {
|
|
202
|
+
fields: "id,status,error_message",
|
|
203
|
+
});
|
|
204
|
+
return { content: [{ type: "text", text: JSON.stringify({ ...data, _rateLimit: rateLimit }, null, 2) }] };
|
|
205
|
+
}
|
|
206
|
+
catch (error) {
|
|
207
|
+
return { content: [{ type: "text", text: `Get container status failed: ${error instanceof Error ? error.message : String(error)}` }], isError: true };
|
|
208
|
+
}
|
|
209
|
+
});
|
|
210
|
+
// ─── threads_get_publishing_limit ────────────────────────────
|
|
211
|
+
server.tool("threads_get_publishing_limit", "Check how many posts you can still publish within the current 24-hour window (max 250 posts/day).", {}, async () => {
|
|
212
|
+
try {
|
|
213
|
+
const { data, rateLimit } = await client.threads("GET", `/${client.threadsUserId}/threads_publishing_limit`, {
|
|
214
|
+
fields: "quota_usage,config",
|
|
215
|
+
});
|
|
216
|
+
return { content: [{ type: "text", text: JSON.stringify({ ...data, _rateLimit: rateLimit }, null, 2) }] };
|
|
217
|
+
}
|
|
218
|
+
catch (error) {
|
|
219
|
+
return { content: [{ type: "text", text: `Get publishing limit failed: ${error instanceof Error ? error.message : String(error)}` }], isError: true };
|
|
220
|
+
}
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
//# sourceMappingURL=publishing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publishing.js","sourceRoot":"","sources":["../../../src/tools/threads/publishing.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +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;AAE3D,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CA0GrF"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export function registerThreadsReplyTools(server, client) {
|
|
3
|
+
// ─── threads_get_replies ─────────────────────────────────────
|
|
4
|
+
server.tool("threads_get_replies", "Get replies (conversation) for a specific Threads post.", {
|
|
5
|
+
post_id: z.string().describe("Threads post ID to get replies for"),
|
|
6
|
+
reverse: z.boolean().optional().describe("Reverse chronological order"),
|
|
7
|
+
limit: z.number().optional().describe("Number of replies"),
|
|
8
|
+
after: z.string().optional().describe("Pagination cursor"),
|
|
9
|
+
}, async ({ post_id, reverse, limit, after }) => {
|
|
10
|
+
try {
|
|
11
|
+
const params = {
|
|
12
|
+
fields: "id,text,username,permalink,timestamp,media_type,media_url,has_replies,hide_status,is_verified,profile_picture_url",
|
|
13
|
+
};
|
|
14
|
+
if (reverse !== undefined)
|
|
15
|
+
params.reverse = reverse;
|
|
16
|
+
if (limit)
|
|
17
|
+
params.limit = limit;
|
|
18
|
+
if (after)
|
|
19
|
+
params.after = after;
|
|
20
|
+
const { data, rateLimit } = await client.threads("GET", `/${post_id}/replies`, params);
|
|
21
|
+
return { content: [{ type: "text", text: JSON.stringify({ ...data, _rateLimit: rateLimit }, null, 2) }] };
|
|
22
|
+
}
|
|
23
|
+
catch (error) {
|
|
24
|
+
return { content: [{ type: "text", text: `Get replies failed: ${error instanceof Error ? error.message : String(error)}` }], isError: true };
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
// ─── threads_reply ───────────────────────────────────────────
|
|
28
|
+
server.tool("threads_reply", "Reply to a Threads post or another reply.", {
|
|
29
|
+
reply_to_id: z.string().describe("Post ID to reply to"),
|
|
30
|
+
text: z.string().max(500).describe("Reply text"),
|
|
31
|
+
image_url: z.string().url().optional().describe("Optional image URL to attach"),
|
|
32
|
+
video_url: z.string().url().optional().describe("Optional video URL to attach"),
|
|
33
|
+
}, async ({ reply_to_id, text, image_url, video_url }) => {
|
|
34
|
+
try {
|
|
35
|
+
let mediaType = "TEXT";
|
|
36
|
+
if (image_url)
|
|
37
|
+
mediaType = "IMAGE";
|
|
38
|
+
if (video_url)
|
|
39
|
+
mediaType = "VIDEO";
|
|
40
|
+
const params = {
|
|
41
|
+
media_type: mediaType,
|
|
42
|
+
text,
|
|
43
|
+
reply_to_id,
|
|
44
|
+
};
|
|
45
|
+
if (image_url)
|
|
46
|
+
params.image_url = image_url;
|
|
47
|
+
if (video_url)
|
|
48
|
+
params.video_url = video_url;
|
|
49
|
+
const { data: container } = await client.threads("POST", `/${client.threadsUserId}/threads`, params);
|
|
50
|
+
const containerId = container.id;
|
|
51
|
+
if (video_url) {
|
|
52
|
+
// Wait for video processing
|
|
53
|
+
const interval = 2000;
|
|
54
|
+
const maxAttempts = 15;
|
|
55
|
+
for (let i = 0; i < maxAttempts; i++) {
|
|
56
|
+
const { data: status } = await client.threads("GET", `/${containerId}`, { fields: "status" });
|
|
57
|
+
const s = status.status;
|
|
58
|
+
if (s === "FINISHED")
|
|
59
|
+
break;
|
|
60
|
+
if (s === "ERROR")
|
|
61
|
+
throw new Error("Video processing failed");
|
|
62
|
+
await new Promise((r) => setTimeout(r, interval));
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
const { data, rateLimit } = await client.threads("POST", `/${client.threadsUserId}/threads_publish`, {
|
|
66
|
+
creation_id: containerId,
|
|
67
|
+
});
|
|
68
|
+
return { content: [{ type: "text", text: JSON.stringify({ ...data, _rateLimit: rateLimit }, null, 2) }] };
|
|
69
|
+
}
|
|
70
|
+
catch (error) {
|
|
71
|
+
return { content: [{ type: "text", text: `Reply failed: ${error instanceof Error ? error.message : String(error)}` }], isError: true };
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
// ─── threads_hide_reply ──────────────────────────────────────
|
|
75
|
+
server.tool("threads_hide_reply", "Hide a reply on your Threads post. Hidden replies are still visible if directly accessed.", {
|
|
76
|
+
reply_id: z.string().describe("Reply ID to hide"),
|
|
77
|
+
}, async ({ reply_id }) => {
|
|
78
|
+
try {
|
|
79
|
+
const { data, rateLimit } = await client.threads("POST", `/${reply_id}/manage_reply`, { hide: true });
|
|
80
|
+
return { content: [{ type: "text", text: JSON.stringify({ success: true, hidden: true, ...data, _rateLimit: rateLimit }, null, 2) }] };
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
return { content: [{ type: "text", text: `Hide reply failed: ${error instanceof Error ? error.message : String(error)}` }], isError: true };
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
// ─── threads_unhide_reply ────────────────────────────────────
|
|
87
|
+
server.tool("threads_unhide_reply", "Unhide a previously hidden reply on your Threads post.", {
|
|
88
|
+
reply_id: z.string().describe("Reply ID to unhide"),
|
|
89
|
+
}, async ({ reply_id }) => {
|
|
90
|
+
try {
|
|
91
|
+
const { data, rateLimit } = await client.threads("POST", `/${reply_id}/manage_reply`, { hide: false });
|
|
92
|
+
return { content: [{ type: "text", text: JSON.stringify({ success: true, hidden: false, ...data, _rateLimit: rateLimit }, null, 2) }] };
|
|
93
|
+
}
|
|
94
|
+
catch (error) {
|
|
95
|
+
return { content: [{ type: "text", text: `Unhide reply failed: ${error instanceof Error ? error.message : String(error)}` }], isError: true };
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=replies.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"replies.js","sourceRoot":"","sources":["../../../src/tools/threads/replies.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
export interface RateLimit {
|
|
2
|
+
callCount?: number;
|
|
3
|
+
totalCpuTime?: number;
|
|
4
|
+
totalTime?: number;
|
|
5
|
+
}
|
|
6
|
+
export interface ApiResponse<T = unknown> {
|
|
7
|
+
data: T;
|
|
8
|
+
rateLimit?: RateLimit;
|
|
9
|
+
}
|
|
10
|
+
export interface PaginatedResponse<T = unknown> {
|
|
11
|
+
data: T[];
|
|
12
|
+
paging?: {
|
|
13
|
+
cursors?: {
|
|
14
|
+
before?: string;
|
|
15
|
+
after?: string;
|
|
16
|
+
};
|
|
17
|
+
next?: string;
|
|
18
|
+
previous?: string;
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
export interface MediaContainer {
|
|
22
|
+
id: string;
|
|
23
|
+
status?: string;
|
|
24
|
+
status_code?: string;
|
|
25
|
+
}
|
|
26
|
+
export interface InstagramMedia {
|
|
27
|
+
id: string;
|
|
28
|
+
caption?: string;
|
|
29
|
+
media_type?: string;
|
|
30
|
+
media_url?: string;
|
|
31
|
+
permalink?: string;
|
|
32
|
+
timestamp?: string;
|
|
33
|
+
like_count?: number;
|
|
34
|
+
comments_count?: number;
|
|
35
|
+
}
|
|
36
|
+
export interface ThreadsPost {
|
|
37
|
+
id: string;
|
|
38
|
+
text?: string;
|
|
39
|
+
media_type?: string;
|
|
40
|
+
media_url?: string;
|
|
41
|
+
permalink?: string;
|
|
42
|
+
timestamp?: string;
|
|
43
|
+
shortcode?: string;
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,OAAO;IACtC,IAAI,EAAE,CAAC,CAAC;IACR,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED,MAAM,WAAW,iBAAiB,CAAC,CAAC,GAAG,OAAO;IAC5C,IAAI,EAAE,CAAC,EAAE,CAAC;IACV,MAAM,CAAC,EAAE;QACP,OAAO,CAAC,EAAE;YAAE,MAAM,CAAC,EAAE,MAAM,CAAC;YAAC,KAAK,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QAC9C,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|