@exileum/meta-mcp 7.0.0 → 8.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 +31 -7
- package/dist/constants/fields.d.ts +6 -0
- package/dist/constants/fields.d.ts.map +1 -0
- package/dist/constants/fields.js +25 -0
- package/dist/constants/fields.js.map +1 -0
- package/dist/http-transport.d.ts +20 -0
- package/dist/http-transport.d.ts.map +1 -0
- package/dist/http-transport.js +228 -0
- package/dist/http-transport.js.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +76 -26
- package/dist/index.js.map +1 -1
- package/dist/prompts/index.d.ts +56 -0
- package/dist/prompts/index.d.ts.map +1 -1
- package/dist/prompts/index.js +264 -41
- package/dist/prompts/index.js.map +1 -1
- package/dist/resources/instagram.d.ts.map +1 -1
- package/dist/resources/instagram.js +13 -4
- package/dist/resources/instagram.js.map +1 -1
- package/dist/resources/threads.d.ts.map +1 -1
- package/dist/resources/threads.js +13 -4
- package/dist/resources/threads.js.map +1 -1
- package/dist/services/meta-client.d.ts +22 -3
- package/dist/services/meta-client.d.ts.map +1 -1
- package/dist/services/meta-client.js +132 -6
- package/dist/services/meta-client.js.map +1 -1
- package/dist/shutdown.d.ts +18 -0
- package/dist/shutdown.d.ts.map +1 -0
- package/dist/shutdown.js +60 -0
- package/dist/shutdown.js.map +1 -0
- package/dist/tools/instagram/comments.d.ts.map +1 -1
- package/dist/tools/instagram/comments.js +14 -19
- package/dist/tools/instagram/comments.js.map +1 -1
- package/dist/tools/instagram/hashtags.d.ts +1 -0
- package/dist/tools/instagram/hashtags.d.ts.map +1 -1
- package/dist/tools/instagram/hashtags.js +19 -19
- 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 +8 -11
- 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 +2 -7
- 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 +10 -20
- package/dist/tools/instagram/messaging.js.map +1 -1
- package/dist/tools/instagram/profile.d.ts +2 -0
- package/dist/tools/instagram/profile.d.ts.map +1 -1
- package/dist/tools/instagram/profile.js +13 -15
- 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 +133 -96
- 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 +18 -2
- 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 +2 -5
- 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 +5 -47
- 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 +3 -10
- package/dist/tools/threads/mentions.js.map +1 -1
- package/dist/tools/threads/profile.d.ts +2 -0
- package/dist/tools/threads/profile.d.ts.map +1 -1
- package/dist/tools/threads/profile.js +10 -1
- 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 +122 -103
- 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 +15 -23
- package/dist/tools/threads/replies.js.map +1 -1
- package/dist/utils/container.d.ts +16 -4
- package/dist/utils/container.d.ts.map +1 -1
- package/dist/utils/container.js +36 -6
- package/dist/utils/container.js.map +1 -1
- package/dist/utils/errors.d.ts +23 -3
- package/dist/utils/errors.d.ts.map +1 -1
- package/dist/utils/errors.js +32 -2
- package/dist/utils/errors.js.map +1 -1
- package/dist/utils/logger.d.ts +28 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +32 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/params.d.ts +3 -0
- package/dist/utils/params.d.ts.map +1 -0
- package/dist/utils/params.js +14 -0
- package/dist/utils/params.js.map +1 -0
- package/dist/utils/progress.d.ts +42 -0
- package/dist/utils/progress.d.ts.map +1 -0
- package/dist/utils/progress.js +35 -0
- package/dist/utils/progress.js.map +1 -0
- package/package.json +3 -2
|
@@ -3,7 +3,19 @@ import { httpsUrl, metaId } from "../../schemas.js";
|
|
|
3
3
|
import { waitForIgContainer, IMAGE_PROCESSING_TIMEOUT, VIDEO_PROCESSING_TIMEOUT } from "../../utils/container.js";
|
|
4
4
|
import { formatErrorResponse } from "../../utils/errors.js";
|
|
5
5
|
import { formatResponse } from "../../utils/response.js";
|
|
6
|
+
import { buildParams } from "../../utils/params.js";
|
|
7
|
+
import { makeProgressNotifier } from "../../utils/progress.js";
|
|
6
8
|
import { READ_ONLY_TOOL, WRITE_TOOL } from "../annotations.js";
|
|
9
|
+
import { IG_PROFILE_CACHE_PREFIX } from "./profile.js";
|
|
10
|
+
// Counts code points (the spread iterator yields one entry per code point) rather
|
|
11
|
+
// than UTF-16 code units, so emoji-heavy strings under Meta's documented
|
|
12
|
+
// "character" cap aren't falsely rejected by the schema.
|
|
13
|
+
const captionSchema = z.string()
|
|
14
|
+
.refine((s) => [...s].length <= 2200, { message: "Caption must be 2200 characters or fewer" })
|
|
15
|
+
.optional();
|
|
16
|
+
const altTextSchema = z.string()
|
|
17
|
+
.refine((s) => [...s].length <= 1000, { message: "alt_text must be 1000 characters or fewer" })
|
|
18
|
+
.optional();
|
|
7
19
|
const collaboratorUsername = z
|
|
8
20
|
.string()
|
|
9
21
|
.trim()
|
|
@@ -26,79 +38,79 @@ export function registerIgPublishingTools(server, client) {
|
|
|
26
38
|
description: "Publish a photo to Instagram. Two-step process: creates container then publishes. Requires image_url (publicly accessible HTTPS URL).",
|
|
27
39
|
inputSchema: {
|
|
28
40
|
image_url: httpsUrl.describe("Public HTTPS URL of the image (JPEG only)"),
|
|
29
|
-
caption:
|
|
41
|
+
caption: captionSchema.describe("Post caption (max 2200 chars)"),
|
|
30
42
|
location_id: z.string().optional().describe("Facebook Page location ID"),
|
|
31
43
|
user_tags: z.string().optional().describe("JSON array of user tags: [{username, x, y}]"),
|
|
32
|
-
alt_text:
|
|
44
|
+
alt_text: altTextSchema.describe("Alt text for accessibility (max 1000 chars per Meta's Instagram media spec)"),
|
|
33
45
|
collaborators: collaboratorsSchema,
|
|
34
46
|
},
|
|
35
47
|
annotations: WRITE_TOOL,
|
|
36
|
-
}, async ({ image_url, caption, location_id, user_tags, alt_text, collaborators }) => {
|
|
48
|
+
}, async ({ image_url, caption, location_id, user_tags, alt_text, collaborators }, extra) => {
|
|
49
|
+
let step = "container creation";
|
|
50
|
+
let containerId;
|
|
37
51
|
try {
|
|
38
|
-
const params = { image_url }
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
if (alt_text)
|
|
46
|
-
params.alt_text = alt_text;
|
|
47
|
-
if (collaborators?.length)
|
|
48
|
-
params.collaborators = JSON.stringify(collaborators);
|
|
49
|
-
// Step 1: Create container
|
|
52
|
+
const params = buildParams({ image_url }, {
|
|
53
|
+
caption,
|
|
54
|
+
location_id,
|
|
55
|
+
user_tags,
|
|
56
|
+
alt_text,
|
|
57
|
+
collaborators: collaborators?.length ? JSON.stringify(collaborators) : undefined,
|
|
58
|
+
});
|
|
50
59
|
const { data: container } = await client.ig("POST", `/${client.igUserId}/media`, params);
|
|
51
60
|
if (typeof container.id !== "string")
|
|
52
61
|
throw new Error("Container creation did not return a valid id");
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
await waitForIgContainer(client, containerId);
|
|
56
|
-
|
|
62
|
+
containerId = container.id;
|
|
63
|
+
step = "processing";
|
|
64
|
+
await waitForIgContainer(client, containerId, IMAGE_PROCESSING_TIMEOUT, { onProgress: makeProgressNotifier(extra) });
|
|
65
|
+
step = "publishing";
|
|
57
66
|
const { data, rateLimit } = await client.ig("POST", `/${client.igUserId}/media_publish`, {
|
|
58
67
|
creation_id: containerId,
|
|
59
68
|
});
|
|
69
|
+
client.invalidateCache(IG_PROFILE_CACHE_PREFIX);
|
|
60
70
|
return formatResponse(data, rateLimit);
|
|
61
71
|
}
|
|
62
72
|
catch (error) {
|
|
63
|
-
return formatErrorResponse(error, "Publish photo");
|
|
73
|
+
return formatErrorResponse(error, "Publish photo", { step, containerId });
|
|
64
74
|
}
|
|
65
75
|
});
|
|
66
76
|
// ─── ig_publish_video ────────────────────────────────────────
|
|
67
77
|
server.registerTool("ig_publish_video", {
|
|
68
|
-
description: "[DEPRECATED] Use ig_publish_reel instead. Publishes via media_type=REELS under the hood; the legacy VIDEO media_type was deprecated by Meta on Nov 9, 2023. Kept for backward compatibility — new integrations should use ig_publish_reel which exposes Reels-specific options (cover_url, share_to_feed
|
|
78
|
+
description: "[DEPRECATED] Use ig_publish_reel instead. Publishes via media_type=REELS under the hood; the legacy VIDEO media_type was deprecated by Meta on Nov 9, 2023. Kept for backward compatibility — new integrations should use ig_publish_reel which exposes Reels-specific options (cover_url, share_to_feed).",
|
|
69
79
|
inputSchema: {
|
|
70
80
|
video_url: httpsUrl.describe("Public HTTPS URL of the video"),
|
|
71
|
-
caption:
|
|
81
|
+
caption: captionSchema.describe("Post caption (max 2200 chars)"),
|
|
72
82
|
thumb_offset: z.number().optional().describe("Thumbnail offset in ms"),
|
|
73
83
|
location_id: z.string().optional().describe("Facebook Page location ID"),
|
|
74
84
|
collaborators: collaboratorsSchema,
|
|
75
85
|
},
|
|
76
86
|
annotations: WRITE_TOOL,
|
|
77
|
-
}, async ({ video_url, caption, thumb_offset, location_id, collaborators }) => {
|
|
87
|
+
}, async ({ video_url, caption, thumb_offset, location_id, collaborators }, extra) => {
|
|
88
|
+
let step = "container creation";
|
|
89
|
+
let containerId;
|
|
78
90
|
try {
|
|
79
91
|
// share_to_feed: true preserves the legacy feed placement of the deprecated
|
|
80
92
|
// VIDEO media_type — without it, REELS containers default to the Reels tab only.
|
|
81
|
-
const params = { video_url, media_type: "REELS", share_to_feed: true }
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
params.location_id = location_id;
|
|
88
|
-
if (collaborators?.length)
|
|
89
|
-
params.collaborators = JSON.stringify(collaborators);
|
|
93
|
+
const params = buildParams({ video_url, media_type: "REELS", share_to_feed: true }, {
|
|
94
|
+
caption,
|
|
95
|
+
thumb_offset,
|
|
96
|
+
location_id,
|
|
97
|
+
collaborators: collaborators?.length ? JSON.stringify(collaborators) : undefined,
|
|
98
|
+
});
|
|
90
99
|
const { data: container } = await client.ig("POST", `/${client.igUserId}/media`, params);
|
|
91
100
|
if (typeof container.id !== "string")
|
|
92
101
|
throw new Error("Container creation did not return a valid id");
|
|
93
|
-
|
|
94
|
-
|
|
102
|
+
containerId = container.id;
|
|
103
|
+
step = "processing";
|
|
104
|
+
await waitForIgContainer(client, containerId, VIDEO_PROCESSING_TIMEOUT, { onProgress: makeProgressNotifier(extra) });
|
|
105
|
+
step = "publishing";
|
|
95
106
|
const { data, rateLimit } = await client.ig("POST", `/${client.igUserId}/media_publish`, {
|
|
96
107
|
creation_id: containerId,
|
|
97
108
|
});
|
|
109
|
+
client.invalidateCache(IG_PROFILE_CACHE_PREFIX);
|
|
98
110
|
return formatResponse(data, rateLimit);
|
|
99
111
|
}
|
|
100
112
|
catch (error) {
|
|
101
|
-
return formatErrorResponse(error, "Publish video");
|
|
113
|
+
return formatErrorResponse(error, "Publish video", { step, containerId });
|
|
102
114
|
}
|
|
103
115
|
});
|
|
104
116
|
// ─── ig_publish_carousel ─────────────────────────────────────
|
|
@@ -109,65 +121,87 @@ export function registerIgPublishingTools(server, client) {
|
|
|
109
121
|
z.object({
|
|
110
122
|
type: z.literal("IMAGE"),
|
|
111
123
|
url: httpsUrl.describe("Public HTTPS URL of the image (JPEG only)"),
|
|
112
|
-
alt_text:
|
|
124
|
+
alt_text: altTextSchema.describe("Alt text for accessibility (IMAGE items only, max 1000 chars per Meta's Instagram media spec)"),
|
|
113
125
|
}),
|
|
114
126
|
z.object({
|
|
115
127
|
type: z.literal("VIDEO"),
|
|
116
128
|
url: httpsUrl.describe("Public HTTPS URL of the video"),
|
|
117
129
|
}),
|
|
118
130
|
])).min(2).max(10).describe("Array of media items"),
|
|
119
|
-
caption:
|
|
131
|
+
caption: captionSchema.describe("Post caption (max 2200 chars)"),
|
|
120
132
|
location_id: z.string().optional().describe("Facebook Page location ID"),
|
|
121
133
|
collaborators: collaboratorsSchema,
|
|
122
134
|
},
|
|
123
135
|
annotations: WRITE_TOOL,
|
|
124
|
-
}, async ({ items, caption, location_id, collaborators }) => {
|
|
136
|
+
}, async ({ items, caption, location_id, collaborators }, extra) => {
|
|
137
|
+
// Parallel child polls below would otherwise emit non-monotonic
|
|
138
|
+
// `progress` values across the shared progressToken.
|
|
139
|
+
const onProgress = makeProgressNotifier(extra, "shared");
|
|
140
|
+
let step = "child container creation";
|
|
141
|
+
let containerId;
|
|
142
|
+
// Promise.all rejects with the first child to throw; JS is single-threaded,
|
|
143
|
+
// so the first catch wins the `=== undefined` race here.
|
|
144
|
+
let firstFailingChildStep;
|
|
145
|
+
let firstFailingChildId;
|
|
125
146
|
try {
|
|
126
147
|
// Children are independent — create them in parallel. Errors propagate
|
|
127
148
|
// unwrapped so formatErrorResponse keeps MetaApiError categorization.
|
|
128
149
|
const childIds = await Promise.all(items.map(async (item) => {
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
150
|
+
let myStep = "child container creation";
|
|
151
|
+
let myContainerId;
|
|
152
|
+
try {
|
|
153
|
+
const params = buildParams({ is_carousel_item: true }, {
|
|
154
|
+
image_url: item.type === "IMAGE" ? item.url : undefined,
|
|
155
|
+
video_url: item.type === "VIDEO" ? item.url : undefined,
|
|
156
|
+
media_type: item.type === "VIDEO" ? "VIDEO" : undefined,
|
|
157
|
+
alt_text: item.type === "IMAGE" ? item.alt_text : undefined,
|
|
158
|
+
});
|
|
159
|
+
const { data: child } = await client.ig("POST", `/${client.igUserId}/media`, params);
|
|
160
|
+
if (typeof child.id !== "string")
|
|
161
|
+
throw new Error("Container creation did not return a valid id");
|
|
162
|
+
myContainerId = child.id;
|
|
163
|
+
myStep = "child processing";
|
|
164
|
+
await waitForIgContainer(client, myContainerId, item.type === "VIDEO" ? VIDEO_PROCESSING_TIMEOUT : IMAGE_PROCESSING_TIMEOUT, { onProgress });
|
|
165
|
+
return myContainerId;
|
|
134
166
|
}
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
167
|
+
catch (e) {
|
|
168
|
+
if (firstFailingChildStep === undefined) {
|
|
169
|
+
firstFailingChildStep = myStep;
|
|
170
|
+
firstFailingChildId = myContainerId;
|
|
171
|
+
}
|
|
172
|
+
throw e;
|
|
138
173
|
}
|
|
139
|
-
const { data: child } = await client.ig("POST", `/${client.igUserId}/media`, params);
|
|
140
|
-
if (typeof child.id !== "string")
|
|
141
|
-
throw new Error("Container creation did not return a valid id");
|
|
142
|
-
const childId = child.id;
|
|
143
|
-
await waitForIgContainer(client, childId, item.type === "VIDEO" ? VIDEO_PROCESSING_TIMEOUT : IMAGE_PROCESSING_TIMEOUT);
|
|
144
|
-
return childId;
|
|
145
174
|
}));
|
|
146
|
-
|
|
147
|
-
const carouselParams = {
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
carouselParams.caption = caption;
|
|
153
|
-
if (location_id)
|
|
154
|
-
carouselParams.location_id = location_id;
|
|
155
|
-
if (collaborators?.length)
|
|
156
|
-
carouselParams.collaborators = JSON.stringify(collaborators);
|
|
175
|
+
step = "parent container creation";
|
|
176
|
+
const carouselParams = buildParams({ media_type: "CAROUSEL", children: childIds.join(",") }, {
|
|
177
|
+
caption,
|
|
178
|
+
location_id,
|
|
179
|
+
collaborators: collaborators?.length ? JSON.stringify(collaborators) : undefined,
|
|
180
|
+
});
|
|
157
181
|
const { data: carousel } = await client.ig("POST", `/${client.igUserId}/media`, carouselParams);
|
|
158
182
|
if (typeof carousel.id !== "string")
|
|
159
183
|
throw new Error("Container creation did not return a valid id");
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
await waitForIgContainer(client,
|
|
163
|
-
|
|
184
|
+
containerId = carousel.id;
|
|
185
|
+
step = "parent processing";
|
|
186
|
+
await waitForIgContainer(client, containerId, IMAGE_PROCESSING_TIMEOUT, { onProgress });
|
|
187
|
+
step = "publishing";
|
|
164
188
|
const { data, rateLimit } = await client.ig("POST", `/${client.igUserId}/media_publish`, {
|
|
165
|
-
creation_id:
|
|
189
|
+
creation_id: containerId,
|
|
166
190
|
});
|
|
191
|
+
client.invalidateCache(IG_PROFILE_CACHE_PREFIX);
|
|
167
192
|
return formatResponse(data, rateLimit);
|
|
168
193
|
}
|
|
169
194
|
catch (error) {
|
|
170
|
-
return formatErrorResponse(error, "Publish carousel"
|
|
195
|
+
return formatErrorResponse(error, "Publish carousel", {
|
|
196
|
+
step: firstFailingChildStep ?? step,
|
|
197
|
+
containerId: firstFailingChildId ?? containerId,
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
finally {
|
|
201
|
+
// Once Promise.all has rejected and we've returned an error, the still-
|
|
202
|
+
// running sibling polls must not emit any more notifications for this
|
|
203
|
+
// progressToken — MCP forbids progress after request completion.
|
|
204
|
+
onProgress?.stop();
|
|
171
205
|
}
|
|
172
206
|
});
|
|
173
207
|
// ─── ig_publish_reel ─────────────────────────────────────────
|
|
@@ -175,38 +209,39 @@ export function registerIgPublishingTools(server, client) {
|
|
|
175
209
|
description: "Publish a Reel (short video). Waits for video processing.",
|
|
176
210
|
inputSchema: {
|
|
177
211
|
video_url: httpsUrl.describe("Public HTTPS URL of the video"),
|
|
178
|
-
caption:
|
|
212
|
+
caption: captionSchema.describe("Reel caption (max 2200 chars)"),
|
|
179
213
|
cover_url: httpsUrl.optional().describe("Custom cover image HTTPS URL"),
|
|
180
214
|
share_to_feed: z.boolean().optional().describe("Also share to feed (default true)"),
|
|
181
215
|
thumb_offset: z.number().optional().describe("Thumbnail offset in ms"),
|
|
182
216
|
collaborators: collaboratorsSchema,
|
|
183
217
|
},
|
|
184
218
|
annotations: WRITE_TOOL,
|
|
185
|
-
}, async ({ video_url, caption, cover_url, share_to_feed, thumb_offset, collaborators }) => {
|
|
219
|
+
}, async ({ video_url, caption, cover_url, share_to_feed, thumb_offset, collaborators }, extra) => {
|
|
220
|
+
let step = "container creation";
|
|
221
|
+
let containerId;
|
|
186
222
|
try {
|
|
187
|
-
const params = { video_url, media_type: "REELS" }
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
if (thumb_offset !== undefined)
|
|
195
|
-
params.thumb_offset = thumb_offset;
|
|
196
|
-
if (collaborators?.length)
|
|
197
|
-
params.collaborators = JSON.stringify(collaborators);
|
|
223
|
+
const params = buildParams({ video_url, media_type: "REELS" }, {
|
|
224
|
+
caption,
|
|
225
|
+
cover_url,
|
|
226
|
+
share_to_feed,
|
|
227
|
+
thumb_offset,
|
|
228
|
+
collaborators: collaborators?.length ? JSON.stringify(collaborators) : undefined,
|
|
229
|
+
});
|
|
198
230
|
const { data: container } = await client.ig("POST", `/${client.igUserId}/media`, params);
|
|
199
231
|
if (typeof container.id !== "string")
|
|
200
232
|
throw new Error("Container creation did not return a valid id");
|
|
201
|
-
|
|
202
|
-
|
|
233
|
+
containerId = container.id;
|
|
234
|
+
step = "processing";
|
|
235
|
+
await waitForIgContainer(client, containerId, VIDEO_PROCESSING_TIMEOUT, { onProgress: makeProgressNotifier(extra) });
|
|
236
|
+
step = "publishing";
|
|
203
237
|
const { data, rateLimit } = await client.ig("POST", `/${client.igUserId}/media_publish`, {
|
|
204
238
|
creation_id: containerId,
|
|
205
239
|
});
|
|
240
|
+
client.invalidateCache(IG_PROFILE_CACHE_PREFIX);
|
|
206
241
|
return formatResponse(data, rateLimit);
|
|
207
242
|
}
|
|
208
243
|
catch (error) {
|
|
209
|
-
return formatErrorResponse(error, "Publish reel");
|
|
244
|
+
return formatErrorResponse(error, "Publish reel", { step, containerId });
|
|
210
245
|
}
|
|
211
246
|
});
|
|
212
247
|
// ─── ig_publish_story ────────────────────────────────────────
|
|
@@ -217,27 +252,29 @@ export function registerIgPublishingTools(server, client) {
|
|
|
217
252
|
media_url: httpsUrl.describe("Public HTTPS URL of the media"),
|
|
218
253
|
},
|
|
219
254
|
annotations: WRITE_TOOL,
|
|
220
|
-
}, async ({ media_type, media_url }) => {
|
|
255
|
+
}, async ({ media_type, media_url }, extra) => {
|
|
256
|
+
let step = "container creation";
|
|
257
|
+
let containerId;
|
|
221
258
|
try {
|
|
222
|
-
const params = { media_type: "STORIES" }
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
}
|
|
226
|
-
else {
|
|
227
|
-
params.video_url = media_url;
|
|
228
|
-
}
|
|
259
|
+
const params = buildParams({ media_type: "STORIES" }, {
|
|
260
|
+
image_url: media_type === "IMAGE" ? media_url : undefined,
|
|
261
|
+
video_url: media_type === "VIDEO" ? media_url : undefined,
|
|
262
|
+
});
|
|
229
263
|
const { data: container } = await client.ig("POST", `/${client.igUserId}/media`, params);
|
|
230
264
|
if (typeof container.id !== "string")
|
|
231
265
|
throw new Error("Container creation did not return a valid id");
|
|
232
|
-
|
|
233
|
-
|
|
266
|
+
containerId = container.id;
|
|
267
|
+
step = "processing";
|
|
268
|
+
await waitForIgContainer(client, containerId, media_type === "VIDEO" ? VIDEO_PROCESSING_TIMEOUT : IMAGE_PROCESSING_TIMEOUT, { onProgress: makeProgressNotifier(extra) });
|
|
269
|
+
step = "publishing";
|
|
234
270
|
const { data, rateLimit } = await client.ig("POST", `/${client.igUserId}/media_publish`, {
|
|
235
271
|
creation_id: containerId,
|
|
236
272
|
});
|
|
273
|
+
client.invalidateCache(IG_PROFILE_CACHE_PREFIX);
|
|
237
274
|
return formatResponse(data, rateLimit);
|
|
238
275
|
}
|
|
239
276
|
catch (error) {
|
|
240
|
-
return formatErrorResponse(error, "Publish story");
|
|
277
|
+
return formatErrorResponse(error, "Publish story", { step, containerId });
|
|
241
278
|
}
|
|
242
279
|
});
|
|
243
280
|
// ─── ig_get_container_status ─────────────────────────────────
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"publishing.js","sourceRoot":"","sources":["../../../src/tools/instagram/publishing.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"publishing.js","sourceRoot":"","sources":["../../../src/tools/instagram/publishing.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/tools/meta/auth.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/tools/meta/auth.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAgC3D,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CAsIjF"}
|
package/dist/tools/meta/auth.js
CHANGED
|
@@ -3,10 +3,24 @@ import { httpsUrl } from "../../schemas.js";
|
|
|
3
3
|
import { formatErrorResponse } from "../../utils/errors.js";
|
|
4
4
|
import { formatResponse } from "../../utils/response.js";
|
|
5
5
|
import { READ_ONLY_TOOL, WRITE_TOOL, WRITE_IDEMPOTENT_TOOL } from "../annotations.js";
|
|
6
|
+
function applyTokenIfPresent(client, platform, data, source) {
|
|
7
|
+
// Guard against malformed/empty responses — overwriting a working token with
|
|
8
|
+
// `undefined` or `""` would silently brick the running session (#65).
|
|
9
|
+
const newToken = typeof data.access_token === "string" && data.access_token
|
|
10
|
+
? data.access_token
|
|
11
|
+
: undefined;
|
|
12
|
+
if (!newToken)
|
|
13
|
+
return;
|
|
14
|
+
client.updateConfig(platform === "threads"
|
|
15
|
+
? { threadsAccessToken: newToken }
|
|
16
|
+
: { instagramAccessToken: newToken });
|
|
17
|
+
const platformLabel = platform === "threads" ? "Threads" : "Instagram";
|
|
18
|
+
console.error(`[meta-mcp] ${platformLabel} access token updated in-memory after ${source}; subsequent tool calls will use the new token (no restart required).`);
|
|
19
|
+
}
|
|
6
20
|
export function registerMetaAuthTools(server, client) {
|
|
7
21
|
// ─── meta_exchange_token ─────────────────────────────────────
|
|
8
22
|
server.registerTool("meta_exchange_token", {
|
|
9
|
-
description: "Exchange a short-lived token for a long-lived token (valid ~60 days). Uses platform-specific endpoints: Instagram (graph.instagram.com) or Threads (graph.threads.net). Requires META_APP_SECRET.",
|
|
23
|
+
description: "Exchange a short-lived token for a long-lived token (valid ~60 days). Uses platform-specific endpoints: Instagram (graph.instagram.com) or Threads (graph.threads.net). Requires META_APP_SECRET. On success the new token is also applied in-memory to the running server, so subsequent tool calls use it immediately — no restart required (#65).",
|
|
10
24
|
inputSchema: {
|
|
11
25
|
short_lived_token: z.string().describe("Short-lived access token to exchange"),
|
|
12
26
|
platform: z.enum(["instagram", "threads"]).describe("Target platform: 'instagram' or 'threads'"),
|
|
@@ -17,6 +31,7 @@ export function registerMetaAuthTools(server, client) {
|
|
|
17
31
|
const { data, rateLimit } = platform === "threads"
|
|
18
32
|
? await client.threadsExchangeToken(short_lived_token)
|
|
19
33
|
: await client.igExchangeToken(short_lived_token);
|
|
34
|
+
applyTokenIfPresent(client, platform, data, "meta_exchange_token");
|
|
20
35
|
return formatResponse(data, rateLimit);
|
|
21
36
|
}
|
|
22
37
|
catch (error) {
|
|
@@ -25,7 +40,7 @@ export function registerMetaAuthTools(server, client) {
|
|
|
25
40
|
});
|
|
26
41
|
// ─── meta_refresh_token ──────────────────────────────────────
|
|
27
42
|
server.registerTool("meta_refresh_token", {
|
|
28
|
-
description: "Refresh a long-lived token before it expires (must be at least 24h old). Uses platform-specific endpoints: Instagram (graph.instagram.com) or Threads (graph.threads.net). Returns a new long-lived token valid for 60 days.",
|
|
43
|
+
description: "Refresh a long-lived token before it expires (must be at least 24h old). Uses platform-specific endpoints: Instagram (graph.instagram.com) or Threads (graph.threads.net). Returns a new long-lived token valid for 60 days. On success the new token is also applied in-memory to the running server, so subsequent tool calls use it immediately — no restart required (#65).",
|
|
29
44
|
inputSchema: {
|
|
30
45
|
long_lived_token: z.string().describe("Current long-lived access token to refresh"),
|
|
31
46
|
platform: z.enum(["instagram", "threads"]).describe("Target platform: 'instagram' or 'threads'"),
|
|
@@ -36,6 +51,7 @@ export function registerMetaAuthTools(server, client) {
|
|
|
36
51
|
const { data, rateLimit } = platform === "threads"
|
|
37
52
|
? await client.threadsRefreshToken(long_lived_token)
|
|
38
53
|
: await client.igRefreshToken(long_lived_token);
|
|
54
|
+
applyTokenIfPresent(client, platform, data, "meta_refresh_token");
|
|
39
55
|
return formatResponse(data, rateLimit);
|
|
40
56
|
}
|
|
41
57
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/tools/meta/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/tools/meta/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAKtF,SAAS,mBAAmB,CAC1B,MAAkB,EAClB,QAAuB,EACvB,IAA6B,EAC7B,MAAmB;IAEnB,6EAA6E;IAC7E,sEAAsE;IACtE,MAAM,QAAQ,GAAG,OAAO,IAAI,CAAC,YAAY,KAAK,QAAQ,IAAI,IAAI,CAAC,YAAY;QACzE,CAAC,CAAC,IAAI,CAAC,YAAY;QACnB,CAAC,CAAC,SAAS,CAAC;IACd,IAAI,CAAC,QAAQ;QAAE,OAAO;IACtB,MAAM,CAAC,YAAY,CACjB,QAAQ,KAAK,SAAS;QACpB,CAAC,CAAC,EAAE,kBAAkB,EAAE,QAAQ,EAAE;QAClC,CAAC,CAAC,EAAE,oBAAoB,EAAE,QAAQ,EAAE,CACvC,CAAC;IACF,MAAM,aAAa,GAAG,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC;IACvE,OAAO,CAAC,KAAK,CACX,cAAc,aAAa,yCAAyC,MAAM,uEAAuE,CAClJ,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,MAAiB,EAAE,MAAkB;IACzE,gEAAgE;IAChE,MAAM,CAAC,YAAY,CACjB,qBAAqB,EACrB;QACE,WAAW,EAAE,sVAAsV;QACnW,WAAW,EAAE;YACX,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;YAC9E,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,2CAA2C,CAAC;SACjG;QACD,WAAW,EAAE,UAAU;KACxB,EACD,KAAK,EAAE,EAAE,iBAAiB,EAAE,QAAQ,EAAE,EAAE,EAAE;QACxC,IAAI,CAAC;YACH,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,QAAQ,KAAK,SAAS;gBAChD,CAAC,CAAC,MAAM,MAAM,CAAC,oBAAoB,CAAC,iBAAiB,CAAC;gBACtD,CAAC,CAAC,MAAM,MAAM,CAAC,eAAe,CAAC,iBAAiB,CAAC,CAAC;YACpD,mBAAmB,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,qBAAqB,CAAC,CAAC;YACnE,OAAO,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACzC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,mBAAmB,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;QACtD,CAAC;IACH,CAAC,CACF,CAAC;IAEF,gEAAgE;IAChE,MAAM,CAAC,YAAY,CACjB,oBAAoB,EACpB;QACE,WAAW,EAAE,iXAAiX;QAC9X,WAAW,EAAE;YACX,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;YACnF,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,2CAA2C,CAAC;SACjG;QACD,WAAW,EAAE,UAAU;KACxB,EACD,KAAK,EAAE,EAAE,gBAAgB,EAAE,QAAQ,EAAE,EAAE,EAAE;QACvC,IAAI,CAAC;YACH,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,QAAQ,KAAK,SAAS;gBAChD,CAAC,CAAC,MAAM,MAAM,CAAC,mBAAmB,CAAC,gBAAgB,CAAC;gBACpD,CAAC,CAAC,MAAM,MAAM,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC;YAClD,mBAAmB,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,oBAAoB,CAAC,CAAC;YAClE,OAAO,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACzC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,mBAAmB,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;QACrD,CAAC;IACH,CAAC,CACF,CAAC;IAEF,gEAAgE;IAChE,MAAM,CAAC,YAAY,CACjB,kBAAkB,EAClB;QACE,WAAW,EAAE,0FAA0F;QACvG,WAAW,EAAE;YACX,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;SAC5D;QACD,WAAW,EAAE,cAAc;KAC5B,EACD,KAAK,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE;QACxB,IAAI,CAAC;YACH,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;YACjE,OAAO,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACzC,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,YAAY,CACjB,mBAAmB,EACnB;QACE,WAAW,EAAE,mEAAmE;QAChF,WAAW,EAAE,EAAE;QACf,WAAW,EAAE,cAAc;KAC5B,EACD,KAAK,IAAI,EAAE;QACT,IAAI,CAAC;YACH,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE;gBAC3D,MAAM,EAAE,qDAAqD;aAC9D,CAAC,CAAC;YACH,OAAO,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACzC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,mBAAmB,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;QACpD,CAAC;IACH,CAAC,CACF,CAAC;IAEF,gEAAgE;IAChE,MAAM,CAAC,YAAY,CACjB,wBAAwB,EACxB;QACE,WAAW,EAAE,yHAAyH;QACtI,WAAW,EAAE;YACX,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,6BAA6B,CAAC;YACpG,YAAY,EAAE,QAAQ,CAAC,QAAQ,CAAC,4BAA4B,CAAC;YAC7D,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;YACvE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qEAAqE,CAAC;SACnG;QACD,WAAW,EAAE,qBAAqB;KACnC,EACD,KAAK,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,EAAE;QACvD,IAAI,CAAC;YACH,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,oBAAoB,EAAE;gBAC1E,MAAM;gBACN,YAAY;gBACZ,YAAY;gBACZ,MAAM;aACP,CAAC,CAAC;YACH,OAAO,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACzC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,mBAAmB,CAAC,KAAK,EAAE,mBAAmB,CAAC,CAAC;QACzD,CAAC;IACH,CAAC,CACF,CAAC;IAEF,gEAAgE;IAChE,MAAM,CAAC,YAAY,CACjB,gCAAgC,EAChC;QACE,WAAW,EAAE,sDAAsD;QACnE,WAAW,EAAE,EAAE;QACf,WAAW,EAAE,cAAc;KAC5B,EACD,KAAK,IAAI,EAAE;QACT,IAAI,CAAC;YACH,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,oBAAoB,CAAC,CAAC;YAC3E,OAAO,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACzC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,mBAAmB,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;QACpD,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"insights.d.ts","sourceRoot":"","sources":["../../../src/tools/threads/insights.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"insights.d.ts","sourceRoot":"","sources":["../../../src/tools/threads/insights.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAS3D,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CA6CvF"}
|
|
@@ -2,6 +2,7 @@ import { z } from "zod";
|
|
|
2
2
|
import { metaId } from "../../schemas.js";
|
|
3
3
|
import { formatErrorResponse } from "../../utils/errors.js";
|
|
4
4
|
import { formatResponse } from "../../utils/response.js";
|
|
5
|
+
import { buildParams } from "../../utils/params.js";
|
|
5
6
|
import { READ_ONLY_TOOL } from "../annotations.js";
|
|
6
7
|
const POST_INSIGHTS_DEFAULT_METRICS = "views,likes,replies,reposts,quotes,shares";
|
|
7
8
|
export function registerThreadsInsightTools(server, client) {
|
|
@@ -34,11 +35,7 @@ export function registerThreadsInsightTools(server, client) {
|
|
|
34
35
|
annotations: READ_ONLY_TOOL,
|
|
35
36
|
}, async ({ metric, period, since, until }) => {
|
|
36
37
|
try {
|
|
37
|
-
const params = { metric, period };
|
|
38
|
-
if (since)
|
|
39
|
-
params.since = since;
|
|
40
|
-
if (until)
|
|
41
|
-
params.until = until;
|
|
38
|
+
const params = buildParams({ metric, period }, { since, until });
|
|
42
39
|
const { data, rateLimit } = await client.threads("GET", `/${client.threadsUserId}/threads_insights`, params);
|
|
43
40
|
return formatResponse(data, rateLimit);
|
|
44
41
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"insights.js","sourceRoot":"","sources":["../../../src/tools/threads/insights.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,MAAM,6BAA6B,GAAG,2CAA2C,CAAC;AAElF,MAAM,UAAU,2BAA2B,CAAC,MAAiB,EAAE,MAAkB;IAC/E,gEAAgE;IAChE,MAAM,CAAC,YAAY,CACjB,2BAA2B,EAC3B;QACE,WAAW,EAAE,uDAAuD,6BAA6B,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI;QAC3H,WAAW,EAAE;YACX,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC;YAC3C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC,QAAQ,CAAC,qCAAqC,6BAA6B,GAAG,CAAC;SACrJ;QACD,WAAW,EAAE,cAAc;KAC5B,EACD,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE;QAC5B,IAAI,CAAC;YACH,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,OAAO,WAAW,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;YAC5F,OAAO,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACzC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,mBAAmB,CAAC,KAAK,EAAE,mBAAmB,CAAC,CAAC;QACzD,CAAC;IACH,CAAC,CACF,CAAC;IAEF,gEAAgE;IAChE,MAAM,CAAC,YAAY,CACjB,2BAA2B,EAC3B;QACE,WAAW,EAAE,mJAAmJ;QAChK,WAAW,EAAE;YACX,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0GAA0G,CAAC;YACvI,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,sKAAsK,CAAC;YAC9O,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6DAA6D,CAAC;YACpG,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2DAA2D,CAAC;SACnG;QACD,WAAW,EAAE,cAAc;KAC5B,EACD,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE;QACzC,IAAI,CAAC;YACH,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"insights.js","sourceRoot":"","sources":["../../../src/tools/threads/insights.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,MAAM,6BAA6B,GAAG,2CAA2C,CAAC;AAElF,MAAM,UAAU,2BAA2B,CAAC,MAAiB,EAAE,MAAkB;IAC/E,gEAAgE;IAChE,MAAM,CAAC,YAAY,CACjB,2BAA2B,EAC3B;QACE,WAAW,EAAE,uDAAuD,6BAA6B,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI;QAC3H,WAAW,EAAE;YACX,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC;YAC3C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC,QAAQ,CAAC,qCAAqC,6BAA6B,GAAG,CAAC;SACrJ;QACD,WAAW,EAAE,cAAc;KAC5B,EACD,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE;QAC5B,IAAI,CAAC;YACH,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,OAAO,WAAW,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;YAC5F,OAAO,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACzC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,mBAAmB,CAAC,KAAK,EAAE,mBAAmB,CAAC,CAAC;QACzD,CAAC;IACH,CAAC,CACF,CAAC;IAEF,gEAAgE;IAChE,MAAM,CAAC,YAAY,CACjB,2BAA2B,EAC3B;QACE,WAAW,EAAE,mJAAmJ;QAChK,WAAW,EAAE;YACX,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0GAA0G,CAAC;YACvI,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,sKAAsK,CAAC;YAC9O,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6DAA6D,CAAC;YACpG,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2DAA2D,CAAC;SACnG;QACD,WAAW,EAAE,cAAc;KAC5B,EACD,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE;QACzC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,WAAW,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;YACjE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,MAAM,CAAC,aAAa,mBAAmB,EAAE,MAAM,CAAC,CAAC;YAC7G,OAAO,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACzC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,mBAAmB,CAAC,KAAK,EAAE,mBAAmB,CAAC,CAAC;QACzD,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"media.d.ts","sourceRoot":"","sources":["../../../src/tools/threads/media.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"media.d.ts","sourceRoot":"","sources":["../../../src/tools/threads/media.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAQ3D,eAAO,MAAM,oBAAoB,uEAQ9B,CAAC;AAEJ,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CAkFrF"}
|
|
@@ -1,26 +1,10 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { metaId } from "../../schemas.js";
|
|
3
|
+
import { THREADS_MEDIA_FIELDS } from "../../constants/fields.js";
|
|
3
4
|
import { formatErrorResponse } from "../../utils/errors.js";
|
|
4
5
|
import { formatResponse } from "../../utils/response.js";
|
|
6
|
+
import { buildParams } from "../../utils/params.js";
|
|
5
7
|
import { READ_ONLY_TOOL } from "../annotations.js";
|
|
6
|
-
const THREADS_MEDIA_FIELDS = [
|
|
7
|
-
"id",
|
|
8
|
-
"media_product_type",
|
|
9
|
-
"media_type",
|
|
10
|
-
"media_url",
|
|
11
|
-
"permalink",
|
|
12
|
-
"text",
|
|
13
|
-
"timestamp",
|
|
14
|
-
"shortcode",
|
|
15
|
-
"is_quote_post",
|
|
16
|
-
"has_replies",
|
|
17
|
-
"reply_audience",
|
|
18
|
-
"topic_tag",
|
|
19
|
-
"link_attachment_url",
|
|
20
|
-
"poll_attachment{option_a,option_b,option_c,option_d,option_a_votes_percentage,option_b_votes_percentage,option_c_votes_percentage,option_d_votes_percentage,total_votes,expiration_timestamp}",
|
|
21
|
-
"gif_url",
|
|
22
|
-
"alt_text",
|
|
23
|
-
].join(",");
|
|
24
8
|
export const authorUsernameSchema = z
|
|
25
9
|
.string()
|
|
26
10
|
.trim()
|
|
@@ -43,17 +27,7 @@ export function registerThreadsMediaTools(server, client) {
|
|
|
43
27
|
annotations: READ_ONLY_TOOL,
|
|
44
28
|
}, async ({ limit, since, until, after, before, fields }) => {
|
|
45
29
|
try {
|
|
46
|
-
const params = { fields };
|
|
47
|
-
if (limit !== undefined)
|
|
48
|
-
params.limit = limit;
|
|
49
|
-
if (since)
|
|
50
|
-
params.since = since;
|
|
51
|
-
if (until)
|
|
52
|
-
params.until = until;
|
|
53
|
-
if (after)
|
|
54
|
-
params.after = after;
|
|
55
|
-
if (before)
|
|
56
|
-
params.before = before;
|
|
30
|
+
const params = buildParams({ fields }, { limit, since, until, after, before });
|
|
57
31
|
const { data, rateLimit } = await client.threads("GET", `/${client.threadsUserId}/threads`, params);
|
|
58
32
|
return formatResponse(data, rateLimit);
|
|
59
33
|
}
|
|
@@ -95,26 +69,10 @@ export function registerThreadsMediaTools(server, client) {
|
|
|
95
69
|
annotations: READ_ONLY_TOOL,
|
|
96
70
|
}, async ({ q, search_type, search_mode, media_type, author_username, since, until, limit, after }) => {
|
|
97
71
|
try {
|
|
98
|
-
const params = {
|
|
72
|
+
const params = buildParams({
|
|
99
73
|
q,
|
|
100
74
|
fields: "id,text,username,permalink,timestamp,media_type,media_url,topic_tag",
|
|
101
|
-
};
|
|
102
|
-
if (search_type)
|
|
103
|
-
params.search_type = search_type;
|
|
104
|
-
if (search_mode)
|
|
105
|
-
params.search_mode = search_mode;
|
|
106
|
-
if (media_type)
|
|
107
|
-
params.media_type = media_type;
|
|
108
|
-
if (author_username)
|
|
109
|
-
params.author_username = author_username;
|
|
110
|
-
if (since)
|
|
111
|
-
params.since = since;
|
|
112
|
-
if (until)
|
|
113
|
-
params.until = until;
|
|
114
|
-
if (limit !== undefined)
|
|
115
|
-
params.limit = limit;
|
|
116
|
-
if (after)
|
|
117
|
-
params.after = after;
|
|
75
|
+
}, { search_type, search_mode, media_type, author_username, since, until, limit, after });
|
|
118
76
|
const { data, rateLimit } = await client.threads("GET", `/keyword_search`, params);
|
|
119
77
|
return formatResponse(data, rateLimit);
|
|
120
78
|
}
|