@scavio/mcp-server 0.1.2 → 0.2.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 +36 -7
- package/dist/tools/index.js +2 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/instagram.d.ts +3 -0
- package/dist/tools/instagram.js +212 -0
- package/dist/tools/instagram.js.map +1 -0
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|

|
|
4
4
|

|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
[Scavio](https://scavio.dev) is a unified [Web Search API](https://scavio.dev/docs/search-api) and MCP server that connects AI agents to Google, YouTube, Amazon, Walmart, TikTok, Instagram, and Reddit. 33 tools for web search, product lookup, video discovery, and social media data through a single [Search API](https://scavio.dev/docs/search-api) endpoint.
|
|
7
7
|
|
|
8
8
|
## Remote MCP Server
|
|
9
9
|
|
|
@@ -190,34 +190,34 @@ Add to settings (`Cmd+,`):
|
|
|
190
190
|
|
|
191
191
|
## Available Tools
|
|
192
192
|
|
|
193
|
-
### Google
|
|
193
|
+
### [Google Search API](https://scavio.dev/docs/search-api)
|
|
194
194
|
|
|
195
195
|
| Tool | Description |
|
|
196
196
|
|------|-------------|
|
|
197
197
|
| `search_google` | Web search with structured results, news, images, maps, and knowledge graph |
|
|
198
198
|
|
|
199
|
-
### YouTube
|
|
199
|
+
### [YouTube Data API](https://scavio.dev/docs/youtube-api)
|
|
200
200
|
|
|
201
201
|
| Tool | Description |
|
|
202
202
|
|------|-------------|
|
|
203
203
|
| `search_youtube` | Search videos, channels, and playlists |
|
|
204
204
|
| `get_youtube_metadata` | Get video metadata including title, views, likes, and duration |
|
|
205
205
|
|
|
206
|
-
### Amazon
|
|
206
|
+
### [Amazon Product API](https://scavio.dev/docs/amazon-api)
|
|
207
207
|
|
|
208
208
|
| Tool | Description |
|
|
209
209
|
|------|-------------|
|
|
210
210
|
| `search_amazon` | Search product listings with price and sort filters |
|
|
211
211
|
| `get_amazon_product` | Get full product details by ASIN |
|
|
212
212
|
|
|
213
|
-
### Walmart
|
|
213
|
+
### [Walmart API](https://scavio.dev/docs/walmart-api)
|
|
214
214
|
|
|
215
215
|
| Tool | Description |
|
|
216
216
|
|------|-------------|
|
|
217
217
|
| `search_walmart` | Search product listings with price and delivery filters |
|
|
218
218
|
| `get_walmart_product` | Get full product details by product ID |
|
|
219
219
|
|
|
220
|
-
### TikTok
|
|
220
|
+
### [TikTok API](https://scavio.dev/docs/tiktok-api)
|
|
221
221
|
|
|
222
222
|
| Tool | Description |
|
|
223
223
|
|------|-------------|
|
|
@@ -233,7 +233,24 @@ Add to settings (`Cmd+,`):
|
|
|
233
233
|
| `get_tiktok_user_followers` | Get a user's follower list |
|
|
234
234
|
| `get_tiktok_user_followings` | Get a user's following list |
|
|
235
235
|
|
|
236
|
-
###
|
|
236
|
+
### [Instagram API](https://scavio.dev/docs/instagram-api)
|
|
237
|
+
|
|
238
|
+
| Tool | Description |
|
|
239
|
+
|------|-------------|
|
|
240
|
+
| `get_instagram_profile` | Get user profile (bio, follower/following/post counts) |
|
|
241
|
+
| `get_instagram_user_posts` | List a user's posts with pagination |
|
|
242
|
+
| `get_instagram_user_reels` | List a user's Reels with pagination |
|
|
243
|
+
| `get_instagram_user_tagged` | List posts a user is tagged in |
|
|
244
|
+
| `get_instagram_user_stories` | Get a user's active stories |
|
|
245
|
+
| `get_instagram_post` | Get a single post by url, media_id, or shortcode |
|
|
246
|
+
| `get_instagram_post_comments` | Get comments on a post |
|
|
247
|
+
| `get_instagram_comment_replies` | Get replies to a specific comment |
|
|
248
|
+
| `search_instagram_users` | Search users by keyword |
|
|
249
|
+
| `search_instagram_hashtags` | Search hashtags by keyword |
|
|
250
|
+
| `get_instagram_user_followers` | Get a user's follower list |
|
|
251
|
+
| `get_instagram_user_followings` | Get a user's following list |
|
|
252
|
+
|
|
253
|
+
### [Reddit API](https://scavio.dev/docs/reddit-api)
|
|
237
254
|
|
|
238
255
|
| Tool | Description |
|
|
239
256
|
|------|-------------|
|
|
@@ -248,6 +265,18 @@ Add to settings (`Cmd+,`):
|
|
|
248
265
|
|
|
249
266
|
---
|
|
250
267
|
|
|
268
|
+
## About Scavio
|
|
269
|
+
|
|
270
|
+
[Scavio](https://scavio.dev) is a unified [Web Search API](https://scavio.dev/docs/search-api) and data API for AI agents and developers. One key, structured JSON, no scraping or proxies:
|
|
271
|
+
|
|
272
|
+
- [Google Search API](https://scavio.dev/docs/search-api) — SERP results, news, images, maps, and knowledge graph
|
|
273
|
+
- [Amazon Product API](https://scavio.dev/docs/amazon-api) and [Walmart API](https://scavio.dev/docs/walmart-api) — product search and details
|
|
274
|
+
- [TikTok API](https://scavio.dev/docs/tiktok-api), [Reddit API](https://scavio.dev/docs/reddit-api), and [YouTube API](https://scavio.dev/docs/youtube-api) — social and video data
|
|
275
|
+
|
|
276
|
+
Get a free [Search API](https://scavio.dev/docs/search-api) key at [scavio.dev](https://scavio.dev).
|
|
277
|
+
|
|
278
|
+
---
|
|
279
|
+
|
|
251
280
|
## License
|
|
252
281
|
|
|
253
282
|
[MIT](LICENSE)
|
package/dist/tools/index.js
CHANGED
|
@@ -4,6 +4,7 @@ import { registerAmazonTools } from "./amazon.js";
|
|
|
4
4
|
import { registerWalmartTools } from "./walmart.js";
|
|
5
5
|
import { registerUsageTool } from "./usage.js";
|
|
6
6
|
import { registerTiktokTools } from "./tiktok.js";
|
|
7
|
+
import { registerInstagramTools } from "./instagram.js";
|
|
7
8
|
import { registerRedditTools } from "./reddit.js";
|
|
8
9
|
export function registerAllTools(server, getClient) {
|
|
9
10
|
registerGoogleTools(server, getClient);
|
|
@@ -11,6 +12,7 @@ export function registerAllTools(server, getClient) {
|
|
|
11
12
|
registerAmazonTools(server, getClient);
|
|
12
13
|
registerWalmartTools(server, getClient);
|
|
13
14
|
registerTiktokTools(server, getClient);
|
|
15
|
+
registerInstagramTools(server, getClient);
|
|
14
16
|
registerRedditTools(server, getClient);
|
|
15
17
|
registerUsageTool(server, getClient);
|
|
16
18
|
}
|
package/dist/tools/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD,MAAM,UAAU,gBAAgB,CAAC,MAAiB,EAAE,SAA6B;IAC/E,mBAAmB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACvC,oBAAoB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACxC,mBAAmB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACvC,oBAAoB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACxC,mBAAmB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACvC,mBAAmB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACvC,iBAAiB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AACvC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD,MAAM,UAAU,gBAAgB,CAAC,MAAiB,EAAE,SAA6B;IAC/E,mBAAmB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACvC,oBAAoB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACxC,mBAAmB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACvC,oBAAoB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACxC,mBAAmB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACvC,sBAAsB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC1C,mBAAmB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACvC,iBAAiB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AACvC,CAAC"}
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { McpError, ErrorCode } from "@modelcontextprotocol/sdk/types.js";
|
|
3
|
+
import { ApiError } from "../lib/errors.js";
|
|
4
|
+
function handleApiError(err) {
|
|
5
|
+
if (err instanceof ApiError) {
|
|
6
|
+
if (err.status === 429)
|
|
7
|
+
return { isError: true, content: [{ type: "text", text: "Rate limited. Wait and retry." }] };
|
|
8
|
+
if (err.status === 401)
|
|
9
|
+
throw new McpError(ErrorCode.InternalError, "Invalid SCAVIO_API_KEY. Check your configuration.");
|
|
10
|
+
return { isError: true, content: [{ type: "text", text: `Scavio API error (${err.status}): ${err.message}` }] };
|
|
11
|
+
}
|
|
12
|
+
throw new McpError(ErrorCode.InternalError, String(err));
|
|
13
|
+
}
|
|
14
|
+
export function registerInstagramTools(server, getClient) {
|
|
15
|
+
server.tool("get_instagram_profile", `Get an Instagram user's profile as JSON. Returns user ID, username, full name, biography, external URL, profile picture, verified/private flags, and follower/following/post counts. Provide either username or user_id.`, {
|
|
16
|
+
username: z.string().optional()
|
|
17
|
+
.describe("Instagram handle without the @ symbol, e.g. 'instagram'."),
|
|
18
|
+
user_id: z.string().optional()
|
|
19
|
+
.describe("Numeric Instagram user ID. Use if you already have it from a previous request."),
|
|
20
|
+
}, async (params) => {
|
|
21
|
+
try {
|
|
22
|
+
const data = await getClient().post("/api/v1/instagram/profile", params);
|
|
23
|
+
return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
|
|
24
|
+
}
|
|
25
|
+
catch (err) {
|
|
26
|
+
return handleApiError(err);
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
server.tool("get_instagram_user_posts", `List an Instagram user's posts (timeline media) with pagination as JSON. Provide username or user_id. Use the end_cursor from data.page_info as the next cursor; stop when has_next_page is false.`, {
|
|
30
|
+
username: z.string().optional()
|
|
31
|
+
.describe("Instagram handle without the @ symbol."),
|
|
32
|
+
user_id: z.string().optional()
|
|
33
|
+
.describe("Numeric Instagram user ID."),
|
|
34
|
+
count: z.number().int().min(1).max(50).default(12)
|
|
35
|
+
.describe("Number of posts per page (1-50)."),
|
|
36
|
+
cursor: z.string().optional()
|
|
37
|
+
.describe("Pagination cursor (end_cursor) from a previous response."),
|
|
38
|
+
}, async (params) => {
|
|
39
|
+
try {
|
|
40
|
+
const data = await getClient().post("/api/v1/instagram/user/posts", params);
|
|
41
|
+
return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
|
|
42
|
+
}
|
|
43
|
+
catch (err) {
|
|
44
|
+
return handleApiError(err);
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
server.tool("get_instagram_user_reels", `List an Instagram user's Reels with pagination as JSON. Provide username or user_id. Use the end_cursor from data.page_info as the next cursor; stop when has_next_page is false.`, {
|
|
48
|
+
username: z.string().optional()
|
|
49
|
+
.describe("Instagram handle without the @ symbol."),
|
|
50
|
+
user_id: z.string().optional()
|
|
51
|
+
.describe("Numeric Instagram user ID."),
|
|
52
|
+
count: z.number().int().min(1).max(50).default(12)
|
|
53
|
+
.describe("Number of reels per page (1-50)."),
|
|
54
|
+
cursor: z.string().optional()
|
|
55
|
+
.describe("Pagination cursor (end_cursor) from a previous response."),
|
|
56
|
+
}, async (params) => {
|
|
57
|
+
try {
|
|
58
|
+
const data = await getClient().post("/api/v1/instagram/user/reels", params);
|
|
59
|
+
return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
|
|
60
|
+
}
|
|
61
|
+
catch (err) {
|
|
62
|
+
return handleApiError(err);
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
server.tool("get_instagram_user_tagged", `List posts an Instagram user is tagged in, with pagination as JSON. Provide username or user_id. Use the end_cursor from data.page_info as the next cursor; stop when has_next_page is false.`, {
|
|
66
|
+
username: z.string().optional()
|
|
67
|
+
.describe("Instagram handle without the @ symbol."),
|
|
68
|
+
user_id: z.string().optional()
|
|
69
|
+
.describe("Numeric Instagram user ID."),
|
|
70
|
+
count: z.number().int().min(1).max(50).default(12)
|
|
71
|
+
.describe("Number of posts per page (1-50)."),
|
|
72
|
+
cursor: z.string().optional()
|
|
73
|
+
.describe("Pagination cursor (end_cursor) from a previous response."),
|
|
74
|
+
}, async (params) => {
|
|
75
|
+
try {
|
|
76
|
+
const data = await getClient().post("/api/v1/instagram/user/tagged", params);
|
|
77
|
+
return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
|
|
78
|
+
}
|
|
79
|
+
catch (err) {
|
|
80
|
+
return handleApiError(err);
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
server.tool("get_instagram_user_stories", `Get an Instagram user's currently active stories as JSON. Returns each story's media URLs, type, and timestamp. Provide either username or user_id.`, {
|
|
84
|
+
username: z.string().optional()
|
|
85
|
+
.describe("Instagram handle without the @ symbol."),
|
|
86
|
+
user_id: z.string().optional()
|
|
87
|
+
.describe("Numeric Instagram user ID."),
|
|
88
|
+
}, async (params) => {
|
|
89
|
+
try {
|
|
90
|
+
const data = await getClient().post("/api/v1/instagram/user/stories", params);
|
|
91
|
+
return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
|
|
92
|
+
}
|
|
93
|
+
catch (err) {
|
|
94
|
+
return handleApiError(err);
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
server.tool("get_instagram_post", `Get a single Instagram post (or reel) as JSON, including caption, author, media URLs, and engagement stats. Provide one of: url (a /p/, /reel/, /reels/, or /tv/ link), media_id, or shortcode.`, {
|
|
98
|
+
url: z.string().optional()
|
|
99
|
+
.describe("Instagram post URL, e.g. 'https://www.instagram.com/p/DUajw4YkorV/'."),
|
|
100
|
+
media_id: z.string().optional()
|
|
101
|
+
.describe("Numeric media ID."),
|
|
102
|
+
shortcode: z.string().optional()
|
|
103
|
+
.describe("Post shortcode, e.g. 'DUajw4YkorV'."),
|
|
104
|
+
}, async (params) => {
|
|
105
|
+
try {
|
|
106
|
+
const data = await getClient().post("/api/v1/instagram/post", params);
|
|
107
|
+
return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
|
|
108
|
+
}
|
|
109
|
+
catch (err) {
|
|
110
|
+
return handleApiError(err);
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
server.tool("get_instagram_post_comments", `Get comments on an Instagram post as JSON. Each comment includes ID (pk), text, author, timestamp, and like count. Provide shortcode or url. Use data.next_min_id as the next cursor; stop when it is absent.`, {
|
|
114
|
+
shortcode: z.string().optional()
|
|
115
|
+
.describe("Post shortcode, e.g. 'DUajw4YkorV'."),
|
|
116
|
+
url: z.string().optional()
|
|
117
|
+
.describe("Instagram post URL; the shortcode is extracted from it."),
|
|
118
|
+
cursor: z.string().optional()
|
|
119
|
+
.describe("Pagination cursor (next_min_id) from a previous response."),
|
|
120
|
+
sort_order: z.enum(["popular", "newest"]).default("popular")
|
|
121
|
+
.describe("Comment sort order."),
|
|
122
|
+
}, async (params) => {
|
|
123
|
+
try {
|
|
124
|
+
const data = await getClient().post("/api/v1/instagram/post/comments", params);
|
|
125
|
+
return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
|
|
126
|
+
}
|
|
127
|
+
catch (err) {
|
|
128
|
+
return handleApiError(err);
|
|
129
|
+
}
|
|
130
|
+
});
|
|
131
|
+
server.tool("get_instagram_comment_replies", `Get replies to a specific Instagram comment as JSON. Requires the post's media_id and the parent comment_id (the pk from get_instagram_post_comments). Use data.next_min_child_cursor as the next cursor.`, {
|
|
132
|
+
media_id: z.string()
|
|
133
|
+
.describe("Numeric media ID of the post."),
|
|
134
|
+
comment_id: z.string()
|
|
135
|
+
.describe("Parent comment ID (pk) from the get_instagram_post_comments response."),
|
|
136
|
+
cursor: z.string().optional()
|
|
137
|
+
.describe("Pagination cursor (next_min_child_cursor) from a previous response."),
|
|
138
|
+
}, async (params) => {
|
|
139
|
+
try {
|
|
140
|
+
const data = await getClient().post("/api/v1/instagram/post/comments/replies", params);
|
|
141
|
+
return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
|
|
142
|
+
}
|
|
143
|
+
catch (err) {
|
|
144
|
+
return handleApiError(err);
|
|
145
|
+
}
|
|
146
|
+
});
|
|
147
|
+
server.tool("search_instagram_users", `Search Instagram users by keyword as JSON. Each result includes user ID, username, full name, verified flag, and follower count. Pass the rank_token from a previous response as the cursor for the next page.`, {
|
|
148
|
+
keyword: z.string().min(1).max(500)
|
|
149
|
+
.describe("Search query."),
|
|
150
|
+
cursor: z.string().optional()
|
|
151
|
+
.describe("Rank token from a previous response for pagination."),
|
|
152
|
+
}, async (params) => {
|
|
153
|
+
try {
|
|
154
|
+
const data = await getClient().post("/api/v1/instagram/search/users", params);
|
|
155
|
+
return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
|
|
156
|
+
}
|
|
157
|
+
catch (err) {
|
|
158
|
+
return handleApiError(err);
|
|
159
|
+
}
|
|
160
|
+
});
|
|
161
|
+
server.tool("search_instagram_hashtags", `Search Instagram hashtags by keyword as JSON. Each result includes the hashtag name, ID, and media count. Pass the rank_token from a previous response as the cursor for the next page.`, {
|
|
162
|
+
keyword: z.string().min(1).max(500)
|
|
163
|
+
.describe("Search query."),
|
|
164
|
+
cursor: z.string().optional()
|
|
165
|
+
.describe("Rank token from a previous response for pagination."),
|
|
166
|
+
}, async (params) => {
|
|
167
|
+
try {
|
|
168
|
+
const data = await getClient().post("/api/v1/instagram/search/hashtags", params);
|
|
169
|
+
return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
|
|
170
|
+
}
|
|
171
|
+
catch (err) {
|
|
172
|
+
return handleApiError(err);
|
|
173
|
+
}
|
|
174
|
+
});
|
|
175
|
+
server.tool("get_instagram_user_followers", `Get an Instagram user's follower list as JSON. Each follower includes user ID, username, full name, and verified flag. Provide username or user_id. Use data.next_max_id as the next cursor; stop when it is absent.`, {
|
|
176
|
+
username: z.string().optional()
|
|
177
|
+
.describe("Instagram handle without the @ symbol."),
|
|
178
|
+
user_id: z.string().optional()
|
|
179
|
+
.describe("Numeric Instagram user ID."),
|
|
180
|
+
count: z.number().int().min(1).max(100).default(12)
|
|
181
|
+
.describe("Number of users per page (1-100)."),
|
|
182
|
+
cursor: z.string().optional()
|
|
183
|
+
.describe("Pagination cursor (next_max_id) from a previous response."),
|
|
184
|
+
}, async (params) => {
|
|
185
|
+
try {
|
|
186
|
+
const data = await getClient().post("/api/v1/instagram/user/followers", params);
|
|
187
|
+
return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
|
|
188
|
+
}
|
|
189
|
+
catch (err) {
|
|
190
|
+
return handleApiError(err);
|
|
191
|
+
}
|
|
192
|
+
});
|
|
193
|
+
server.tool("get_instagram_user_followings", `Get the list of accounts an Instagram user follows as JSON. Each entry includes user ID, username, full name, and verified flag. Provide username or user_id. Use data.next_max_id as the next cursor; stop when it is absent.`, {
|
|
194
|
+
username: z.string().optional()
|
|
195
|
+
.describe("Instagram handle without the @ symbol."),
|
|
196
|
+
user_id: z.string().optional()
|
|
197
|
+
.describe("Numeric Instagram user ID."),
|
|
198
|
+
count: z.number().int().min(1).max(100).default(12)
|
|
199
|
+
.describe("Number of users per page (1-100)."),
|
|
200
|
+
cursor: z.string().optional()
|
|
201
|
+
.describe("Pagination cursor (next_max_id) from a previous response."),
|
|
202
|
+
}, async (params) => {
|
|
203
|
+
try {
|
|
204
|
+
const data = await getClient().post("/api/v1/instagram/user/followings", params);
|
|
205
|
+
return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
|
|
206
|
+
}
|
|
207
|
+
catch (err) {
|
|
208
|
+
return handleApiError(err);
|
|
209
|
+
}
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
//# sourceMappingURL=instagram.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instagram.js","sourceRoot":"","sources":["../../src/tools/instagram.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@scavio/mcp-server",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"mcpName": "io.github.scavio-ai/scavio-mcp",
|
|
5
|
-
"description": "MCP server connecting AI agents to Google, YouTube, Amazon, Walmart, TikTok, and Reddit.
|
|
5
|
+
"description": "MCP server connecting AI agents to Google, YouTube, Amazon, Walmart, TikTok, Instagram, and Reddit. 33 tools for web search, product lookup, video discovery, and social media analysis.",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"license": "MIT",
|
|
8
8
|
"author": "Scavio",
|