socialcrawl-mcp 1.4.0 → 1.5.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 +29 -19
- package/dist/__tests__/data-integrity.test.js +38 -17
- package/dist/__tests__/data-integrity.test.js.map +1 -1
- package/dist/__tests__/monitors.test.d.ts +1 -0
- package/dist/__tests__/monitors.test.js +128 -0
- package/dist/__tests__/monitors.test.js.map +1 -0
- package/dist/client.d.ts +15 -0
- package/dist/client.js +55 -0
- package/dist/client.js.map +1 -1
- package/dist/constants.d.ts +1 -1
- package/dist/constants.js +1 -1
- package/dist/data/docs.js +36 -3
- package/dist/data/docs.js.map +1 -1
- package/dist/data/endpoints.js +879 -14
- package/dist/data/endpoints.js.map +1 -1
- package/dist/data/platforms.js +27 -9
- package/dist/data/platforms.js.map +1 -1
- package/dist/index.js +17 -2
- package/dist/index.js.map +1 -1
- package/dist/schemas/tools.d.ts +83 -0
- package/dist/schemas/tools.js +71 -0
- package/dist/schemas/tools.js.map +1 -1
- package/dist/tools/monitors.d.ts +31 -0
- package/dist/tools/monitors.js +147 -0
- package/dist/tools/monitors.js.map +1 -0
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
# socialcrawl-mcp
|
|
4
4
|
|
|
5
|
-
**Give your AI agent access to
|
|
5
|
+
**Give your AI agent access to 42 platforms — social media, commerce & product reviews, app stores, places & travel, business reputation, web research, prediction markets, cross-platform Prism composites, and a universal cross-platform meta-search — through a single API**
|
|
6
6
|
|
|
7
7
|
[](https://www.npmjs.com/package/socialcrawl-mcp)
|
|
8
8
|
[](https://registry.modelcontextprotocol.io)
|
|
9
|
-
[](https://socialcrawl.dev)
|
|
10
|
+
[](https://socialcrawl.dev/docs)
|
|
11
11
|
[](LICENSE)
|
|
12
12
|
[](https://glama.ai/mcp/servers/socialcrawl/mcp)
|
|
13
13
|
|
|
@@ -23,9 +23,11 @@
|
|
|
23
23
|
|
|
24
24
|
## Overview
|
|
25
25
|
|
|
26
|
-
`socialcrawl-mcp` is an [MCP (Model Context Protocol)](https://modelcontextprotocol.io) server that connects AI agents to the [SocialCrawl API](https://socialcrawl.dev) — a unified data API covering
|
|
26
|
+
`socialcrawl-mcp` is an [MCP (Model Context Protocol)](https://modelcontextprotocol.io) server that connects AI agents to the [SocialCrawl API](https://socialcrawl.dev) — a unified data API covering 42 platforms and 264 endpoints.
|
|
27
27
|
|
|
28
|
-
Retrieve profiles, posts, comments, search results, trending content, and analytics from TikTok, Instagram, YouTube, Twitter/X, LinkedIn, Reddit, GitHub, Hacker News, Polymarket, and 30 more platforms. Pull products, reviews, and sellers from Amazon and Google Shopping; apps, charts, and reviews from Google Play and the Apple App Store; places, hotels, and traveler reviews from Tripadvisor and Google Business; brand reputation from Trustpilot; Korean search across 11 Naver corpora; cross-web brand mentions with sentiment via Content Analysis — plus web research via Tavily and Perplexity, AI-powered X search via Grok, and a single `/search/everywhere` endpoint that fans out across 12+ sources in one call.
|
|
28
|
+
Retrieve profiles, posts, comments, search results, trending content, and analytics from TikTok, Instagram, YouTube, Twitter/X, LinkedIn, Reddit, GitHub, Hacker News, Polymarket, and 30 more platforms. Pull products, reviews, and sellers from Amazon and Google Shopping; apps, charts, and reviews from Google Play and the Apple App Store; places, hotels, and traveler reviews from Tripadvisor and Google Business; brand reputation from Trustpilot; Korean search across 11 Naver corpora; cross-web brand mentions with sentiment via Content Analysis; Google News headlines and Google Finance quotes — plus web research via Tavily and Perplexity, AI-powered X search via Grok, and a single `/search/everywhere` endpoint that fans out across 12+ sources in one call.
|
|
29
|
+
|
|
30
|
+
New in this release: the **Prism** family — 30 server-side composite endpoints that fan out across many platforms and fold the results into one report (universal URL `lookup`, full `comments` harvesting, cross-source `reputation`, `share-of-voice`, brand-mention and consumer-demand nowcasts, AI consensus `answers`, crisis radar, creator vetting, and video/app/product intelligence). One API key, one consistent response format, every platform.
|
|
29
31
|
|
|
30
32
|
**What the MCP server does:**
|
|
31
33
|
- Discovers available platforms and endpoints dynamically
|
|
@@ -224,17 +226,22 @@ Every response follows a unified envelope format:
|
|
|
224
226
|
|
|
225
227
|
## Available Tools
|
|
226
228
|
|
|
227
|
-
The MCP server exposes
|
|
229
|
+
The MCP server exposes 6 tools:
|
|
228
230
|
|
|
229
231
|
| Tool | Description | Needs API key? |
|
|
230
232
|
|------|-------------|----------------|
|
|
231
|
-
| `socialcrawl_list_platforms` | Discover all
|
|
233
|
+
| `socialcrawl_list_platforms` | Discover all 42 platforms with their endpoints and capabilities | No |
|
|
232
234
|
| `socialcrawl_list_endpoints` | See all endpoints, required parameters, and credit costs for a platform | No |
|
|
233
|
-
| `socialcrawl_request` | Make any SocialCrawl API call — profiles, posts, comments, search, analytics. Supports an optional `idempotencyKey` for retry-safe calls. | Yes |
|
|
235
|
+
| `socialcrawl_request` | Make any SocialCrawl API call — profiles, posts, comments, search, analytics, Prism composites. Supports an optional `idempotencyKey` for retry-safe calls. | Yes |
|
|
234
236
|
| `socialcrawl_check_balance` | Check remaining credits and recent deduction summary. Calls `/v1/credits/balance` — costs 0 credits. | Yes |
|
|
237
|
+
| `socialcrawl_monitors` | Create and manage stateful monitors that re-run any recipe on a cadence, deliver results to a signed webhook, and accumulate a time-series. Actions: create, list, get, runs, timeseries, pause, resume, delete. | Yes |
|
|
235
238
|
| `socialcrawl_get_docs` | Access detailed API documentation by topic or platform | No |
|
|
236
239
|
|
|
237
|
-
Three of the
|
|
240
|
+
Three of the six tools work without an API key — they query local bundled data. `socialcrawl_request`, `socialcrawl_check_balance`, and `socialcrawl_monitors` require a key.
|
|
241
|
+
|
|
242
|
+
### Monitors — schedule any recipe
|
|
243
|
+
|
|
244
|
+
`socialcrawl_monitors` wraps any registry endpoint or Prism composite in a scheduled, stateful monitor (`/v1/monitors/*`). It re-runs the recipe hourly/daily/weekly (or on a cron), delivers each result to an HMAC-signed webhook, raises alerts on metric thresholds or changes, and keeps a per-run time-series you can read back. *"Prism answers once; monitors watch it for you."* Managing monitors costs 0 credits; each scheduled run bills the recipe's normal cost plus a 1-credit scheduling premium. See `socialcrawl_get_docs` topic `monitors` for the full contract.
|
|
238
245
|
|
|
239
246
|
### Smart validation
|
|
240
247
|
|
|
@@ -248,19 +255,20 @@ Pass an `idempotencyKey` to `socialcrawl_request` (UUIDv4 recommended) to make t
|
|
|
248
255
|
|
|
249
256
|
| Platform | Endpoints | Data Available |
|
|
250
257
|
|----------|-----------|----------------|
|
|
251
|
-
| **
|
|
252
|
-
| **
|
|
253
|
-
| **
|
|
254
|
-
| **
|
|
258
|
+
| **Prism** | 30 | Cross-platform composites — URL lookup, comment harvesting, brand mentions, demand signals, AI visibility, crisis radar/post-mortem, reputation, share-of-voice, creator vetting, AI consensus answers, video/app/product intelligence |
|
|
259
|
+
| **Facebook** | 22 | Pages, posts, comments, groups, photos, reels, events, Marketplace, transcripts, full Ad Library |
|
|
260
|
+
| **TikTok** | 19 | Profiles, videos, comments & replies, search, trending, audience, followers, live, songs, transcripts, profile-360 |
|
|
261
|
+
| **YouTube** | 17 | Channels, videos, shorts, comments & replies, sponsors, playlists, community posts, search, trending, transcripts, profile-360 |
|
|
262
|
+
| **Instagram** | 16 | Profiles, posts, reels, comments, highlights, search, trending reels, audio reels, embed, transcripts, profile-360 |
|
|
255
263
|
| **GitHub** | 12 | Users, repos, issues, PRs, READMEs, releases, search, repo dossier, user profile-velocity |
|
|
256
|
-
| **Naver** |
|
|
264
|
+
| **Naver** | 12 | Korea's #1 portal — blog, news, book, encyclopedia, cafe, KiN, local, shopping, doc, image, web search, brief |
|
|
257
265
|
| **Google** | 10 | Web search, Ads Transparency, Business Profile (info, reviews, updates, Q&A), Travel hotels |
|
|
258
266
|
| **Content Analysis** | 10 | Cross-web brand mentions, sentiment, rating distributions, phrase/category trends |
|
|
267
|
+
| **LinkedIn** | 9 | Profiles, company pages, posts, post search, transcripts, Ad Library, profile-360 |
|
|
259
268
|
| **Google Play** | 8 | App search, app details, reviews, charts, listings database, reference data |
|
|
260
269
|
| **Apple App Store** | 8 | App search, app details, reviews, charts, listings database, reference data |
|
|
261
|
-
| **
|
|
262
|
-
| **
|
|
263
|
-
| **Reddit** | 6 | Subreddits, posts, comments, search, transcripts |
|
|
270
|
+
| **Twitter/X** | 8 | Profiles, tweets, communities, video transcripts, AI search via Grok, profile-360 |
|
|
271
|
+
| **Reddit** | 7 | Subreddits, posts, comments, search, transcripts, omni-search VoC sweep |
|
|
264
272
|
| **Spotify** | 6 | Artists, tracks, albums, podcasts, episodes, search |
|
|
265
273
|
| **TikTok Shop** | 5 | Products, reviews, listings, search, creator showcases |
|
|
266
274
|
| **Threads** | 5 | Profiles, posts, keyword search, user search |
|
|
@@ -274,13 +282,15 @@ Pass an `idempotencyKey` to `socialcrawl_request` (UUIDv4 recommended) to make t
|
|
|
274
282
|
| **Truth Social** | 3 | Profiles, posts |
|
|
275
283
|
| **Kwai** | 3 | Profiles, posts |
|
|
276
284
|
| **Bluesky** | 3 | Profiles, posts |
|
|
285
|
+
| **Google Finance** | 3 | Instrument quotes, markets overview, ticker search |
|
|
277
286
|
| **Trustpilot** | 2 | Business search, company reviews |
|
|
278
287
|
| **Tripadvisor** | 2 | Place search, traveler reviews |
|
|
288
|
+
| **Universal Search** | 2 | One query fanned out across 12+ platforms (20cr); forums lane |
|
|
279
289
|
| **Snapchat** | 1 | Profiles |
|
|
280
290
|
| **Kick** | 1 | Clips |
|
|
281
291
|
| **Perplexity** | 1 | Sonar web research with cited sources |
|
|
282
292
|
| **Polymarket** | 1 | Prediction-market research — multi-query fan-out + ranking |
|
|
283
|
-
| **
|
|
293
|
+
| **Google News** | 1 | Real-time Google News SERP search |
|
|
284
294
|
| **Linktree** | 1 | Link pages |
|
|
285
295
|
| **Linkbio** | 1 | Link pages |
|
|
286
296
|
| **Linkme** | 1 | Link pages |
|
|
@@ -288,7 +298,7 @@ Pass an `idempotencyKey` to `socialcrawl_request` (UUIDv4 recommended) to make t
|
|
|
288
298
|
| **Pillar** | 1 | Link pages |
|
|
289
299
|
| **Utility** | 1 | Age & gender detection |
|
|
290
300
|
|
|
291
|
-
**Total:
|
|
301
|
+
**Total: 264 endpoints across 42 platforms.**
|
|
292
302
|
|
|
293
303
|
## Error Handling
|
|
294
304
|
|
|
@@ -3,8 +3,8 @@ import { PLATFORMS, findPlatform, getAllPlatformSlugs } from "../data/platforms.
|
|
|
3
3
|
import { ENDPOINTS, findEndpoint, getEndpointsByPlatform } from "../data/endpoints.js";
|
|
4
4
|
import { getDoc, getAvailableTopics } from "../data/docs.js";
|
|
5
5
|
describe("Platform data integrity", () => {
|
|
6
|
-
it("has exactly
|
|
7
|
-
expect(PLATFORMS).toHaveLength(
|
|
6
|
+
it("has exactly 42 platforms", () => {
|
|
7
|
+
expect(PLATFORMS).toHaveLength(42);
|
|
8
8
|
});
|
|
9
9
|
it("every platform has a non-empty slug, name, and description", () => {
|
|
10
10
|
for (const platform of PLATFORMS) {
|
|
@@ -26,23 +26,32 @@ describe("Platform data integrity", () => {
|
|
|
26
26
|
it("findPlatform returns undefined for unknown slug", () => {
|
|
27
27
|
expect(findPlatform("nonexistent")).toBeUndefined();
|
|
28
28
|
});
|
|
29
|
-
it("getAllPlatformSlugs returns
|
|
30
|
-
expect(getAllPlatformSlugs()).toHaveLength(
|
|
29
|
+
it("getAllPlatformSlugs returns 42 slugs", () => {
|
|
30
|
+
expect(getAllPlatformSlugs()).toHaveLength(42);
|
|
31
31
|
});
|
|
32
32
|
});
|
|
33
33
|
describe("Endpoint data integrity", () => {
|
|
34
|
-
it("has exactly
|
|
35
|
-
expect(ENDPOINTS.length).toBe(
|
|
36
|
-
});
|
|
34
|
+
it("has exactly 264 endpoints", () => {
|
|
35
|
+
expect(ENDPOINTS.length).toBe(264);
|
|
36
|
+
});
|
|
37
|
+
// Composite (prism) recipes, the per-platform `profile/full` cards, the
|
|
38
|
+
// meta-search lanes (search/*), and `naver/brief` carry flat or metered
|
|
39
|
+
// prices that intentionally break the 1/5/10 tier ladder. Everything else
|
|
40
|
+
// must follow the ladder — this predicate is the single exemption seam.
|
|
41
|
+
const isFlatPriced = (e) => e.platform === "prism" ||
|
|
42
|
+
e.platform === "search" ||
|
|
43
|
+
e.resource === "profile/full" ||
|
|
44
|
+
(e.platform === "naver" && e.resource === "brief");
|
|
37
45
|
it("every endpoint has required fields", () => {
|
|
38
46
|
for (const endpoint of ENDPOINTS) {
|
|
39
47
|
expect(endpoint.platform).toBeTruthy();
|
|
40
48
|
expect(endpoint.resource).toBeTruthy();
|
|
41
49
|
expect(endpoint.method).toBe("GET");
|
|
42
50
|
expect(["standard", "advanced", "premium"]).toContain(endpoint.creditTier);
|
|
43
|
-
//
|
|
44
|
-
//
|
|
45
|
-
expect(
|
|
51
|
+
// Costs are non-negative integers; flat-priced composites override the
|
|
52
|
+
// 1/5/10 ladder (validated per-endpoint in "creditCost matches creditTier").
|
|
53
|
+
expect(Number.isInteger(endpoint.creditCost)).toBe(true);
|
|
54
|
+
expect(endpoint.creditCost).toBeGreaterThanOrEqual(0);
|
|
46
55
|
expect(endpoint.archetype).toBeTruthy();
|
|
47
56
|
expect(endpoint.summary).toBeTruthy();
|
|
48
57
|
}
|
|
@@ -50,11 +59,9 @@ describe("Endpoint data integrity", () => {
|
|
|
50
59
|
it("creditCost matches creditTier", () => {
|
|
51
60
|
const tierCosts = { standard: 1, advanced: 5, premium: 10 };
|
|
52
61
|
for (const endpoint of ENDPOINTS) {
|
|
53
|
-
//
|
|
54
|
-
if (endpoint
|
|
55
|
-
expect(endpoint.creditCost).toBe(20);
|
|
62
|
+
// Flat-priced composites / meta-search override the tier ladder.
|
|
63
|
+
if (isFlatPriced(endpoint))
|
|
56
64
|
continue;
|
|
57
|
-
}
|
|
58
65
|
expect(endpoint.creditCost).toBe(tierCosts[endpoint.creditTier]);
|
|
59
66
|
}
|
|
60
67
|
});
|
|
@@ -144,13 +151,27 @@ describe("Documentation data integrity", () => {
|
|
|
144
151
|
it("getDoc returns undefined for unknown topic", () => {
|
|
145
152
|
expect(getDoc("nonexistent")).toBeUndefined();
|
|
146
153
|
});
|
|
147
|
-
it("getAvailableTopics returns
|
|
148
|
-
expect(getAvailableTopics()).toHaveLength(
|
|
154
|
+
it("getAvailableTopics returns 8 fixed topics + one per platform", () => {
|
|
155
|
+
expect(getAvailableTopics()).toHaveLength(8 + PLATFORMS.length);
|
|
149
156
|
});
|
|
150
|
-
it("getAvailableTopics includes the idempotency and pricing topics", () => {
|
|
157
|
+
it("getAvailableTopics includes the idempotency, monitors, and pricing topics", () => {
|
|
151
158
|
expect(getAvailableTopics()).toContain("idempotency");
|
|
159
|
+
expect(getAvailableTopics()).toContain("monitors");
|
|
152
160
|
expect(getAvailableTopics()).toContain("pricing");
|
|
153
161
|
});
|
|
162
|
+
it("has a monitors documentation topic covering all 7 operations", () => {
|
|
163
|
+
const doc = getDoc("monitors");
|
|
164
|
+
expect(doc).toBeTruthy();
|
|
165
|
+
for (const op of [
|
|
166
|
+
"POST /v1/monitors",
|
|
167
|
+
"GET /v1/monitors/:id/runs",
|
|
168
|
+
"GET /v1/monitors/:id/timeseries",
|
|
169
|
+
"PATCH /v1/monitors/:id",
|
|
170
|
+
"DELETE /v1/monitors/:id",
|
|
171
|
+
]) {
|
|
172
|
+
expect(doc).toContain(op);
|
|
173
|
+
}
|
|
174
|
+
});
|
|
154
175
|
});
|
|
155
176
|
describe("Pricing documentation", () => {
|
|
156
177
|
it("has a pricing topic", () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-integrity.test.js","sourceRoot":"","sources":["../../src/__tests__/data-integrity.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"data-integrity.test.js","sourceRoot":"","sources":["../../src/__tests__/data-integrity.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import { describe, it, expect, vi, beforeEach, afterEach } from "vitest";
|
|
2
|
+
import { monitors } from "../tools/monitors.js";
|
|
3
|
+
function stubFetch(status, payload) {
|
|
4
|
+
const cap = { url: "", method: "", headers: {} };
|
|
5
|
+
vi.stubGlobal("fetch", async (url, init) => {
|
|
6
|
+
cap.url = url;
|
|
7
|
+
cap.method = (init.method ?? "GET").toString();
|
|
8
|
+
cap.body = init.body;
|
|
9
|
+
cap.headers = init.headers ?? {};
|
|
10
|
+
return new Response(status === 204 ? null : JSON.stringify(payload), { status });
|
|
11
|
+
});
|
|
12
|
+
return () => cap;
|
|
13
|
+
}
|
|
14
|
+
describe("socialcrawl_monitors tool", () => {
|
|
15
|
+
const originalEnv = process.env;
|
|
16
|
+
beforeEach(() => {
|
|
17
|
+
process.env = { ...originalEnv, SOCIALCRAWL_API_KEY: "sc_test_key" };
|
|
18
|
+
});
|
|
19
|
+
afterEach(() => {
|
|
20
|
+
process.env = originalEnv;
|
|
21
|
+
vi.restoreAllMocks();
|
|
22
|
+
});
|
|
23
|
+
it("requires an API key", async () => {
|
|
24
|
+
delete process.env.SOCIALCRAWL_API_KEY;
|
|
25
|
+
const result = await monitors({ action: "list" });
|
|
26
|
+
expect(result).toContain("No API key configured");
|
|
27
|
+
});
|
|
28
|
+
it("create POSTs to /v1/monitors with a JSON body and maps preset cadence", async () => {
|
|
29
|
+
const get = stubFetch(201, { monitor: { id: "mon_1" }, webhook_secret: "whsec_x" });
|
|
30
|
+
const result = await monitors({
|
|
31
|
+
action: "create",
|
|
32
|
+
recipe: "prism/brand-mentions",
|
|
33
|
+
params: { keyword: "acme" },
|
|
34
|
+
cadence: "daily",
|
|
35
|
+
webhook_url: "https://example.com/hook",
|
|
36
|
+
});
|
|
37
|
+
const cap = get();
|
|
38
|
+
expect(cap.method).toBe("POST");
|
|
39
|
+
expect(cap.url).toContain("/v1/monitors");
|
|
40
|
+
expect(cap.headers["Content-Type"]).toBe("application/json");
|
|
41
|
+
const body = JSON.parse(cap.body);
|
|
42
|
+
expect(body.recipe).toBe("prism/brand-mentions");
|
|
43
|
+
expect(body.cadence).toBe("daily");
|
|
44
|
+
expect(body.params).toEqual({ keyword: "acme" });
|
|
45
|
+
expect(result).toContain("mon_1");
|
|
46
|
+
});
|
|
47
|
+
it("create maps a cron string to the { cron } cadence shape", async () => {
|
|
48
|
+
const get = stubFetch(201, { monitor: { id: "mon_2" } });
|
|
49
|
+
await monitors({
|
|
50
|
+
action: "create",
|
|
51
|
+
recipe: "tiktok/profile",
|
|
52
|
+
cadence: "0 9 * * 1",
|
|
53
|
+
webhook_url: "https://example.com/hook",
|
|
54
|
+
});
|
|
55
|
+
const body = JSON.parse(get().body);
|
|
56
|
+
expect(body.cadence).toEqual({ cron: "0 9 * * 1" });
|
|
57
|
+
});
|
|
58
|
+
it("create rejects an unknown recipe locally without calling the API", async () => {
|
|
59
|
+
let called = false;
|
|
60
|
+
vi.stubGlobal("fetch", async () => {
|
|
61
|
+
called = true;
|
|
62
|
+
return new Response("{}", { status: 200 });
|
|
63
|
+
});
|
|
64
|
+
const result = await monitors({
|
|
65
|
+
action: "create",
|
|
66
|
+
recipe: "tiktok/not-a-real-endpoint",
|
|
67
|
+
cadence: "daily",
|
|
68
|
+
webhook_url: "https://example.com/hook",
|
|
69
|
+
});
|
|
70
|
+
expect(result).toContain("Unknown recipe");
|
|
71
|
+
expect(called).toBe(false);
|
|
72
|
+
});
|
|
73
|
+
it("create reports missing required fields", async () => {
|
|
74
|
+
const result = await monitors({ action: "create", recipe: "tiktok/profile" });
|
|
75
|
+
expect(result).toContain("Missing required parameter");
|
|
76
|
+
expect(result).toContain("cadence");
|
|
77
|
+
expect(result).toContain("webhook_url");
|
|
78
|
+
});
|
|
79
|
+
it("id-requiring actions error without an id", async () => {
|
|
80
|
+
for (const action of ["get", "runs", "timeseries", "pause", "resume", "delete"]) {
|
|
81
|
+
const result = await monitors({ action });
|
|
82
|
+
expect(result).toContain("requires a monitor `id`");
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
it("list GETs with status/limit query params", async () => {
|
|
86
|
+
const get = stubFetch(200, { items: [], next_cursor: null });
|
|
87
|
+
await monitors({ action: "list", status: "active", limit: 50 });
|
|
88
|
+
const cap = get();
|
|
89
|
+
expect(cap.method).toBe("GET");
|
|
90
|
+
expect(cap.url).toContain("status=active");
|
|
91
|
+
expect(cap.url).toContain("limit=50");
|
|
92
|
+
});
|
|
93
|
+
it("runs GETs the nested runs path with include=result", async () => {
|
|
94
|
+
const get = stubFetch(200, { items: [] });
|
|
95
|
+
await monitors({ action: "runs", id: "mon_1", include: "result" });
|
|
96
|
+
const cap = get();
|
|
97
|
+
expect(cap.url).toContain("/v1/monitors/mon_1/runs");
|
|
98
|
+
expect(cap.url).toContain("include=result");
|
|
99
|
+
});
|
|
100
|
+
it("timeseries GETs the timeseries path with metric projection", async () => {
|
|
101
|
+
const get = stubFetch(200, { series: [] });
|
|
102
|
+
await monitors({ action: "timeseries", id: "mon_1", metric: "negative_share,volume" });
|
|
103
|
+
const cap = get();
|
|
104
|
+
expect(cap.url).toContain("/v1/monitors/mon_1/timeseries");
|
|
105
|
+
expect(cap.url).toContain("metric=");
|
|
106
|
+
});
|
|
107
|
+
it("pause and resume PATCH the right status", async () => {
|
|
108
|
+
const getP = stubFetch(200, { id: "mon_1", status: "paused" });
|
|
109
|
+
await monitors({ action: "pause", id: "mon_1" });
|
|
110
|
+
expect(getP().method).toBe("PATCH");
|
|
111
|
+
expect(JSON.parse(getP().body).status).toBe("paused");
|
|
112
|
+
const getR = stubFetch(200, { id: "mon_1", status: "active" });
|
|
113
|
+
await monitors({ action: "resume", id: "mon_1" });
|
|
114
|
+
expect(JSON.parse(getR().body).status).toBe("active");
|
|
115
|
+
});
|
|
116
|
+
it("delete sends DELETE and handles a 204 No Content", async () => {
|
|
117
|
+
const get = stubFetch(204, null);
|
|
118
|
+
const result = await monitors({ action: "delete", id: "mon_1" });
|
|
119
|
+
expect(get().method).toBe("DELETE");
|
|
120
|
+
expect(result).toContain("204");
|
|
121
|
+
});
|
|
122
|
+
it("surfaces a 404 not-found for an unowned monitor", async () => {
|
|
123
|
+
stubFetch(404, { error: { type: "RESOURCE_NOT_FOUND", message: "Monitor not found." } });
|
|
124
|
+
const result = await monitors({ action: "get", id: "mon_missing" });
|
|
125
|
+
expect(result).toContain("not found");
|
|
126
|
+
});
|
|
127
|
+
});
|
|
128
|
+
//# sourceMappingURL=monitors.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"monitors.test.js","sourceRoot":"","sources":["../../src/__tests__/monitors.test.ts"],"names":[],"mappings":"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"}
|
package/dist/client.d.ts
CHANGED
|
@@ -11,4 +11,19 @@ interface RequestOptions {
|
|
|
11
11
|
idempotencyKey?: string;
|
|
12
12
|
}
|
|
13
13
|
export declare function makeRequest(options: RequestOptions): Promise<string>;
|
|
14
|
+
interface ApiRequestOptions {
|
|
15
|
+
method: "GET" | "POST" | "PATCH" | "DELETE";
|
|
16
|
+
/** Path under the base URL, starting with a slash (e.g. "/v1/monitors"). */
|
|
17
|
+
path: string;
|
|
18
|
+
query?: Record<string, string>;
|
|
19
|
+
/** JSON body for POST/PATCH. Serialised with a Content-Type header. */
|
|
20
|
+
body?: unknown;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* General-purpose authed request for non-registry `/v1/*` resources that the
|
|
24
|
+
* GET-only `makeRequest` can't express — currently the stateful monitors
|
|
25
|
+
* family (POST/GET/PATCH/DELETE with JSON bodies and `:id` path params).
|
|
26
|
+
* Shares the same x-api-key auth, timeout, error mapping, and truncation.
|
|
27
|
+
*/
|
|
28
|
+
export declare function apiRequest(options: ApiRequestOptions): Promise<string>;
|
|
14
29
|
export {};
|
package/dist/client.js
CHANGED
|
@@ -42,6 +42,61 @@ export async function makeRequest(options) {
|
|
|
42
42
|
clearTimeout(timeoutId);
|
|
43
43
|
}
|
|
44
44
|
}
|
|
45
|
+
/**
|
|
46
|
+
* General-purpose authed request for non-registry `/v1/*` resources that the
|
|
47
|
+
* GET-only `makeRequest` can't express — currently the stateful monitors
|
|
48
|
+
* family (POST/GET/PATCH/DELETE with JSON bodies and `:id` path params).
|
|
49
|
+
* Shares the same x-api-key auth, timeout, error mapping, and truncation.
|
|
50
|
+
*/
|
|
51
|
+
export async function apiRequest(options) {
|
|
52
|
+
const apiKey = getApiKey();
|
|
53
|
+
if (!apiKey) {
|
|
54
|
+
return "Error: No API key configured. Set SOCIALCRAWL_API_KEY in your MCP server environment. Get a free key at socialcrawl.dev (100 credits, no credit card required).";
|
|
55
|
+
}
|
|
56
|
+
let url = `${getBaseUrl()}${options.path}`;
|
|
57
|
+
if (options.query && Object.keys(options.query).length > 0) {
|
|
58
|
+
url += `?${new URLSearchParams(options.query).toString()}`;
|
|
59
|
+
}
|
|
60
|
+
const controller = new AbortController();
|
|
61
|
+
const timeoutId = setTimeout(() => controller.abort(), TIMEOUT_MS);
|
|
62
|
+
const headers = { "x-api-key": apiKey };
|
|
63
|
+
let bodyInit;
|
|
64
|
+
if (options.body !== undefined) {
|
|
65
|
+
headers["Content-Type"] = "application/json";
|
|
66
|
+
bodyInit = JSON.stringify(options.body);
|
|
67
|
+
}
|
|
68
|
+
// Reuse the registry error formatter by mapping path → a pseudo endpoint.
|
|
69
|
+
const errCtx = { platform: "monitors", resource: options.path };
|
|
70
|
+
try {
|
|
71
|
+
const response = await fetch(url, {
|
|
72
|
+
method: options.method,
|
|
73
|
+
headers,
|
|
74
|
+
body: bodyInit,
|
|
75
|
+
signal: controller.signal,
|
|
76
|
+
});
|
|
77
|
+
// 204 No Content (DELETE) has an empty body — report success explicitly.
|
|
78
|
+
if (response.status === 204) {
|
|
79
|
+
return JSON.stringify({ success: true, status: 204 });
|
|
80
|
+
}
|
|
81
|
+
const body = await response.text();
|
|
82
|
+
if (!response.ok) {
|
|
83
|
+
return formatHttpError(response.status, body, errCtx);
|
|
84
|
+
}
|
|
85
|
+
return truncateResponse(body);
|
|
86
|
+
}
|
|
87
|
+
catch (error) {
|
|
88
|
+
if (error instanceof DOMException && error.name === "AbortError") {
|
|
89
|
+
return `Error: Request timed out after ${TIMEOUT_MS / 1000} seconds.`;
|
|
90
|
+
}
|
|
91
|
+
if (error instanceof TypeError && (error.message.includes("fetch") || error.message.includes("network"))) {
|
|
92
|
+
return `Error: Could not reach SocialCrawl API at ${getBaseUrl()}. Check your network connection.`;
|
|
93
|
+
}
|
|
94
|
+
return `Error: Unexpected error — ${error instanceof Error ? error.message : String(error)}`;
|
|
95
|
+
}
|
|
96
|
+
finally {
|
|
97
|
+
clearTimeout(timeoutId);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
45
100
|
function buildUrl(options) {
|
|
46
101
|
const path = options.platform === "meta"
|
|
47
102
|
? `/v1/${options.resource}`
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/constants.d.ts
CHANGED
|
@@ -2,4 +2,4 @@ export declare const CHARACTER_LIMIT = 25000;
|
|
|
2
2
|
export declare const TIMEOUT_MS = 30000;
|
|
3
3
|
export declare const CREDIT_COSTS: Record<string, number>;
|
|
4
4
|
export declare const SERVER_NAME = "socialcrawl-mcp";
|
|
5
|
-
export declare const SERVER_VERSION = "1.
|
|
5
|
+
export declare const SERVER_VERSION = "1.5.0";
|
package/dist/constants.js
CHANGED
package/dist/data/docs.js
CHANGED
|
@@ -27,9 +27,9 @@ ${PLATFORMS.map((p) => `- ${p.slug} (${p.endpointCount} endpoint${p.endpointCoun
|
|
|
27
27
|
- Standard: 1 credit per request
|
|
28
28
|
- Advanced: 5 credits per request
|
|
29
29
|
- Premium: 10 credits per request
|
|
30
|
-
- Flat overrides: \`GET /v1/search/everywhere\`
|
|
30
|
+
- Flat / metered overrides: \`GET /v1/search/everywhere\` is a flat 20 credits; the cross-platform Prism composites (\`/v1/prism/*\`) are priced flat or metered per recipe (0–50 credits)
|
|
31
31
|
|
|
32
|
-
Most endpoints cost 1 credit (standard tier). Heavier endpoints (trending feeds, audience analytics, ad transparency, commerce/app-store data, content analysis, AI-powered utilities) cost 5 or 10. Use the \`pricing\` docs topic for the cost of every individual endpoint.
|
|
32
|
+
Most endpoints cost 1 credit (standard tier). Heavier endpoints (trending feeds, audience analytics, ad transparency, commerce/app-store data, content analysis, AI-powered utilities) cost 5 or 10, and the Prism composites cost more because they fan out across several endpoints. Use the \`pricing\` docs topic for the cost of every individual endpoint.
|
|
33
33
|
|
|
34
34
|
## Meta Endpoints
|
|
35
35
|
|
|
@@ -79,7 +79,7 @@ Every request costs credits. The MCP server pre-calculates cost from the endpoin
|
|
|
79
79
|
| advanced | 5 credits | Trending feeds, audience analytics, ad transparency, GitHub composites, Polymarket research, Amazon/Google Shopping product detail, Trustpilot reviews, Google Business reviews/Q&A, hotel details, app-store search/info/reviews/charts, content-analysis aggregates |
|
|
80
80
|
| premium | 10 credits | AI-powered utilities (transcript generation, age/gender detection, GitHub user/profile-velocity) and the app-store listings-search database (Google Play / App Store \`app-listings-search\`) |
|
|
81
81
|
|
|
82
|
-
|
|
82
|
+
Some endpoints override this ladder with a flat or metered per-endpoint price. The universal meta-search \`GET /v1/search/everywhere\` is a flat **20 credits** (it fans out across 12+ platforms in parallel), and the cross-platform **Prism** composites (\`/v1/prism/*\`, plus per-platform composites like \`{platform}/profile/full\` and \`reddit/omni-search\`) are priced flat or metered per recipe — anywhere from 0 credits (\`prism/lookup\`) to 50 (\`prism/creator-vet\`) — because each one fans out across several detail endpoints. Metered composites deduct an upfront ceiling and auto-refund down to the actual work done; the response envelope's \`credits_used\` reports the real charge.
|
|
83
83
|
|
|
84
84
|
For the exact cost of every endpoint, use the \`pricing\` docs topic — it lists all ${ENDPOINTS.length} endpoints with their per-request cost. \`socialcrawl_list_endpoints\` also shows the cost per endpoint for a single platform, and \`socialcrawl_request\` echoes the cost in its response header.
|
|
85
85
|
|
|
@@ -181,6 +181,37 @@ Idempotency rows live for **24h**. After that the key is reusable.
|
|
|
181
181
|
## Credits and cache
|
|
182
182
|
|
|
183
183
|
Replays cost **0 credits** — same as cache hits.`,
|
|
184
|
+
monitors: `# SocialCrawl API — Monitors
|
|
185
|
+
|
|
186
|
+
Monitors are the **stateful, scheduled wrapper** around any SocialCrawl recipe. A monitor re-runs a registered endpoint or a Prism composite on a cadence, delivers each result to a signed webhook, evaluates alert rules, and accumulates a per-run time-series you can read back. *"Prism answers once; monitors watch it for you."*
|
|
187
|
+
|
|
188
|
+
Monitors are **not** registry endpoints — they live at \`/v1/monitors/*\` and are managed through the \`socialcrawl_monitors\` tool, not \`socialcrawl_request\`. Auth is the same \`x-api-key\`.
|
|
189
|
+
|
|
190
|
+
## Operations (\`socialcrawl_monitors\` actions)
|
|
191
|
+
|
|
192
|
+
| Action | HTTP | What it does |
|
|
193
|
+
|--------|------|--------------|
|
|
194
|
+
| \`create\` | \`POST /v1/monitors\` | Create a monitor. Validates the recipe, enforces a plan slot cap, backfills one run, returns the monitor + \`estimated_cost_per_run\`/\`estimated_monthly_cost\` and (once) the webhook signing secret. |
|
|
195
|
+
| \`list\` | \`GET /v1/monitors\` | Owner-scoped, cursor-paginated list. Filter with \`status\` = active \| paused \| all. |
|
|
196
|
+
| \`get\` | \`GET /v1/monitors/:id\` | A single monitor (404 if not owned — never leaks existence or the secret). |
|
|
197
|
+
| \`runs\` | \`GET /v1/monitors/:id/runs\` | Reverse-chron run history, each with its \`legs[]\` envelope + \`alerts_fired\`. \`include=result\` adds the full stored result. |
|
|
198
|
+
| \`timeseries\` | \`GET /v1/monitors/:id/timeseries\` | The headline read — each stored run's stable computed keys projected into a \`{ t, metrics }\` series (reads snapshots, no live API calls). |
|
|
199
|
+
| \`pause\` / \`resume\` | \`PATCH /v1/monitors/:id\` | Pause or resume scheduling. |
|
|
200
|
+
| \`delete\` | \`DELETE /v1/monitors/:id\` | Unschedule + cascade-delete runs and the webhook. |
|
|
201
|
+
|
|
202
|
+
## Create parameters
|
|
203
|
+
|
|
204
|
+
- \`recipe\` (required) — any registered endpoint or Prism composite as \`platform/resource\` (e.g. \`prism/brand-mentions\`, \`tiktok/profile\`).
|
|
205
|
+
- \`cadence\` (required) — \`hourly\` \| \`daily\` \| \`weekly\`, or a cron expression.
|
|
206
|
+
- \`webhook_url\` (required) — HTTPS endpoint that receives each run, signed with \`x-socialcrawl-signature\` (HMAC-SHA256, timestamped).
|
|
207
|
+
- \`params\` — parameters passed to the recipe every run.
|
|
208
|
+
- \`alert_rules\` — \`[{ metric, op, value, window? }]\`. Ops: \`gt\`, \`lt\`, \`gte\`, \`lte\`, \`abs_change_gt\`, \`pct_change_gt\`, \`pct_change_lt\` (the change ops compare a run to the previous comparable run; \`window\` is \`1d\` \| \`1w\`).
|
|
209
|
+
- \`suppress_webhook_unless_alert\` — only deliver the webhook when a rule trips.
|
|
210
|
+
- \`name\`, \`output_schema\`, \`webhook_secret\` — optional.
|
|
211
|
+
|
|
212
|
+
## Billing
|
|
213
|
+
|
|
214
|
+
Managing monitors (create/list/get/runs/timeseries/pause/delete) costs **0 credits**. Each *scheduled run* bills the underlying recipe's normal cost **plus a 1-credit scheduling premium** — so a daily \`prism/reputation\` monitor costs 30 + 1 = 31 credits per run. Runs skipped for insufficient balance are never charged, and a run whose recipe fails is fully refunded. Use \`estimated_cost_per_run\` / \`estimated_monthly_cost\` (returned by \`create\`) to budget. The webhook auto-pauses after 10 consecutive delivery failures.`,
|
|
184
215
|
};
|
|
185
216
|
function buildCurl(e) {
|
|
186
217
|
const parts = [];
|
|
@@ -363,6 +394,7 @@ export const DOCS = (() => {
|
|
|
363
394
|
credits: HANDWRITTEN.credits,
|
|
364
395
|
errors: HANDWRITTEN.errors,
|
|
365
396
|
idempotency: HANDWRITTEN.idempotency,
|
|
397
|
+
monitors: HANDWRITTEN.monitors,
|
|
366
398
|
pricing: buildPricingDoc(),
|
|
367
399
|
full: buildFullDoc(),
|
|
368
400
|
};
|
|
@@ -382,6 +414,7 @@ export function getAvailableTopics() {
|
|
|
382
414
|
"credits",
|
|
383
415
|
"errors",
|
|
384
416
|
"idempotency",
|
|
417
|
+
"monitors",
|
|
385
418
|
"pricing",
|
|
386
419
|
...PLATFORMS.map((p) => p.slug),
|
|
387
420
|
];
|