@exileum/meta-mcp 6.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 +44 -18
- 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 +77 -82
- 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/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/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 +76 -3
- package/dist/services/meta-client.d.ts.map +1 -1
- package/dist/services/meta-client.js +330 -46
- 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/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 +75 -50
- 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 +54 -36
- 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 +53 -34
- 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 +22 -17
- 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 +74 -50
- 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 +63 -43
- 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 +202 -139
- 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 +63 -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 +22 -15
- 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 +42 -70
- 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 +15 -16
- 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 +18 -3
- 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 +260 -157
- 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 +55 -45
- 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/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 +5 -4
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/prompts/index.d.ts
CHANGED
|
@@ -1,3 +1,59 @@
|
|
|
1
1
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
/**
|
|
4
|
+
* Tool names referenced by prompts. Cross-checked against the registered tool
|
|
5
|
+
* list in `src/prompts/index.test.ts` — if any tool is renamed/removed/split,
|
|
6
|
+
* the test fails and forces both the registration site and the prompt to
|
|
7
|
+
* update together. `ig_publish_video` is deliberately omitted: it's deprecated
|
|
8
|
+
* (CHANGELOG v4.0.0 / #118) and the prompt steers callers to
|
|
9
|
+
* `ig_publish_reel` for video content instead.
|
|
10
|
+
*/
|
|
11
|
+
export declare const PROMPT_TOOL_NAMES: {
|
|
12
|
+
readonly IG_PUBLISH_PHOTO: "ig_publish_photo";
|
|
13
|
+
readonly IG_PUBLISH_REEL: "ig_publish_reel";
|
|
14
|
+
readonly IG_PUBLISH_CAROUSEL: "ig_publish_carousel";
|
|
15
|
+
readonly THREADS_PUBLISH_TEXT: "threads_publish_text";
|
|
16
|
+
readonly THREADS_PUBLISH_IMAGE: "threads_publish_image";
|
|
17
|
+
readonly THREADS_PUBLISH_VIDEO: "threads_publish_video";
|
|
18
|
+
readonly THREADS_PUBLISH_CAROUSEL: "threads_publish_carousel";
|
|
19
|
+
readonly IG_GET_PROFILE: "ig_get_profile";
|
|
20
|
+
readonly IG_GET_ACCOUNT_INSIGHTS: "ig_get_account_insights";
|
|
21
|
+
readonly IG_GET_MEDIA_LIST: "ig_get_media_list";
|
|
22
|
+
readonly THREADS_GET_PROFILE: "threads_get_profile";
|
|
23
|
+
readonly THREADS_GET_USER_INSIGHTS: "threads_get_user_insights";
|
|
24
|
+
readonly THREADS_GET_POSTS: "threads_get_posts";
|
|
25
|
+
};
|
|
26
|
+
export declare const contentPublishArgsSchema: {
|
|
27
|
+
platform: z.ZodOptional<z.ZodEnum<{
|
|
28
|
+
instagram: "instagram";
|
|
29
|
+
threads: "threads";
|
|
30
|
+
both: "both";
|
|
31
|
+
}>>;
|
|
32
|
+
content_type: z.ZodOptional<z.ZodEnum<{
|
|
33
|
+
text: "text";
|
|
34
|
+
image: "image";
|
|
35
|
+
video: "video";
|
|
36
|
+
carousel: "carousel";
|
|
37
|
+
}>>;
|
|
38
|
+
media_url: z.ZodOptional<z.ZodString>;
|
|
39
|
+
caption: z.ZodOptional<z.ZodString>;
|
|
40
|
+
};
|
|
41
|
+
export declare const analyticsReportArgsSchema: {
|
|
42
|
+
platform: z.ZodOptional<z.ZodEnum<{
|
|
43
|
+
instagram: "instagram";
|
|
44
|
+
threads: "threads";
|
|
45
|
+
both: "both";
|
|
46
|
+
}>>;
|
|
47
|
+
time_range: z.ZodOptional<z.ZodEnum<{
|
|
48
|
+
"7d": "7d";
|
|
49
|
+
"30d": "30d";
|
|
50
|
+
"90d": "90d";
|
|
51
|
+
}>>;
|
|
52
|
+
focus: z.ZodOptional<z.ZodEnum<{
|
|
53
|
+
content: "content";
|
|
54
|
+
engagement: "engagement";
|
|
55
|
+
growth: "growth";
|
|
56
|
+
}>>;
|
|
57
|
+
};
|
|
2
58
|
export declare function registerPrompts(server: McpServer): void;
|
|
3
59
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;CAcpB,CAAC;AAEX,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;CAkBpC,CAAC;AAEF,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;CAerC,CAAC;AAsQF,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,QAwChD"}
|
package/dist/prompts/index.js
CHANGED
|
@@ -1,59 +1,282 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
/**
|
|
3
|
+
* Tool names referenced by prompts. Cross-checked against the registered tool
|
|
4
|
+
* list in `src/prompts/index.test.ts` — if any tool is renamed/removed/split,
|
|
5
|
+
* the test fails and forces both the registration site and the prompt to
|
|
6
|
+
* update together. `ig_publish_video` is deliberately omitted: it's deprecated
|
|
7
|
+
* (CHANGELOG v4.0.0 / #118) and the prompt steers callers to
|
|
8
|
+
* `ig_publish_reel` for video content instead.
|
|
9
|
+
*/
|
|
10
|
+
export const PROMPT_TOOL_NAMES = {
|
|
11
|
+
IG_PUBLISH_PHOTO: "ig_publish_photo",
|
|
12
|
+
IG_PUBLISH_REEL: "ig_publish_reel",
|
|
13
|
+
IG_PUBLISH_CAROUSEL: "ig_publish_carousel",
|
|
14
|
+
THREADS_PUBLISH_TEXT: "threads_publish_text",
|
|
15
|
+
THREADS_PUBLISH_IMAGE: "threads_publish_image",
|
|
16
|
+
THREADS_PUBLISH_VIDEO: "threads_publish_video",
|
|
17
|
+
THREADS_PUBLISH_CAROUSEL: "threads_publish_carousel",
|
|
18
|
+
IG_GET_PROFILE: "ig_get_profile",
|
|
19
|
+
IG_GET_ACCOUNT_INSIGHTS: "ig_get_account_insights",
|
|
20
|
+
IG_GET_MEDIA_LIST: "ig_get_media_list",
|
|
21
|
+
THREADS_GET_PROFILE: "threads_get_profile",
|
|
22
|
+
THREADS_GET_USER_INSIGHTS: "threads_get_user_insights",
|
|
23
|
+
THREADS_GET_POSTS: "threads_get_posts",
|
|
24
|
+
};
|
|
25
|
+
export const contentPublishArgsSchema = {
|
|
26
|
+
platform: z
|
|
27
|
+
.enum(["instagram", "threads", "both"])
|
|
28
|
+
.optional()
|
|
29
|
+
.describe("Target platform — instagram, threads, or both (default: both)"),
|
|
30
|
+
content_type: z
|
|
31
|
+
.enum(["text", "image", "video", "carousel"])
|
|
32
|
+
.optional()
|
|
33
|
+
.describe("Content type — text is Threads-only; image/video/carousel work on both platforms"),
|
|
34
|
+
media_url: z
|
|
35
|
+
.string()
|
|
36
|
+
.optional()
|
|
37
|
+
.describe("Pre-filled media URL — Instagram and Threads both require publicly accessible HTTPS"),
|
|
38
|
+
caption: z.string().optional().describe("Pre-filled caption / post text"),
|
|
39
|
+
};
|
|
40
|
+
export const analyticsReportArgsSchema = {
|
|
41
|
+
platform: z
|
|
42
|
+
.enum(["instagram", "threads", "both"])
|
|
43
|
+
.optional()
|
|
44
|
+
.describe("Target platform — instagram, threads, or both (default: both)"),
|
|
45
|
+
time_range: z
|
|
46
|
+
.enum(["7d", "30d", "90d"])
|
|
47
|
+
.optional()
|
|
48
|
+
.describe("Time window for insights — 7d, 30d, or 90d (default: 7d)"),
|
|
49
|
+
focus: z
|
|
50
|
+
.enum(["engagement", "growth", "content"])
|
|
51
|
+
.optional()
|
|
52
|
+
.describe("Report focus — engagement, growth, or content (default: balanced overview)"),
|
|
53
|
+
};
|
|
54
|
+
const TIME_RANGE_DESCRIPTIONS = {
|
|
55
|
+
"7d": "the last 7 days",
|
|
56
|
+
"30d": "the last 30 days",
|
|
57
|
+
"90d": "the last 90 days",
|
|
58
|
+
};
|
|
59
|
+
function includesInstagram(platform) {
|
|
60
|
+
return platform === "instagram" || platform === "both";
|
|
61
|
+
}
|
|
62
|
+
function includesThreads(platform) {
|
|
63
|
+
return platform === "threads" || platform === "both";
|
|
64
|
+
}
|
|
65
|
+
function pickIgPublishTools(contentType) {
|
|
66
|
+
if (contentType === "text")
|
|
67
|
+
return [];
|
|
68
|
+
if (contentType === "image")
|
|
69
|
+
return [PROMPT_TOOL_NAMES.IG_PUBLISH_PHOTO];
|
|
70
|
+
if (contentType === "video")
|
|
71
|
+
return [PROMPT_TOOL_NAMES.IG_PUBLISH_REEL];
|
|
72
|
+
if (contentType === "carousel")
|
|
73
|
+
return [PROMPT_TOOL_NAMES.IG_PUBLISH_CAROUSEL];
|
|
74
|
+
return [
|
|
75
|
+
PROMPT_TOOL_NAMES.IG_PUBLISH_PHOTO,
|
|
76
|
+
PROMPT_TOOL_NAMES.IG_PUBLISH_REEL,
|
|
77
|
+
PROMPT_TOOL_NAMES.IG_PUBLISH_CAROUSEL,
|
|
78
|
+
];
|
|
79
|
+
}
|
|
80
|
+
function pickThreadsPublishTools(contentType) {
|
|
81
|
+
if (contentType === "text")
|
|
82
|
+
return [PROMPT_TOOL_NAMES.THREADS_PUBLISH_TEXT];
|
|
83
|
+
if (contentType === "image")
|
|
84
|
+
return [PROMPT_TOOL_NAMES.THREADS_PUBLISH_IMAGE];
|
|
85
|
+
if (contentType === "video")
|
|
86
|
+
return [PROMPT_TOOL_NAMES.THREADS_PUBLISH_VIDEO];
|
|
87
|
+
if (contentType === "carousel")
|
|
88
|
+
return [PROMPT_TOOL_NAMES.THREADS_PUBLISH_CAROUSEL];
|
|
89
|
+
return [
|
|
90
|
+
PROMPT_TOOL_NAMES.THREADS_PUBLISH_TEXT,
|
|
91
|
+
PROMPT_TOOL_NAMES.THREADS_PUBLISH_IMAGE,
|
|
92
|
+
PROMPT_TOOL_NAMES.THREADS_PUBLISH_VIDEO,
|
|
93
|
+
PROMPT_TOOL_NAMES.THREADS_PUBLISH_CAROUSEL,
|
|
94
|
+
];
|
|
95
|
+
}
|
|
96
|
+
function buildContentPublishText(args) {
|
|
97
|
+
const platform = args.platform ?? "both";
|
|
98
|
+
const contentType = args.content_type;
|
|
99
|
+
const wantIg = includesInstagram(platform) && contentType !== "text";
|
|
100
|
+
const wantThreads = includesThreads(platform);
|
|
101
|
+
const lines = [];
|
|
102
|
+
if (wantIg && wantThreads) {
|
|
103
|
+
lines.push("Help me publish content across Instagram and Threads.");
|
|
104
|
+
}
|
|
105
|
+
else if (wantIg) {
|
|
106
|
+
lines.push("Help me publish content on Instagram.");
|
|
107
|
+
}
|
|
108
|
+
else if (wantThreads) {
|
|
109
|
+
lines.push("Help me publish content on Threads.");
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
lines.push("Instagram cannot publish text-only posts — pick platform=threads or a non-text content_type.");
|
|
113
|
+
return lines.join("\n");
|
|
114
|
+
}
|
|
115
|
+
if (contentType === "text" && includesInstagram(platform)) {
|
|
116
|
+
lines.push("");
|
|
117
|
+
lines.push("Note: Instagram cannot publish text-only posts, so only Threads will receive this content.");
|
|
118
|
+
}
|
|
119
|
+
lines.push("");
|
|
120
|
+
lines.push("Please follow these steps:");
|
|
121
|
+
let step = 1;
|
|
122
|
+
if (args.media_url) {
|
|
123
|
+
lines.push(`${step}. Use the provided media URL: ${args.media_url}`);
|
|
124
|
+
step++;
|
|
125
|
+
}
|
|
126
|
+
else if (contentType === "text") {
|
|
127
|
+
if (!args.caption) {
|
|
128
|
+
lines.push(`${step}. Ask me what text I want to post`);
|
|
129
|
+
step++;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
const hint = args.caption ? "image or video URL" : "text, image URL, or video URL";
|
|
134
|
+
lines.push(`${step}. Ask me what content I want to post (${hint})`);
|
|
135
|
+
step++;
|
|
136
|
+
}
|
|
137
|
+
if (args.caption) {
|
|
138
|
+
lines.push(`${step}. Use the provided caption: ${args.caption}`);
|
|
139
|
+
step++;
|
|
140
|
+
}
|
|
141
|
+
if (wantIg) {
|
|
142
|
+
const tools = pickIgPublishTools(contentType);
|
|
143
|
+
if (tools.length > 0) {
|
|
144
|
+
lines.push(`${step}. Use ${joinTools(tools)} to post on Instagram`);
|
|
145
|
+
step++;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
if (wantThreads) {
|
|
149
|
+
const tools = pickThreadsPublishTools(contentType);
|
|
150
|
+
if (tools.length > 0) {
|
|
151
|
+
lines.push(`${step}. Use ${joinTools(tools)} to post on Threads`);
|
|
152
|
+
step++;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
const permalinkScope = wantIg && wantThreads ? "for each platform" : wantIg ? "on Instagram" : "on Threads";
|
|
156
|
+
lines.push(`${step}. Report back the permalink ${permalinkScope}`);
|
|
157
|
+
lines.push("");
|
|
158
|
+
lines.push("Tips:");
|
|
159
|
+
if (wantIg) {
|
|
160
|
+
lines.push("- Instagram captions can be up to 2200 characters");
|
|
161
|
+
}
|
|
162
|
+
if (wantThreads) {
|
|
163
|
+
lines.push("- Threads posts are limited to 500 characters");
|
|
164
|
+
}
|
|
165
|
+
if (contentType !== "text") {
|
|
166
|
+
lines.push("- Both platforms require publicly accessible HTTPS URLs for media");
|
|
167
|
+
lines.push("- Video uploads may take time to process");
|
|
168
|
+
if (wantIg && wantThreads) {
|
|
169
|
+
lines.push("- You can add alt_text for accessibility on Instagram photo posts and Threads media; Reels, Stories, and IG videos do not support it");
|
|
170
|
+
}
|
|
171
|
+
else if (wantIg) {
|
|
172
|
+
lines.push("- You can add alt_text for accessibility on Instagram photo posts; Reels, Stories, and IG videos do not support it");
|
|
173
|
+
}
|
|
174
|
+
else if (wantThreads) {
|
|
175
|
+
lines.push("- You can add alt_text for accessibility on Threads media");
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
if (wantIg) {
|
|
179
|
+
const collabTools = pickIgPublishTools(contentType);
|
|
180
|
+
if (collabTools.length > 0) {
|
|
181
|
+
const collabVerb = collabTools.length > 1 ? "accept" : "accepts";
|
|
182
|
+
lines.push(`- On Instagram, ${joinTools(collabTools)} ${collabVerb} an optional \`collaborators\` array of up to 3 usernames; Stories do not support collaborators`);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
if (wantThreads) {
|
|
186
|
+
lines.push("- On Threads, you can add a topic_tag, poll, or GIF attachment");
|
|
187
|
+
lines.push("- On Threads, you can set reply_control (everyone, accounts_you_follow, mentioned_only, parent_post_author_only, followers_only)");
|
|
188
|
+
}
|
|
189
|
+
return lines.join("\n");
|
|
190
|
+
}
|
|
191
|
+
function joinTools(tools) {
|
|
192
|
+
if (tools.length === 1)
|
|
193
|
+
return tools[0];
|
|
194
|
+
if (tools.length === 2)
|
|
195
|
+
return `${tools[0]} or ${tools[1]}`;
|
|
196
|
+
return `${tools.slice(0, -1).join(", ")}, or ${tools[tools.length - 1]}`;
|
|
197
|
+
}
|
|
198
|
+
function buildAnalyticsReportText(args) {
|
|
199
|
+
const platform = args.platform ?? "both";
|
|
200
|
+
const timeRange = args.time_range ?? "7d";
|
|
201
|
+
const wantIg = includesInstagram(platform);
|
|
202
|
+
const wantThreads = includesThreads(platform);
|
|
203
|
+
const timeRangeText = TIME_RANGE_DESCRIPTIONS[timeRange];
|
|
204
|
+
const lines = [];
|
|
205
|
+
if (wantIg && wantThreads) {
|
|
206
|
+
lines.push("Generate a comprehensive analytics report for my Instagram and Threads accounts.");
|
|
207
|
+
}
|
|
208
|
+
else if (wantIg) {
|
|
209
|
+
lines.push("Generate a comprehensive analytics report for my Instagram account.");
|
|
210
|
+
}
|
|
211
|
+
else {
|
|
212
|
+
lines.push("Generate a comprehensive analytics report for my Threads account.");
|
|
213
|
+
}
|
|
214
|
+
if (args.focus) {
|
|
215
|
+
lines.push("");
|
|
216
|
+
lines.push(`Pay particular attention to ${args.focus} metrics in this report.`);
|
|
217
|
+
}
|
|
218
|
+
lines.push("");
|
|
219
|
+
lines.push("Please use the following tools:");
|
|
220
|
+
let step = 1;
|
|
221
|
+
if (wantIg) {
|
|
222
|
+
lines.push(`${step}. ${PROMPT_TOOL_NAMES.IG_GET_PROFILE} — Get Instagram profile stats (followers, media count)`);
|
|
223
|
+
step++;
|
|
224
|
+
lines.push(`${step}. ${PROMPT_TOOL_NAMES.IG_GET_ACCOUNT_INSIGHTS} — Get Instagram insights for ${timeRangeText} (metric: views,reach,follower_count, period: day)`);
|
|
225
|
+
step++;
|
|
226
|
+
lines.push(`${step}. ${PROMPT_TOOL_NAMES.IG_GET_MEDIA_LIST} — Get recent 10 posts to analyze engagement`);
|
|
227
|
+
step++;
|
|
228
|
+
}
|
|
229
|
+
if (wantThreads) {
|
|
230
|
+
lines.push(`${step}. ${PROMPT_TOOL_NAMES.THREADS_GET_PROFILE} — Get Threads profile info`);
|
|
231
|
+
step++;
|
|
232
|
+
lines.push(`${step}. ${PROMPT_TOOL_NAMES.THREADS_GET_USER_INSIGHTS} — Get Threads insights for ${timeRangeText} (metric: views,likes,replies,reposts,quotes,clicks, period: day)`);
|
|
233
|
+
step++;
|
|
234
|
+
lines.push(`${step}. ${PROMPT_TOOL_NAMES.THREADS_GET_POSTS} — Get recent 10 Threads posts`);
|
|
235
|
+
}
|
|
236
|
+
lines.push("");
|
|
237
|
+
lines.push("Then compile a report covering:");
|
|
238
|
+
lines.push("- Follower count and growth trends");
|
|
239
|
+
if (wantIg && wantThreads) {
|
|
240
|
+
lines.push("- Top performing content on each platform");
|
|
241
|
+
lines.push("- Engagement rate comparison (likes, comments, shares)");
|
|
242
|
+
}
|
|
243
|
+
else {
|
|
244
|
+
lines.push("- Top performing content");
|
|
245
|
+
lines.push("- Engagement rate (likes, comments, shares)");
|
|
246
|
+
}
|
|
247
|
+
lines.push("- Recommendations for content strategy");
|
|
248
|
+
if (wantIg) {
|
|
249
|
+
lines.push("");
|
|
250
|
+
lines.push("Note: 'impressions' and 'video_views' metrics were deprecated in Graph API v22.0.");
|
|
251
|
+
lines.push("Use 'views' and 'reach' instead.");
|
|
252
|
+
}
|
|
253
|
+
return lines.join("\n");
|
|
254
|
+
}
|
|
1
255
|
export function registerPrompts(server) {
|
|
2
|
-
server.
|
|
256
|
+
server.registerPrompt("content_publish", {
|
|
257
|
+
description: "Cross-post content to Instagram and Threads simultaneously",
|
|
258
|
+
argsSchema: contentPublishArgsSchema,
|
|
259
|
+
}, (args) => ({
|
|
3
260
|
messages: [
|
|
4
261
|
{
|
|
5
262
|
role: "user",
|
|
6
263
|
content: {
|
|
7
264
|
type: "text",
|
|
8
|
-
text:
|
|
9
|
-
"Help me publish content across Instagram and Threads.",
|
|
10
|
-
"",
|
|
11
|
-
"Please follow these steps:",
|
|
12
|
-
"1. Ask me what content I want to post (text, image URL, video URL)",
|
|
13
|
-
"2. Use ig_publish_photo or ig_publish_reel to post on Instagram",
|
|
14
|
-
"3. Use threads_publish_text, threads_publish_image, or threads_publish_video to post on Threads",
|
|
15
|
-
"4. Report back the permalink for each platform",
|
|
16
|
-
"",
|
|
17
|
-
"Tips:",
|
|
18
|
-
"- Instagram captions can be up to 2200 characters",
|
|
19
|
-
"- Threads posts are limited to 500 characters",
|
|
20
|
-
"- Both platforms require publicly accessible HTTPS URLs for media",
|
|
21
|
-
"- Video uploads may take time to process",
|
|
22
|
-
"- You can add alt_text for accessibility on Instagram photo posts and Threads media; Reels, Stories, and IG videos do not support it",
|
|
23
|
-
"- On Instagram, ig_publish_photo / ig_publish_reel / ig_publish_carousel (and the deprecated ig_publish_video) accept an optional `collaborators` array of up to 3 usernames to invite collaborators on the post; Stories do not support collaborators",
|
|
24
|
-
"- On Threads, you can add a topic_tag, poll, or GIF attachment",
|
|
25
|
-
"- On Threads, you can set reply_control (everyone, accounts_you_follow, mentioned_only, parent_post_author_only, followers_only)",
|
|
26
|
-
].join("\n"),
|
|
265
|
+
text: buildContentPublishText(args),
|
|
27
266
|
},
|
|
28
267
|
},
|
|
29
268
|
],
|
|
30
269
|
}));
|
|
31
|
-
server.
|
|
270
|
+
server.registerPrompt("analytics_report", {
|
|
271
|
+
description: "Generate a combined analytics report for Instagram and Threads",
|
|
272
|
+
argsSchema: analyticsReportArgsSchema,
|
|
273
|
+
}, (args) => ({
|
|
32
274
|
messages: [
|
|
33
275
|
{
|
|
34
276
|
role: "user",
|
|
35
277
|
content: {
|
|
36
278
|
type: "text",
|
|
37
|
-
text:
|
|
38
|
-
"Generate a comprehensive analytics report for my Instagram and Threads accounts.",
|
|
39
|
-
"",
|
|
40
|
-
"Please use the following tools:",
|
|
41
|
-
"1. ig_get_profile — Get Instagram profile stats (followers, media count)",
|
|
42
|
-
"2. ig_get_account_insights — Get Instagram insights for the last 7 days (metric: views,reach,follower_count, period: day)",
|
|
43
|
-
"3. ig_get_media_list — Get recent 10 posts to analyze engagement",
|
|
44
|
-
"4. threads_get_profile — Get Threads profile info",
|
|
45
|
-
"5. threads_get_user_insights — Get Threads insights (metric: views,likes,replies,reposts,quotes,clicks, period: day)",
|
|
46
|
-
"6. threads_get_posts — Get recent 10 Threads posts",
|
|
47
|
-
"",
|
|
48
|
-
"Then compile a report covering:",
|
|
49
|
-
"- Follower count and growth trends",
|
|
50
|
-
"- Top performing content on each platform",
|
|
51
|
-
"- Engagement rate comparison (likes, comments, shares)",
|
|
52
|
-
"- Recommendations for content strategy",
|
|
53
|
-
"",
|
|
54
|
-
"Note: 'impressions' and 'video_views' metrics were deprecated in Graph API v22.0.",
|
|
55
|
-
"Use 'views' and 'reach' instead.",
|
|
56
|
-
].join("\n"),
|
|
279
|
+
text: buildAnalyticsReportText(args),
|
|
57
280
|
},
|
|
58
281
|
},
|
|
59
282
|
],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,gBAAgB,EAAE,kBAAkB;IACpC,eAAe,EAAE,iBAAiB;IAClC,mBAAmB,EAAE,qBAAqB;IAC1C,oBAAoB,EAAE,sBAAsB;IAC5C,qBAAqB,EAAE,uBAAuB;IAC9C,qBAAqB,EAAE,uBAAuB;IAC9C,wBAAwB,EAAE,0BAA0B;IACpD,cAAc,EAAE,gBAAgB;IAChC,uBAAuB,EAAE,yBAAyB;IAClD,iBAAiB,EAAE,mBAAmB;IACtC,mBAAmB,EAAE,qBAAqB;IAC1C,yBAAyB,EAAE,2BAA2B;IACtD,iBAAiB,EAAE,mBAAmB;CAC9B,CAAC;AAEX,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,QAAQ,EAAE,CAAC;SACR,IAAI,CAAC,CAAC,WAAW,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;SACtC,QAAQ,EAAE;SACV,QAAQ,CAAC,+DAA+D,CAAC;IAC5E,YAAY,EAAE,CAAC;SACZ,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;SAC5C,QAAQ,EAAE;SACV,QAAQ,CACP,kFAAkF,CACnF;IACH,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,qFAAqF,CACtF;IACH,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;CAC1E,CAAC;AAEF,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACvC,QAAQ,EAAE,CAAC;SACR,IAAI,CAAC,CAAC,WAAW,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;SACtC,QAAQ,EAAE;SACV,QAAQ,CAAC,+DAA+D,CAAC;IAC5E,UAAU,EAAE,CAAC;SACV,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;SAC1B,QAAQ,EAAE;SACV,QAAQ,CAAC,0DAA0D,CAAC;IACvE,KAAK,EAAE,CAAC;SACL,IAAI,CAAC,CAAC,YAAY,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;SACzC,QAAQ,EAAE;SACV,QAAQ,CACP,4EAA4E,CAC7E;CACJ,CAAC;AAOF,MAAM,uBAAuB,GAA8B;IACzD,IAAI,EAAE,iBAAiB;IACvB,KAAK,EAAE,kBAAkB;IACzB,KAAK,EAAE,kBAAkB;CAC1B,CAAC;AAEF,SAAS,iBAAiB,CAAC,QAAkB;IAC3C,OAAO,QAAQ,KAAK,WAAW,IAAI,QAAQ,KAAK,MAAM,CAAC;AACzD,CAAC;AAED,SAAS,eAAe,CAAC,QAAkB;IACzC,OAAO,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,MAAM,CAAC;AACvD,CAAC;AAED,SAAS,kBAAkB,CAAC,WAAoC;IAC9D,IAAI,WAAW,KAAK,MAAM;QAAE,OAAO,EAAE,CAAC;IACtC,IAAI,WAAW,KAAK,OAAO;QAAE,OAAO,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;IACzE,IAAI,WAAW,KAAK,OAAO;QAAE,OAAO,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC;IACxE,IAAI,WAAW,KAAK,UAAU;QAAE,OAAO,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,CAAC;IAC/E,OAAO;QACL,iBAAiB,CAAC,gBAAgB;QAClC,iBAAiB,CAAC,eAAe;QACjC,iBAAiB,CAAC,mBAAmB;KACtC,CAAC;AACJ,CAAC;AAED,SAAS,uBAAuB,CAAC,WAAoC;IACnE,IAAI,WAAW,KAAK,MAAM;QAAE,OAAO,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,CAAC;IAC5E,IAAI,WAAW,KAAK,OAAO;QAAE,OAAO,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,CAAC;IAC9E,IAAI,WAAW,KAAK,OAAO;QAAE,OAAO,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,CAAC;IAC9E,IAAI,WAAW,KAAK,UAAU;QAC5B,OAAO,CAAC,iBAAiB,CAAC,wBAAwB,CAAC,CAAC;IACtD,OAAO;QACL,iBAAiB,CAAC,oBAAoB;QACtC,iBAAiB,CAAC,qBAAqB;QACvC,iBAAiB,CAAC,qBAAqB;QACvC,iBAAiB,CAAC,wBAAwB;KAC3C,CAAC;AACJ,CAAC;AAED,SAAS,uBAAuB,CAAC,IAKhC;IACC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC;IACzC,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC;IACtC,MAAM,MAAM,GAAG,iBAAiB,CAAC,QAAQ,CAAC,IAAI,WAAW,KAAK,MAAM,CAAC;IACrE,MAAM,WAAW,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;IAE9C,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,IAAI,MAAM,IAAI,WAAW,EAAE,CAAC;QAC1B,KAAK,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC;IACtE,CAAC;SAAM,IAAI,MAAM,EAAE,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;IACtD,CAAC;SAAM,IAAI,WAAW,EAAE,CAAC;QACvB,KAAK,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;IACpD,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CACR,8FAA8F,CAC/F,CAAC;QACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,IAAI,WAAW,KAAK,MAAM,IAAI,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1D,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CACR,4FAA4F,CAC7F,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;IAEzC,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QACnB,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,iCAAiC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;QACrE,IAAI,EAAE,CAAC;IACT,CAAC;SAAM,IAAI,WAAW,KAAK,MAAM,EAAE,CAAC;QAClC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,mCAAmC,CAAC,CAAC;YACvD,IAAI,EAAE,CAAC;QACT,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,+BAA+B,CAAC;QACnF,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,yCAAyC,IAAI,GAAG,CAAC,CAAC;QACpE,IAAI,EAAE,CAAC;IACT,CAAC;IAED,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,+BAA+B,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QACjE,IAAI,EAAE,CAAC;IACT,CAAC;IAED,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,KAAK,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAC;QAC9C,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,SAAS,SAAS,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;YACpE,IAAI,EAAE,CAAC;QACT,CAAC;IACH,CAAC;IACD,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,KAAK,GAAG,uBAAuB,CAAC,WAAW,CAAC,CAAC;QACnD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,SAAS,SAAS,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;YAClE,IAAI,EAAE,CAAC;QACT,CAAC;IACH,CAAC;IACD,MAAM,cAAc,GAClB,MAAM,IAAI,WAAW,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC;IACvF,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,+BAA+B,cAAc,EAAE,CAAC,CAAC;IAEnE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACpB,IAAI,MAAM,EAAE,CAAC;QACX,KAAK,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;IAClE,CAAC;IACD,IAAI,WAAW,EAAE,CAAC;QAChB,KAAK,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;IAC9D,CAAC;IACD,IAAI,WAAW,KAAK,MAAM,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CACR,mEAAmE,CACpE,CAAC;QACF,KAAK,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;QACvD,IAAI,MAAM,IAAI,WAAW,EAAE,CAAC;YAC1B,KAAK,CAAC,IAAI,CACR,sIAAsI,CACvI,CAAC;QACJ,CAAC;aAAM,IAAI,MAAM,EAAE,CAAC;YAClB,KAAK,CAAC,IAAI,CACR,oHAAoH,CACrH,CAAC;QACJ,CAAC;aAAM,IAAI,WAAW,EAAE,CAAC;YACvB,KAAK,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;IACD,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,WAAW,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAC;QACpD,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;YACjE,KAAK,CAAC,IAAI,CACR,mBAAmB,SAAS,CAAC,WAAW,CAAC,IAAI,UAAU,iGAAiG,CACzJ,CAAC;QACJ,CAAC;IACH,CAAC;IACD,IAAI,WAAW,EAAE,CAAC;QAChB,KAAK,CAAC,IAAI,CACR,gEAAgE,CACjE,CAAC;QACF,KAAK,CAAC,IAAI,CACR,kIAAkI,CACnI,CAAC;IACJ,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,SAAS,CAAC,KAAe;IAChC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,CAAC,CAAE,CAAC;IACzC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,GAAG,KAAK,CAAC,CAAC,CAAE,OAAO,KAAK,CAAC,CAAC,CAAE,EAAE,CAAC;IAC9D,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAE,EAAE,CAAC;AAC5E,CAAC;AAED,SAAS,wBAAwB,CAAC,IAIjC;IACC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC;IACzC,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC;IAC1C,MAAM,MAAM,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAC3C,MAAM,WAAW,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;IAC9C,MAAM,aAAa,GAAG,uBAAuB,CAAC,SAAS,CAAC,CAAC;IAEzD,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,IAAI,MAAM,IAAI,WAAW,EAAE,CAAC;QAC1B,KAAK,CAAC,IAAI,CACR,kFAAkF,CACnF,CAAC;IACJ,CAAC;SAAM,IAAI,MAAM,EAAE,CAAC;QAClB,KAAK,CAAC,IAAI,CACR,qEAAqE,CACtE,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CACR,mEAAmE,CACpE,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CACR,+BAA+B,IAAI,CAAC,KAAK,0BAA0B,CACpE,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;IAE9C,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,IAAI,MAAM,EAAE,CAAC;QACX,KAAK,CAAC,IAAI,CACR,GAAG,IAAI,KAAK,iBAAiB,CAAC,cAAc,yDAAyD,CACtG,CAAC;QACF,IAAI,EAAE,CAAC;QACP,KAAK,CAAC,IAAI,CACR,GAAG,IAAI,KAAK,iBAAiB,CAAC,uBAAuB,iCAAiC,aAAa,oDAAoD,CACxJ,CAAC;QACF,IAAI,EAAE,CAAC;QACP,KAAK,CAAC,IAAI,CACR,GAAG,IAAI,KAAK,iBAAiB,CAAC,iBAAiB,8CAA8C,CAC9F,CAAC;QACF,IAAI,EAAE,CAAC;IACT,CAAC;IACD,IAAI,WAAW,EAAE,CAAC;QAChB,KAAK,CAAC,IAAI,CACR,GAAG,IAAI,KAAK,iBAAiB,CAAC,mBAAmB,6BAA6B,CAC/E,CAAC;QACF,IAAI,EAAE,CAAC;QACP,KAAK,CAAC,IAAI,CACR,GAAG,IAAI,KAAK,iBAAiB,CAAC,yBAAyB,+BAA+B,aAAa,mEAAmE,CACvK,CAAC;QACF,IAAI,EAAE,CAAC;QACP,KAAK,CAAC,IAAI,CACR,GAAG,IAAI,KAAK,iBAAiB,CAAC,iBAAiB,gCAAgC,CAChF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;IAC9C,KAAK,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;IACjD,IAAI,MAAM,IAAI,WAAW,EAAE,CAAC;QAC1B,KAAK,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;QACxD,KAAK,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;IACvE,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QACvC,KAAK,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;IAC5D,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;IAErD,IAAI,MAAM,EAAE,CAAC;QACX,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CACR,mFAAmF,CACpF,CAAC;QACF,KAAK,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;IACjD,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAAiB;IAC/C,MAAM,CAAC,cAAc,CACnB,iBAAiB,EACjB;QACE,WAAW,EACT,4DAA4D;QAC9D,UAAU,EAAE,wBAAwB;KACrC,EACD,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACT,QAAQ,EAAE;YACR;gBACE,IAAI,EAAE,MAAe;gBACrB,OAAO,EAAE;oBACP,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,uBAAuB,CAAC,IAAI,CAAC;iBACpC;aACF;SACF;KACF,CAAC,CACH,CAAC;IAEF,MAAM,CAAC,cAAc,CACnB,kBAAkB,EAClB;QACE,WAAW,EACT,gEAAgE;QAClE,UAAU,EAAE,yBAAyB;KACtC,EACD,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACT,QAAQ,EAAE;YACR;gBACE,IAAI,EAAE,MAAe;gBACrB,OAAO,EAAE;oBACP,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,wBAAwB,CAAC,IAAI,CAAC;iBACrC;aACF;SACF;KACF,CAAC,CACH,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register-all.d.ts","sourceRoot":"","sources":["../src/register-all.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AA2BvD,wBAAgB,WAAW,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CAkBvE"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
// Meta platform tools
|
|
2
|
+
import { registerMetaAuthTools } from "./tools/meta/auth.js";
|
|
3
|
+
// Instagram tools
|
|
4
|
+
import { registerIgPublishingTools } from "./tools/instagram/publishing.js";
|
|
5
|
+
import { registerIgMediaTools } from "./tools/instagram/media.js";
|
|
6
|
+
import { registerIgCommentTools } from "./tools/instagram/comments.js";
|
|
7
|
+
import { registerIgProfileTools } from "./tools/instagram/profile.js";
|
|
8
|
+
import { registerIgHashtagTools } from "./tools/instagram/hashtags.js";
|
|
9
|
+
import { registerIgMentionTools } from "./tools/instagram/mentions.js";
|
|
10
|
+
import { registerIgMessagingTools } from "./tools/instagram/messaging.js";
|
|
11
|
+
// Threads tools
|
|
12
|
+
import { registerThreadsPublishingTools } from "./tools/threads/publishing.js";
|
|
13
|
+
import { registerThreadsMediaTools } from "./tools/threads/media.js";
|
|
14
|
+
import { registerThreadsReplyTools } from "./tools/threads/replies.js";
|
|
15
|
+
import { registerThreadsProfileTools } from "./tools/threads/profile.js";
|
|
16
|
+
import { registerThreadsInsightTools } from "./tools/threads/insights.js";
|
|
17
|
+
import { registerThreadsMentionsTools } from "./tools/threads/mentions.js";
|
|
18
|
+
// Resources & Prompts
|
|
19
|
+
import { registerInstagramResources } from "./resources/instagram.js";
|
|
20
|
+
import { registerThreadsResources } from "./resources/threads.js";
|
|
21
|
+
import { registerPrompts } from "./prompts/index.js";
|
|
22
|
+
export function registerAll(server, client) {
|
|
23
|
+
registerMetaAuthTools(server, client);
|
|
24
|
+
registerIgPublishingTools(server, client);
|
|
25
|
+
registerIgMediaTools(server, client);
|
|
26
|
+
registerIgCommentTools(server, client);
|
|
27
|
+
registerIgProfileTools(server, client);
|
|
28
|
+
registerIgHashtagTools(server, client);
|
|
29
|
+
registerIgMentionTools(server, client);
|
|
30
|
+
registerIgMessagingTools(server, client);
|
|
31
|
+
registerThreadsPublishingTools(server, client);
|
|
32
|
+
registerThreadsMediaTools(server, client);
|
|
33
|
+
registerThreadsReplyTools(server, client);
|
|
34
|
+
registerThreadsProfileTools(server, client);
|
|
35
|
+
registerThreadsInsightTools(server, client);
|
|
36
|
+
registerThreadsMentionsTools(server, client);
|
|
37
|
+
registerInstagramResources(server, client);
|
|
38
|
+
registerThreadsResources(server, client);
|
|
39
|
+
registerPrompts(server);
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=register-all.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register-all.js","sourceRoot":"","sources":["../src/register-all.ts"],"names":[],"mappings":"AAGA,sBAAsB;AACtB,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,kBAAkB;AAClB,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAE1E,gBAAgB;AAChB,OAAO,EAAE,8BAA8B,EAAE,MAAM,+BAA+B,CAAC;AAC/E,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAC1E,OAAO,EAAE,4BAA4B,EAAE,MAAM,6BAA6B,CAAC;AAE3E,sBAAsB;AACtB,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,MAAM,UAAU,WAAW,CAAC,MAAiB,EAAE,MAAkB;IAC/D,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,yBAAyB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,sBAAsB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,sBAAsB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,sBAAsB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,sBAAsB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,wBAAwB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,8BAA8B,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/C,yBAAyB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,yBAAyB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,2BAA2B,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5C,2BAA2B,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5C,4BAA4B,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7C,0BAA0B,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3C,wBAAwB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,eAAe,CAAC,MAAM,CAAC,CAAC;AAC1B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instagram.d.ts","sourceRoot":"","sources":["../../src/resources/instagram.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"instagram.d.ts","sourceRoot":"","sources":["../../src/resources/instagram.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,UAAU,EAAwB,MAAM,4BAA4B,CAAC;AAK9E,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,QA8B/E"}
|
|
@@ -1,10 +1,19 @@
|
|
|
1
|
+
import { PROFILE_CACHE_TTL_MS } from "../services/meta-client.js";
|
|
2
|
+
import { IG_PROFILE_FIELDS } from "../constants/fields.js";
|
|
3
|
+
import { igProfileCacheKey } from "../tools/instagram/profile.js";
|
|
1
4
|
import { toMcpResourceError } from "../utils/errors.js";
|
|
2
5
|
export function registerInstagramResources(server, client) {
|
|
3
|
-
server.
|
|
6
|
+
server.registerResource("instagram-profile", "meta-mcp://instagram/profile", { description: "Instagram Business/Creator account profile information", mimeType: "application/json" }, async () => {
|
|
4
7
|
try {
|
|
5
|
-
const
|
|
6
|
-
|
|
7
|
-
|
|
8
|
+
const cacheKey = igProfileCacheKey(client.igUserId);
|
|
9
|
+
let data = client.getCached(cacheKey);
|
|
10
|
+
if (!data) {
|
|
11
|
+
const result = await client.ig("GET", `/${client.igUserId}`, {
|
|
12
|
+
fields: IG_PROFILE_FIELDS,
|
|
13
|
+
});
|
|
14
|
+
data = result.data;
|
|
15
|
+
client.setCache(cacheKey, data, PROFILE_CACHE_TTL_MS);
|
|
16
|
+
}
|
|
8
17
|
return {
|
|
9
18
|
contents: [
|
|
10
19
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instagram.js","sourceRoot":"","sources":["../../src/resources/instagram.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"instagram.js","sourceRoot":"","sources":["../../src/resources/instagram.ts"],"names":[],"mappings":"AACA,OAAO,EAAc,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAC9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD,MAAM,UAAU,0BAA0B,CAAC,MAAiB,EAAE,MAAkB;IAC9E,MAAM,CAAC,gBAAgB,CACrB,mBAAmB,EACnB,8BAA8B,EAC9B,EAAE,WAAW,EAAE,wDAAwD,EAAE,QAAQ,EAAE,kBAAkB,EAAE,EACvG,KAAK,IAAI,EAAE;QACT,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,iBAAiB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACpD,IAAI,IAAI,GAAG,MAAM,CAAC,SAAS,CAA0B,QAAQ,CAAC,CAAC;YAC/D,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,MAAM,CAAC,QAAQ,EAAE,EAAE;oBAC3D,MAAM,EAAE,iBAAiB;iBAC1B,CAAC,CAAC;gBACH,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;gBACnB,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,EAAE,oBAAoB,CAAC,CAAC;YACxD,CAAC;YACD,OAAO;gBACL,QAAQ,EAAE;oBACR;wBACE,GAAG,EAAE,8BAA8B;wBACnC,QAAQ,EAAE,kBAAkB;wBAC5B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;qBACpC;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"threads.d.ts","sourceRoot":"","sources":["../../src/resources/threads.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"threads.d.ts","sourceRoot":"","sources":["../../src/resources/threads.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,UAAU,EAAwB,MAAM,4BAA4B,CAAC;AAK9E,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,QA8B7E"}
|
|
@@ -1,10 +1,19 @@
|
|
|
1
|
+
import { PROFILE_CACHE_TTL_MS } from "../services/meta-client.js";
|
|
2
|
+
import { THREADS_PROFILE_FIELDS } from "../constants/fields.js";
|
|
3
|
+
import { threadsProfileCacheKey } from "../tools/threads/profile.js";
|
|
1
4
|
import { toMcpResourceError } from "../utils/errors.js";
|
|
2
5
|
export function registerThreadsResources(server, client) {
|
|
3
|
-
server.
|
|
6
|
+
server.registerResource("threads-profile", "meta-mcp://threads/profile", { description: "Threads user profile information", mimeType: "application/json" }, async () => {
|
|
4
7
|
try {
|
|
5
|
-
const
|
|
6
|
-
|
|
7
|
-
|
|
8
|
+
const cacheKey = threadsProfileCacheKey(client.threadsUserId);
|
|
9
|
+
let data = client.getCached(cacheKey);
|
|
10
|
+
if (!data) {
|
|
11
|
+
const result = await client.threads("GET", `/${client.threadsUserId}`, {
|
|
12
|
+
fields: THREADS_PROFILE_FIELDS,
|
|
13
|
+
});
|
|
14
|
+
data = result.data;
|
|
15
|
+
client.setCache(cacheKey, data, PROFILE_CACHE_TTL_MS);
|
|
16
|
+
}
|
|
8
17
|
return {
|
|
9
18
|
contents: [
|
|
10
19
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"threads.js","sourceRoot":"","sources":["../../src/resources/threads.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"threads.js","sourceRoot":"","sources":["../../src/resources/threads.ts"],"names":[],"mappings":"AACA,OAAO,EAAc,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAC9E,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD,MAAM,UAAU,wBAAwB,CAAC,MAAiB,EAAE,MAAkB;IAC5E,MAAM,CAAC,gBAAgB,CACrB,iBAAiB,EACjB,4BAA4B,EAC5B,EAAE,WAAW,EAAE,kCAAkC,EAAE,QAAQ,EAAE,kBAAkB,EAAE,EACjF,KAAK,IAAI,EAAE;QACT,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,sBAAsB,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;YAC9D,IAAI,IAAI,GAAG,MAAM,CAAC,SAAS,CAA0B,QAAQ,CAAC,CAAC;YAC/D,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,MAAM,CAAC,aAAa,EAAE,EAAE;oBACrE,MAAM,EAAE,sBAAsB;iBAC/B,CAAC,CAAC;gBACH,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;gBACnB,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,EAAE,oBAAoB,CAAC,CAAC;YACxD,CAAC;YACD,OAAO;gBACL,QAAQ,EAAE;oBACR;wBACE,GAAG,EAAE,4BAA4B;wBACjC,QAAQ,EAAE,kBAAkB;wBAC5B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;qBACpC;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,kBAAkB,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;QACzD,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|