@bycrawl/mcp 0.5.0 → 0.6.1
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 +33 -8
- package/build/server.js +14 -0
- package/build/server.js.map +1 -1
- package/build/tools/facebook.js +2 -2
- package/build/tools/facebook.js.map +1 -1
- package/build/tools/gmaps.js +6 -0
- package/build/tools/gmaps.js.map +1 -1
- package/build/tools/hackernews.d.ts +2 -0
- package/build/tools/hackernews.js +15 -0
- package/build/tools/hackernews.js.map +1 -0
- package/build/tools/linkedin.js +4 -0
- package/build/tools/linkedin.js.map +1 -1
- package/build/tools/luma.d.ts +2 -0
- package/build/tools/luma.js +24 -0
- package/build/tools/luma.js.map +1 -0
- package/build/tools/producthunt.d.ts +2 -0
- package/build/tools/producthunt.js +16 -0
- package/build/tools/producthunt.js.map +1 -0
- package/build/tools/ptt.d.ts +2 -0
- package/build/tools/ptt.js +19 -0
- package/build/tools/ptt.js.map +1 -0
- package/build/tools/rent591.d.ts +2 -0
- package/build/tools/rent591.js +14 -0
- package/build/tools/rent591.js.map +1 -0
- package/build/tools/trustpilot.d.ts +2 -0
- package/build/tools/trustpilot.js +19 -0
- package/build/tools/trustpilot.js.map +1 -0
- package/build/tools/web.d.ts +2 -0
- package/build/tools/web.js +6 -0
- package/build/tools/web.js.map +1 -0
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
MCP server for [ByCrawl](https://bycrawl.com) — query
|
|
1
|
+
MCP server for [ByCrawl](https://bycrawl.com) — query 18 social media & data platforms from AI agents like Claude and Cursor.
|
|
2
2
|
|
|
3
|
-
**Supported platforms:** Threads, X/Twitter, Facebook, Reddit, LinkedIn,
|
|
3
|
+
**Supported platforms:** Threads, X/Twitter, Facebook, Reddit, LinkedIn, TikTok, Instagram, YouTube, Dcard, 104 Job Bank, Google Maps, Trustpilot, PTT, 591 Rent, Hacker News, Luma, Product Hunt
|
|
4
4
|
|
|
5
5
|
## Setup
|
|
6
6
|
|
|
@@ -28,22 +28,29 @@ Add to your MCP config:
|
|
|
28
28
|
}
|
|
29
29
|
```
|
|
30
30
|
|
|
31
|
-
## Tools (
|
|
31
|
+
## Tools (87)
|
|
32
32
|
|
|
33
33
|
| Platform | Tools | Examples |
|
|
34
34
|
|----------|-------|---------|
|
|
35
35
|
| Threads | 8 | Search posts, get user profile/replies, public feed |
|
|
36
36
|
| X/Twitter | 4 | Search tweets, get user timeline |
|
|
37
|
-
| Facebook |
|
|
38
|
-
| Reddit |
|
|
37
|
+
| Facebook | 8 | Get page, search posts, marketplace browse/search/item |
|
|
38
|
+
| Reddit | 6 | Get subreddit, search posts, get user/post |
|
|
39
39
|
| LinkedIn | 7 | Get company, search jobs/users, get post |
|
|
40
|
-
| Xiaohongshu | 9 | Search notes, get comments, resolve share URL |
|
|
41
40
|
| TikTok | 7 | Get video, search, comments, subtitles, browse by category |
|
|
42
41
|
| Instagram | 5 | Search hashtags, get user/post, comments, user posts |
|
|
43
42
|
| YouTube | 5 | Get video/channel, search, comments, transcription |
|
|
44
|
-
| Dcard |
|
|
43
|
+
| Dcard | 4 | Get forum/posts, search posts, get persona |
|
|
45
44
|
| Job104 | 3 | Search jobs, get company/job details |
|
|
46
|
-
|
|
|
45
|
+
| Google Maps | 2 | Search places, get place details |
|
|
46
|
+
| Trustpilot | 5 | Get business/reviews, search businesses/categories, suggestions |
|
|
47
|
+
| PTT | 4 | Get board/posts, get post detail, search posts |
|
|
48
|
+
| 591 Rent | 2 | Get rental listings, get listing detail |
|
|
49
|
+
| Hacker News | 4 | Get item/user, get stories by type, get comments |
|
|
50
|
+
| Luma | 6 | Get event, place events, search events, categories, calendar |
|
|
51
|
+
| Product Hunt | 4 | Get leaderboard, search products, get product/reviews |
|
|
52
|
+
| Web Fetch | 1 | Fetch any URL |
|
|
53
|
+
| System | 2 | Health check, account info |
|
|
47
54
|
|
|
48
55
|
## Usage Examples
|
|
49
56
|
|
|
@@ -65,6 +72,24 @@ Claude will call `linkedin_get_company` with `company_id: "anthropic"` and retur
|
|
|
65
72
|
|
|
66
73
|
Claude will call `youtube_get_video_comments` with `video_id: "dQw4w9WgXcQ"` and return the top comments with like counts, which it can then summarize for sentiment and key themes.
|
|
67
74
|
|
|
75
|
+
### Example 4: Check Trustpilot reviews
|
|
76
|
+
|
|
77
|
+
> **Prompt:** "What's the Trustpilot rating for Stripe?"
|
|
78
|
+
|
|
79
|
+
Claude will call `trustpilot_get_business` with `domain: "stripe.com"` and return the trust score, star rating, review count, and business profile.
|
|
80
|
+
|
|
81
|
+
### Example 5: Browse PTT discussions
|
|
82
|
+
|
|
83
|
+
> **Prompt:** "What's trending on PTT Gossiping board?"
|
|
84
|
+
|
|
85
|
+
Claude will call `ptt_get_board_posts` with `boardName: "Gossiping"` and return the latest posts with titles, authors, and push counts.
|
|
86
|
+
|
|
87
|
+
### Example 6: Find events on Luma
|
|
88
|
+
|
|
89
|
+
> **Prompt:** "What tech events are happening in Taipei?"
|
|
90
|
+
|
|
91
|
+
Claude will call `luma_search_events` to find upcoming tech events in Taipei with event details, dates, and locations.
|
|
92
|
+
|
|
68
93
|
## API Key
|
|
69
94
|
|
|
70
95
|
Get your API key at [bycrawl.com](https://bycrawl.com).
|
package/build/server.js
CHANGED
|
@@ -11,6 +11,13 @@ import { registerDcardTools } from "./tools/dcard.js";
|
|
|
11
11
|
import { registerSystemTools } from "./tools/system.js";
|
|
12
12
|
import { registerJob104Tools } from "./tools/job104.js";
|
|
13
13
|
import { registerGmapsTools } from "./tools/gmaps.js";
|
|
14
|
+
import { registerWebFetchTools } from "./tools/web.js";
|
|
15
|
+
import { registerTrustpilotTools } from "./tools/trustpilot.js";
|
|
16
|
+
import { registerPttTools } from "./tools/ptt.js";
|
|
17
|
+
import { registerRent591Tools } from "./tools/rent591.js";
|
|
18
|
+
import { registerHackernewsTools } from "./tools/hackernews.js";
|
|
19
|
+
import { registerLumaTools } from "./tools/luma.js";
|
|
20
|
+
import { registerProducthuntTools } from "./tools/producthunt.js";
|
|
14
21
|
export function createServer() {
|
|
15
22
|
const server = new McpServer({
|
|
16
23
|
name: "bycrawl",
|
|
@@ -27,6 +34,13 @@ export function createServer() {
|
|
|
27
34
|
registerDcardTools(server);
|
|
28
35
|
registerJob104Tools(server);
|
|
29
36
|
registerGmapsTools(server);
|
|
37
|
+
registerWebFetchTools(server);
|
|
38
|
+
registerTrustpilotTools(server);
|
|
39
|
+
registerPttTools(server);
|
|
40
|
+
registerRent591Tools(server);
|
|
41
|
+
registerHackernewsTools(server);
|
|
42
|
+
registerLumaTools(server);
|
|
43
|
+
registerProducthuntTools(server);
|
|
30
44
|
registerSystemTools(server);
|
|
31
45
|
return server;
|
|
32
46
|
}
|
package/build/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAElE,MAAM,UAAU,YAAY;IAC1B,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,OAAO;KACjB,CAAC,CAAC;IAEH,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC7B,cAAc,CAAC,MAAM,CAAC,CAAC;IACvB,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAC9B,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAC5B,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAC9B,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAC5B,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAC/B,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC7B,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC3B,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAC5B,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC3B,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAC9B,uBAAuB,CAAC,MAAM,CAAC,CAAC;IAChC,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACzB,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC7B,uBAAuB,CAAC,MAAM,CAAC,CAAC;IAChC,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC1B,wBAAwB,CAAC,MAAM,CAAC,CAAC;IACjC,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAE5B,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/build/tools/facebook.js
CHANGED
|
@@ -19,10 +19,10 @@ export function registerFacebookTools(server) {
|
|
|
19
19
|
category: z.string().optional().describe("Category slug (e.g. 'vehicles', 'electronics')"),
|
|
20
20
|
}, { readOnlyHint: true }, async ({ location, category }) => bycrawlGet("/facebook/marketplace/listings", { location, category }));
|
|
21
21
|
server.tool("facebook_marketplace_search", "Search Facebook Marketplace listings by keyword", {
|
|
22
|
-
|
|
22
|
+
q: z.string().describe("Search keyword"),
|
|
23
23
|
location: z.string().optional().describe("Location slug (e.g. 'taipei', 'newyork')"),
|
|
24
24
|
category: z.string().optional().describe("Category filter (e.g. 'vehicles')"),
|
|
25
|
-
}, { readOnlyHint: true }, async ({
|
|
25
|
+
}, { readOnlyHint: true }, async ({ q, location, category }) => bycrawlGet("/facebook/marketplace/search", { q, location, category }));
|
|
26
26
|
server.tool("facebook_marketplace_item", "Get detailed Facebook Marketplace listing by ID", {
|
|
27
27
|
listing_id: z.string().describe("Marketplace listing ID"),
|
|
28
28
|
}, { readOnlyHint: true }, async ({ listing_id }) => bycrawlGet(`/facebook/marketplace/items/${listing_id}`));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"facebook.js","sourceRoot":"","sources":["../../src/tools/facebook.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,UAAU,qBAAqB,CAAC,MAAiB;IACrD,MAAM,CAAC,IAAI,CACT,mBAAmB,EACnB,uCAAuC,EACvC,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC,EAAE,EAC3D,EAAE,YAAY,EAAE,IAAI,EAAE,EACtB,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,mBAAmB,QAAQ,EAAE,CAAC,CAClE,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,yBAAyB,EACzB,qCAAqC,EACrC;QACE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;QACvD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;KAC3E,EACD,EAAE,YAAY,EAAE,IAAI,EAAE,EACtB,KAAK,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,mBAAmB,QAAQ,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,CAC1F,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,mBAAmB,EACnB,yEAAyE,EACzE,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,EACjD,EAAE,YAAY,EAAE,IAAI,EAAE,EACtB,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,iBAAiB,EAAE,EAAE,GAAG,EAAE,CAAC,CAC1D,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,uBAAuB,EACvB,yCAAyC,EACzC;QACE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QAC5C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;KAC/E,EACD,EAAE,YAAY,EAAE,IAAI,EAAE,EACtB,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,wBAAwB,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CACtF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,4BAA4B,EAC5B,wCAAwC,EACxC;QACE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;KAC9C,EACD,EAAE,YAAY,EAAE,IAAI,EAAE,EACtB,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,0BAA0B,EAAE,EAAE,GAAG,EAAE,CAAC,CACnE,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,6BAA6B,EAC7B,+DAA+D,EAC/D;QACE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;QACpF,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gDAAgD,CAAC;KAC3F,EACD,EAAE,YAAY,EAAE,IAAI,EAAE,EACtB,KAAK,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,gCAAgC,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CACvG,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,6BAA6B,EAC7B,iDAAiD,EACjD;QACE,
|
|
1
|
+
{"version":3,"file":"facebook.js","sourceRoot":"","sources":["../../src/tools/facebook.ts"],"names":[],"mappings":"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"}
|
package/build/tools/gmaps.js
CHANGED
|
@@ -9,5 +9,11 @@ export function registerGmapsTools(server) {
|
|
|
9
9
|
query: z.string().describe("Place name or full Google Maps URL"),
|
|
10
10
|
language: z.string().optional().describe("Language code (e.g. 'en', 'ja', 'zh-TW')"),
|
|
11
11
|
}, { readOnlyHint: true }, async ({ query, language }) => bycrawlGet("/gmaps/places", { query, language }));
|
|
12
|
+
server.tool("gmaps_get_place_reviews", "Get reviews for a Google Maps place (10 per page, paginated)", {
|
|
13
|
+
query: z.string().describe("Place name or full Google Maps URL"),
|
|
14
|
+
sort: z.string().optional().describe("Sort order: relevant, newest, highest, lowest (default relevant)"),
|
|
15
|
+
pageToken: z.string().optional().describe("Pagination token from previous response"),
|
|
16
|
+
language: z.string().optional().describe("Language code (e.g. 'en', 'ja', 'zh-TW')"),
|
|
17
|
+
}, { readOnlyHint: true }, async ({ query, sort, pageToken, language }) => bycrawlGet("/gmaps/places/reviews", { query, sort, pageToken, language }));
|
|
12
18
|
}
|
|
13
19
|
//# sourceMappingURL=gmaps.js.map
|
package/build/tools/gmaps.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gmaps.js","sourceRoot":"","sources":["../../src/tools/gmaps.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,UAAU,kBAAkB,CAAC,MAAiB;IAClD,MAAM,CAAC,IAAI,CACT,qBAAqB,EACrB,gDAAgD,EAChD;QACE,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC;QACrE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;KACrF,EACD,EAAE,YAAY,EAAE,IAAI,EAAE,EACtB,KAAK,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,sBAAsB,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,CAC/E,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,iBAAiB,EACjB,oDAAoD,EACpD;QACE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;QAChE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;KACrF,EACD,EAAE,YAAY,EAAE,IAAI,EAAE,EACtB,KAAK,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,eAAe,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAChF,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"gmaps.js","sourceRoot":"","sources":["../../src/tools/gmaps.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,UAAU,kBAAkB,CAAC,MAAiB;IAClD,MAAM,CAAC,IAAI,CACT,qBAAqB,EACrB,gDAAgD,EAChD;QACE,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC;QACrE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;KACrF,EACD,EAAE,YAAY,EAAE,IAAI,EAAE,EACtB,KAAK,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,sBAAsB,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,CAC/E,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,iBAAiB,EACjB,oDAAoD,EACpD;QACE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;QAChE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;KACrF,EACD,EAAE,YAAY,EAAE,IAAI,EAAE,EACtB,KAAK,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,eAAe,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAChF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,yBAAyB,EACzB,8DAA8D,EAC9D;QACE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;QAChE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kEAAkE,CAAC;QACxG,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;QACpF,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;KACrF,EACD,EAAE,YAAY,EAAE,IAAI,EAAE,EACtB,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,CAC7C,UAAU,CAAC,uBAAuB,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAC5E,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { bycrawlGet } from "../client.js";
|
|
3
|
+
export function registerHackernewsTools(server) {
|
|
4
|
+
server.tool("hackernews_get_item", "Get a Hacker News item (story, comment, job, poll) by its ID", { itemId: z.number().describe("Hacker News item ID") }, { readOnlyHint: true }, async ({ itemId }) => bycrawlGet(`/hackernews/items/${itemId}`));
|
|
5
|
+
server.tool("hackernews_get_user", "Get a Hacker News user profile by username", { username: z.string().describe("Hacker News username (case-sensitive)") }, { readOnlyHint: true }, async ({ username }) => bycrawlGet(`/hackernews/users/${username}`));
|
|
6
|
+
server.tool("hackernews_get_stories", "Get Hacker News stories by type (top, new, best, ask, show, job)", {
|
|
7
|
+
storyType: z.string().describe("Story type: top, new, best, ask, show, job"),
|
|
8
|
+
count: z.number().optional().describe("Number of stories to fetch (max 50, default 30)"),
|
|
9
|
+
}, { readOnlyHint: true }, async ({ storyType, count }) => bycrawlGet(`/hackernews/stories/${storyType}`, { count }));
|
|
10
|
+
server.tool("hackernews_get_item_comments", "Get comment tree for a Hacker News item", {
|
|
11
|
+
itemId: z.number().describe("Hacker News item ID"),
|
|
12
|
+
depth: z.number().optional().describe("Max comment depth (max 5, default 3)"),
|
|
13
|
+
}, { readOnlyHint: true }, async ({ itemId, depth }) => bycrawlGet(`/hackernews/items/${itemId}/comments`, { depth }));
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=hackernews.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hackernews.js","sourceRoot":"","sources":["../../src/tools/hackernews.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,UAAU,uBAAuB,CAAC,MAAiB;IACvD,MAAM,CAAC,IAAI,CACT,qBAAqB,EACrB,8DAA8D,EAC9D,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,EACtD,EAAE,YAAY,EAAE,IAAI,EAAE,EACtB,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,qBAAqB,MAAM,EAAE,CAAC,CAChE,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,qBAAqB,EACrB,4CAA4C,EAC5C,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC,EAAE,EAC1E,EAAE,YAAY,EAAE,IAAI,EAAE,EACtB,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,qBAAqB,QAAQ,EAAE,CAAC,CACpE,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,wBAAwB,EACxB,kEAAkE,EAClE;QACE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;QAC5E,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iDAAiD,CAAC;KACzF,EACD,EAAE,YAAY,EAAE,IAAI,EAAE,EACtB,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,CAC7B,UAAU,CAAC,uBAAuB,SAAS,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAC5D,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,8BAA8B,EAC9B,yCAAyC,EACzC;QACE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;QAClD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;KAC9E,EACD,EAAE,YAAY,EAAE,IAAI,EAAE,EACtB,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,CAC1B,UAAU,CAAC,qBAAqB,MAAM,WAAW,EAAE,EAAE,KAAK,EAAE,CAAC,CAChE,CAAC;AACJ,CAAC"}
|
package/build/tools/linkedin.js
CHANGED
|
@@ -7,6 +7,10 @@ export function registerLinkedinTools(server) {
|
|
|
7
7
|
count: z.number().optional().describe("Number of jobs (max 100)"),
|
|
8
8
|
offset: z.number().optional().describe("Pagination offset"),
|
|
9
9
|
}, { readOnlyHint: true }, async ({ companyId, count, offset }) => bycrawlGet(`/linkedin/companies/${companyId}/jobs`, { count, offset }));
|
|
10
|
+
server.tool("linkedin_get_company_posts", "Get recent posts from a LinkedIn company page", {
|
|
11
|
+
companyId: z.string().describe("Company ID or vanity name (e.g. 'microsoft')"),
|
|
12
|
+
count: z.number().optional().describe("Number of posts (max 50, default 20)"),
|
|
13
|
+
}, { readOnlyHint: true }, async ({ companyId, count }) => bycrawlGet(`/linkedin/companies/${companyId}/posts`, { count }));
|
|
10
14
|
server.tool("linkedin_search_jobs", "Search LinkedIn job listings by keyword", {
|
|
11
15
|
q: z.string().describe("Search keywords (e.g. 'software engineer')"),
|
|
12
16
|
location: z.string().optional().describe("Location filter (e.g. 'San Francisco')"),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"linkedin.js","sourceRoot":"","sources":["../../src/tools/linkedin.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"linkedin.js","sourceRoot":"","sources":["../../src/tools/linkedin.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { bycrawlGet } from "../client.js";
|
|
3
|
+
export function registerLumaTools(server) {
|
|
4
|
+
server.tool("luma_get_event", "Get a Luma event by its API ID (e.g. evt-HcF3lY9ocKFrEuC)", { eventId: z.string().describe("Luma event ID (e.g. evt-HcF3lY9ocKFrEuC)") }, { readOnlyHint: true }, async ({ eventId }) => bycrawlGet(`/luma/events/${eventId}`));
|
|
5
|
+
server.tool("luma_get_place_events", "Get events for a city/place by its discover place ID", {
|
|
6
|
+
placeId: z.string().describe("Discover place ID (e.g. discplace-fi7MDZq99wfKWfa)"),
|
|
7
|
+
count: z.number().optional().describe("Number of events (max 50, default 25)"),
|
|
8
|
+
cursor: z.string().optional().describe("Pagination cursor (from previous response)"),
|
|
9
|
+
}, { readOnlyHint: true }, async ({ placeId, count, cursor }) => bycrawlGet(`/luma/places/${placeId}/events`, { count, cursor }));
|
|
10
|
+
server.tool("luma_search_events", "Search events by keyword within a city/place on Luma", {
|
|
11
|
+
placeId: z.string().describe("Discover place ID (city)"),
|
|
12
|
+
q: z.string().describe("Search query"),
|
|
13
|
+
count: z.number().optional().describe("Number of results (max 50, default 25)"),
|
|
14
|
+
cursor: z.string().optional().describe("Pagination cursor (from previous response)"),
|
|
15
|
+
}, { readOnlyHint: true }, async ({ placeId, q, count, cursor }) => bycrawlGet("/luma/events/search", { place_id: placeId, q, count, cursor }));
|
|
16
|
+
server.tool("luma_get_categories", "List all Luma event categories (Tech, AI, Food & Drink, etc.)", {}, { readOnlyHint: true }, async () => bycrawlGet("/luma/categories"));
|
|
17
|
+
server.tool("luma_get_calendar_events", "Get events from a specific Luma calendar/community", {
|
|
18
|
+
calendarId: z.string().describe("Luma calendar ID"),
|
|
19
|
+
count: z.number().optional().describe("Number of events (max 50, default 25)"),
|
|
20
|
+
cursor: z.string().optional().describe("Pagination cursor (from previous response)"),
|
|
21
|
+
}, { readOnlyHint: true }, async ({ calendarId, count, cursor }) => bycrawlGet(`/luma/calendars/${calendarId}/events`, { count, cursor }));
|
|
22
|
+
server.tool("luma_get_place", "Get city/place info by its discover place ID", { placeId: z.string().describe("Discover place ID") }, { readOnlyHint: true }, async ({ placeId }) => bycrawlGet(`/luma/places/${placeId}`));
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=luma.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"luma.js","sourceRoot":"","sources":["../../src/tools/luma.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { bycrawlGet } from "../client.js";
|
|
3
|
+
export function registerProducthuntTools(server) {
|
|
4
|
+
server.tool("producthunt_get_posts", "Get Product Hunt leaderboard posts (optionally filtered by date and period)", {
|
|
5
|
+
count: z.number().optional().describe("Number of posts (max 50, default 20)"),
|
|
6
|
+
date: z.string().optional().describe("Filter to specific date (YYYY-MM-DD)"),
|
|
7
|
+
period: z.string().optional().describe("Leaderboard period: daily, weekly, monthly, yearly (default daily)"),
|
|
8
|
+
}, { readOnlyHint: true }, async ({ count, date, period }) => bycrawlGet("/producthunt/posts", { count, date, period }));
|
|
9
|
+
server.tool("producthunt_search_posts", "Search Product Hunt products by keyword", {
|
|
10
|
+
q: z.string().describe("Search query"),
|
|
11
|
+
count: z.number().optional().describe("Number of results (max 50, default 20)"),
|
|
12
|
+
}, { readOnlyHint: true }, async ({ q, count }) => bycrawlGet("/producthunt/posts/search", { q, count }));
|
|
13
|
+
server.tool("producthunt_get_post", "Get a Product Hunt product by its slug", { slug: z.string().describe("Product slug (e.g. 'lovable')") }, { readOnlyHint: true }, async ({ slug }) => bycrawlGet(`/producthunt/posts/${slug}`));
|
|
14
|
+
server.tool("producthunt_get_reviews", "Get reviews for a Product Hunt product", { slug: z.string().describe("Product slug (e.g. 'lovable')") }, { readOnlyHint: true }, async ({ slug }) => bycrawlGet(`/producthunt/posts/${slug}/reviews`));
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=producthunt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"producthunt.js","sourceRoot":"","sources":["../../src/tools/producthunt.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,UAAU,wBAAwB,CAAC,MAAiB;IACxD,MAAM,CAAC,IAAI,CACT,uBAAuB,EACvB,6EAA6E,EAC7E;QACE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;QAC7E,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;QAC5E,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oEAAoE,CAAC;KAC7G,EACD,EAAE,YAAY,EAAE,IAAI,EAAE,EACtB,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAChC,UAAU,CAAC,oBAAoB,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAC5D,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,0BAA0B,EAC1B,yCAAyC,EACzC;QACE,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;QACtC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;KAChF,EACD,EAAE,YAAY,EAAE,IAAI,EAAE,EACtB,KAAK,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,2BAA2B,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAC9E,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,sBAAsB,EACtB,wCAAwC,EACxC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC,EAAE,EAC9D,EAAE,YAAY,EAAE,IAAI,EAAE,EACtB,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,sBAAsB,IAAI,EAAE,CAAC,CAC7D,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,yBAAyB,EACzB,wCAAwC,EACxC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC,EAAE,EAC9D,EAAE,YAAY,EAAE,IAAI,EAAE,EACtB,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,sBAAsB,IAAI,UAAU,CAAC,CACrE,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { bycrawlGet } from "../client.js";
|
|
3
|
+
export function registerPttTools(server) {
|
|
4
|
+
server.tool("ptt_get_board", "Get PTT board info by name (e.g. Gossiping, Stock, Baseball)", { boardName: z.string().describe("PTT board name (e.g. Gossiping, Stock)") }, { readOnlyHint: true }, async ({ boardName }) => bycrawlGet(`/ptt/boards/${boardName}`));
|
|
5
|
+
server.tool("ptt_get_board_posts", "Get posts from a PTT board", {
|
|
6
|
+
boardName: z.string().describe("PTT board name (e.g. Gossiping)"),
|
|
7
|
+
page: z.number().optional().describe("Page number (from PTT index). Omit for latest."),
|
|
8
|
+
count: z.number().optional().describe("Number of posts (max 40, default 20)"),
|
|
9
|
+
}, { readOnlyHint: true }, async ({ boardName, page, count }) => bycrawlGet(`/ptt/boards/${boardName}/posts`, { page, count }));
|
|
10
|
+
server.tool("ptt_get_post", "Get a PTT post by URL with full content and pushes (comments)", {
|
|
11
|
+
url: z.string().describe("Full PTT post URL or path (e.g. /bbs/Gossiping/M.1773638913.A.077.html)"),
|
|
12
|
+
}, { readOnlyHint: true }, async ({ url }) => bycrawlGet("/ptt/posts", { url }));
|
|
13
|
+
server.tool("ptt_search_posts", "Search posts in a PTT board", {
|
|
14
|
+
boardName: z.string().describe("PTT board name (e.g. Gossiping)"),
|
|
15
|
+
q: z.string().describe("Search query"),
|
|
16
|
+
count: z.number().optional().describe("Number of results (max 40, default 20)"),
|
|
17
|
+
}, { readOnlyHint: true }, async ({ boardName, q, count }) => bycrawlGet(`/ptt/boards/${boardName}/search`, { q, count }));
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=ptt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ptt.js","sourceRoot":"","sources":["../../src/tools/ptt.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,UAAU,gBAAgB,CAAC,MAAiB;IAChD,MAAM,CAAC,IAAI,CACT,eAAe,EACf,8DAA8D,EAC9D,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC,EAAE,EAC5E,EAAE,YAAY,EAAE,IAAI,EAAE,EACtB,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,eAAe,SAAS,EAAE,CAAC,CAChE,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,qBAAqB,EACrB,4BAA4B,EAC5B;QACE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;QACjE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gDAAgD,CAAC;QACtF,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;KAC9E,EACD,EAAE,YAAY,EAAE,IAAI,EAAE,EACtB,KAAK,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,CACnC,UAAU,CAAC,eAAe,SAAS,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAChE,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,cAAc,EACd,+DAA+D,EAC/D;QACE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yEAAyE,CAAC;KACpG,EACD,EAAE,YAAY,EAAE,IAAI,EAAE,EACtB,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,YAAY,EAAE,EAAE,GAAG,EAAE,CAAC,CACrD,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,kBAAkB,EAClB,6BAA6B,EAC7B;QACE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;QACjE,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;QACtC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;KAChF,EACD,EAAE,YAAY,EAAE,IAAI,EAAE,EACtB,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAChC,UAAU,CAAC,eAAe,SAAS,SAAS,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAC9D,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { bycrawlGet } from "../client.js";
|
|
3
|
+
export function registerRent591Tools(server) {
|
|
4
|
+
server.tool("rent591_get_listings", "Get rental listings from 591.com.tw (Taiwan's largest rental platform)", {
|
|
5
|
+
region: z.number().optional().describe("Region ID (1=台北市, 3=新北市, 6=桃園市, 5=新竹市, 8=台中市, 15=台南市, 17=高雄市). Default 1."),
|
|
6
|
+
first_row: z.number().optional().describe("Pagination offset (0, 30, 60, ...)"),
|
|
7
|
+
kind: z.number().optional().describe("Property type (1=整層住家, 2=獨立套房, 3=分租套房, 4=雅房, 8=車位)"),
|
|
8
|
+
section: z.number().optional().describe("Section/district ID within the region"),
|
|
9
|
+
price: z.string().optional().describe("Price range, e.g. '5000_10000$' or '10000_20000$'"),
|
|
10
|
+
count: z.number().optional().describe("Number of listings (max 30, default 30)"),
|
|
11
|
+
}, { readOnlyHint: true }, async ({ region, first_row, kind, section, price, count }) => bycrawlGet("/rent591/listings", { region, first_row, kind, section, price, count }));
|
|
12
|
+
server.tool("rent591_get_listing", "Get a rental listing detail by ID from 591.com.tw", { listingId: z.number().describe("591 listing ID") }, { readOnlyHint: true }, async ({ listingId }) => bycrawlGet(`/rent591/listings/${listingId}`));
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=rent591.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rent591.js","sourceRoot":"","sources":["../../src/tools/rent591.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,UAAU,oBAAoB,CAAC,MAAiB;IACpD,MAAM,CAAC,IAAI,CACT,sBAAsB,EACtB,wEAAwE,EACxE;QACE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2EAA2E,CAAC;QACnH,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;QAC/E,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oDAAoD,CAAC;QAC1F,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;QAChF,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mDAAmD,CAAC;QAC1F,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;KACjF,EACD,EAAE,YAAY,EAAE,IAAI,EAAE,EACtB,KAAK,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,CAC3D,UAAU,CAAC,mBAAmB,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CACtF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,qBAAqB,EACrB,mDAAmD,EACnD,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,EACpD,EAAE,YAAY,EAAE,IAAI,EAAE,EACtB,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,qBAAqB,SAAS,EAAE,CAAC,CACtE,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { bycrawlGet } from "../client.js";
|
|
3
|
+
export function registerTrustpilotTools(server) {
|
|
4
|
+
server.tool("trustpilot_get_business", "Get a Trustpilot business profile by domain (e.g. 'www.amazon.com', 'stripe.com')", { domain: z.string().describe("Business domain (e.g. stripe.com, www.amazon.com)") }, { readOnlyHint: true }, async ({ domain }) => bycrawlGet(`/trustpilot/businesses/${domain}`));
|
|
5
|
+
server.tool("trustpilot_get_business_reviews", "Get reviews for a business on Trustpilot", {
|
|
6
|
+
domain: z.string().describe("Business domain (e.g. stripe.com)"),
|
|
7
|
+
page: z.number().optional().describe("Page number (default 1)"),
|
|
8
|
+
sort: z.string().optional().describe("Sort order: recency, relevance (default recency)"),
|
|
9
|
+
stars: z.number().optional().describe("Filter by star rating (1-5)"),
|
|
10
|
+
languages: z.string().optional().describe("Language filter ISO code (e.g. 'en', 'all')"),
|
|
11
|
+
}, { readOnlyHint: true }, async ({ domain, page, sort, stars, languages }) => bycrawlGet(`/trustpilot/businesses/${domain}/reviews`, { page, sort, stars, languages }));
|
|
12
|
+
server.tool("trustpilot_search_businesses", "Search for businesses on Trustpilot", {
|
|
13
|
+
q: z.string().describe("Search query"),
|
|
14
|
+
page: z.number().optional().describe("Page number (default 1)"),
|
|
15
|
+
}, { readOnlyHint: true }, async ({ q, page }) => bycrawlGet("/trustpilot/businesses/search", { q, page }));
|
|
16
|
+
server.tool("trustpilot_search_categories", "Search Trustpilot business categories", { q: z.string().describe("Search query for categories") }, { readOnlyHint: true }, async ({ q }) => bycrawlGet("/trustpilot/categories/search", { q }));
|
|
17
|
+
server.tool("trustpilot_get_suggestions", "Get business name autocomplete suggestions on Trustpilot", { q: z.string().describe("Search query for autocomplete") }, { readOnlyHint: true }, async ({ q }) => bycrawlGet("/trustpilot/suggestions", { q }));
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=trustpilot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trustpilot.js","sourceRoot":"","sources":["../../src/tools/trustpilot.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,UAAU,uBAAuB,CAAC,MAAiB;IACvD,MAAM,CAAC,IAAI,CACT,yBAAyB,EACzB,mFAAmF,EACnF,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mDAAmD,CAAC,EAAE,EACpF,EAAE,YAAY,EAAE,IAAI,EAAE,EACtB,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,0BAA0B,MAAM,EAAE,CAAC,CACrE,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,iCAAiC,EACjC,0CAA0C,EAC1C;QACE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;QAChE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;QAC/D,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kDAAkD,CAAC;QACxF,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;QACpE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC;KACzF,EACD,EAAE,YAAY,EAAE,IAAI,EAAE,EACtB,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,CACjD,UAAU,CAAC,0BAA0B,MAAM,UAAU,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAC3F,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,8BAA8B,EAC9B,qCAAqC,EACrC;QACE,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;QACtC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;KAChE,EACD,EAAE,YAAY,EAAE,IAAI,EAAE,EACtB,KAAK,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,+BAA+B,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAChF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,8BAA8B,EAC9B,uCAAuC,EACvC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC,EAAE,EACzD,EAAE,YAAY,EAAE,IAAI,EAAE,EACtB,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,+BAA+B,EAAE,EAAE,CAAC,EAAE,CAAC,CACpE,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,4BAA4B,EAC5B,0DAA0D,EAC1D,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC,EAAE,EAC3D,EAAE,YAAY,EAAE,IAAI,EAAE,EACtB,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,yBAAyB,EAAE,EAAE,CAAC,EAAE,CAAC,CAC9D,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { bycrawlGet } from "../client.js";
|
|
3
|
+
export function registerWebFetchTools(server) {
|
|
4
|
+
server.tool("web_fetch", "Fetch a web page and return its content", { url: z.string().describe("URL to fetch") }, { readOnlyHint: true }, async ({ url }) => bycrawlGet("/web/fetch", { url }));
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=web.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"web.js","sourceRoot":"","sources":["../../src/tools/web.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,UAAU,qBAAqB,CAAC,MAAiB;IACrD,MAAM,CAAC,IAAI,CACT,WAAW,EACX,yCAAyC,EACzC,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,EAC5C,EAAE,YAAY,EAAE,IAAI,EAAE,EACtB,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,YAAY,EAAE,EAAE,GAAG,EAAE,CAAC,CACrD,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bycrawl/mcp",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "MCP server for ByCrawl — query
|
|
3
|
+
"version": "0.6.1",
|
|
4
|
+
"description": "MCP server for ByCrawl — query 15+ social media platforms (Threads, X, Facebook, Reddit, LinkedIn, TikTok, Instagram, YouTube) from AI agents",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
7
7
|
"bycrawl-mcp": "./build/index.js"
|