@scavio/mcp-server 0.11.0 → 0.13.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 +390 -4
- package/dist/index.js +26 -7
- package/dist/index.js.map +1 -1
- package/dist/lib/env.d.ts +1 -0
- package/dist/lib/env.js +4 -0
- package/dist/lib/env.js.map +1 -1
- package/dist/lib/tool-error.d.ts +22 -0
- package/dist/lib/tool-error.js +28 -0
- package/dist/lib/tool-error.js.map +1 -0
- package/dist/tools/airbnb.d.ts +3 -0
- package/dist/tools/airbnb.js +121 -0
- package/dist/tools/airbnb.js.map +1 -0
- package/dist/tools/amazon.js +13 -13
- package/dist/tools/amazon.js.map +1 -1
- package/dist/tools/appstore.d.ts +3 -0
- package/dist/tools/appstore.js +59 -0
- package/dist/tools/appstore.js.map +1 -0
- package/dist/tools/booking.d.ts +3 -0
- package/dist/tools/booking.js +116 -0
- package/dist/tools/booking.js.map +1 -0
- package/dist/tools/capterra.d.ts +3 -0
- package/dist/tools/capterra.js +53 -0
- package/dist/tools/capterra.js.map +1 -0
- package/dist/tools/companieshouse.d.ts +3 -0
- package/dist/tools/companieshouse.js +56 -0
- package/dist/tools/companieshouse.js.map +1 -0
- package/dist/tools/ebay.d.ts +3 -0
- package/dist/tools/ebay.js +79 -0
- package/dist/tools/ebay.js.map +1 -0
- package/dist/tools/extract.d.ts +3 -0
- package/dist/tools/extract.js +21 -0
- package/dist/tools/extract.js.map +1 -0
- package/dist/tools/g2.d.ts +3 -0
- package/dist/tools/g2.js +69 -0
- package/dist/tools/g2.js.map +1 -0
- package/dist/tools/glassdoor.d.ts +3 -0
- package/dist/tools/glassdoor.js +72 -0
- package/dist/tools/glassdoor.js.map +1 -0
- package/dist/tools/google.js +1 -12
- package/dist/tools/google.js.map +1 -1
- package/dist/tools/googleads.d.ts +3 -0
- package/dist/tools/googleads.js +61 -0
- package/dist/tools/googleads.js.map +1 -0
- package/dist/tools/googleplay.d.ts +3 -0
- package/dist/tools/googleplay.js +57 -0
- package/dist/tools/googleplay.js.map +1 -0
- package/dist/tools/homedepot.d.ts +3 -0
- package/dist/tools/homedepot.js +71 -0
- package/dist/tools/homedepot.js.map +1 -0
- package/dist/tools/indeed.d.ts +3 -0
- package/dist/tools/indeed.js +98 -0
- package/dist/tools/indeed.js.map +1 -0
- package/dist/tools/index.d.ts +42 -1
- package/dist/tools/index.js +204 -15
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/instagram.js +19 -30
- package/dist/tools/instagram.js.map +1 -1
- package/dist/tools/kuaishou.d.ts +3 -0
- package/dist/tools/kuaishou.js +207 -0
- package/dist/tools/kuaishou.js.map +1 -0
- package/dist/tools/linkedin.js +1 -12
- package/dist/tools/linkedin.js.map +1 -1
- package/dist/tools/metaads.d.ts +3 -0
- package/dist/tools/metaads.js +63 -0
- package/dist/tools/metaads.js.map +1 -0
- package/dist/tools/reddit.js +9 -22
- package/dist/tools/reddit.js.map +1 -1
- package/dist/tools/redfin.d.ts +3 -0
- package/dist/tools/redfin.js +100 -0
- package/dist/tools/redfin.js.map +1 -0
- package/dist/tools/sec.d.ts +3 -0
- package/dist/tools/sec.js +104 -0
- package/dist/tools/sec.js.map +1 -0
- package/dist/tools/target.d.ts +3 -0
- package/dist/tools/target.js +105 -0
- package/dist/tools/target.js.map +1 -0
- package/dist/tools/threads.d.ts +3 -0
- package/dist/tools/threads.js +93 -0
- package/dist/tools/threads.js.map +1 -0
- package/dist/tools/tiktok-shop.js +3 -11
- package/dist/tools/tiktok-shop.js.map +1 -1
- package/dist/tools/tiktok.js +12 -23
- package/dist/tools/tiktok.js.map +1 -1
- package/dist/tools/tripadvisor.d.ts +3 -0
- package/dist/tools/tripadvisor.js +103 -0
- package/dist/tools/tripadvisor.js.map +1 -0
- package/dist/tools/usage.js +2 -10
- package/dist/tools/usage.js.map +1 -1
- package/dist/tools/walmart.js +108 -41
- package/dist/tools/walmart.js.map +1 -1
- package/dist/tools/x.js +5 -16
- package/dist/tools/x.js.map +1 -1
- package/dist/tools/yelp.d.ts +3 -0
- package/dist/tools/yelp.js +65 -0
- package/dist/tools/yelp.js.map +1 -0
- package/dist/tools/youtube.js +19 -30
- package/dist/tools/youtube.js.map +1 -1
- package/dist/tools/zillow.d.ts +3 -0
- package/dist/tools/zillow.js +123 -0
- package/dist/tools/zillow.js.map +1 -0
- package/package.json +12 -2
package/dist/tools/x.js
CHANGED
|
@@ -1,16 +1,5 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import {
|
|
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
|
-
}
|
|
2
|
+
import { handleApiError } from "../lib/tool-error.js";
|
|
14
3
|
export function registerXTools(server, getClient) {
|
|
15
4
|
server.tool("search_x", `Search X for tweets and people as JSON. Each result includes the tweet ID, author handle, text, language, timestamp, and engagement counts (favorites, retweets, replies, quotes, bookmarks, views). Use data.next_cursor as the next cursor while has_more is true. Costs 1 credit. Use when the user asks to find tweets or accounts about a topic.`, {
|
|
16
5
|
search: z.string().min(1).max(500)
|
|
@@ -82,7 +71,7 @@ export function registerXTools(server, getClient) {
|
|
|
82
71
|
return handleApiError(err);
|
|
83
72
|
}
|
|
84
73
|
});
|
|
85
|
-
server.tool("get_x_user_tweets", `List an X user's tweets as JSON,
|
|
74
|
+
server.tool("get_x_user_tweets", `List an X user's tweets as JSON in data.timeline, plus data.pinned (a pinned tweet or null) and data.user (the author's profile). Each tweet includes the tweet ID, text, timestamp, engagement counts, and conversation ID. Accepts a handle (without @). Use data.next_cursor as the next cursor; this endpoint returns no has_more, so stop when next_cursor is absent or the timeline comes back empty. Costs 1 credit.`, {
|
|
86
75
|
screen_name: z.string().min(1)
|
|
87
76
|
.describe("An X handle without the @, e.g. 'elonmusk'."),
|
|
88
77
|
cursor: z.string().optional()
|
|
@@ -96,7 +85,7 @@ export function registerXTools(server, getClient) {
|
|
|
96
85
|
return handleApiError(err);
|
|
97
86
|
}
|
|
98
87
|
});
|
|
99
|
-
server.tool("get_x_user_replies", `List an X user's tweets and replies as JSON. Each entry includes the tweet ID, text, timestamp, and engagement counts. Accepts a handle (without @). Use data.next_cursor as the next cursor
|
|
88
|
+
server.tool("get_x_user_replies", `List an X user's tweets and replies as JSON in data.timeline, plus data.user (the author's profile). Each entry includes the tweet ID, text, timestamp, and engagement counts. Accepts a handle (without @). Use data.next_cursor as the next cursor; this endpoint returns no has_more, so stop when next_cursor is absent or the timeline comes back empty. Costs 1 credit.`, {
|
|
100
89
|
screen_name: z.string().min(1)
|
|
101
90
|
.describe("An X handle without the @, e.g. 'elonmusk'."),
|
|
102
91
|
cursor: z.string().optional()
|
|
@@ -110,7 +99,7 @@ export function registerXTools(server, getClient) {
|
|
|
110
99
|
return handleApiError(err);
|
|
111
100
|
}
|
|
112
101
|
});
|
|
113
|
-
server.tool("get_x_user_media", `List an X user's media tweets (posts with photos or videos) as JSON. Each entry includes the tweet ID, text, timestamp, and engagement counts. Accepts a handle (without @). Use data.next_cursor as the next cursor
|
|
102
|
+
server.tool("get_x_user_media", `List an X user's media tweets (posts with photos or videos) as JSON in data.timeline, plus data.user (the author's profile). Each entry includes the tweet ID, text, timestamp, and engagement counts. Accepts a handle (without @). Use data.next_cursor as the next cursor; this endpoint returns no has_more, so stop when next_cursor is absent or the timeline comes back empty. Costs 1 credit.`, {
|
|
114
103
|
screen_name: z.string().min(1)
|
|
115
104
|
.describe("An X handle without the @, e.g. 'elonmusk'."),
|
|
116
105
|
cursor: z.string().optional()
|
|
@@ -138,7 +127,7 @@ export function registerXTools(server, getClient) {
|
|
|
138
127
|
return handleApiError(err);
|
|
139
128
|
}
|
|
140
129
|
});
|
|
141
|
-
server.tool("get_x_user_followings", `List the accounts an X user follows as JSON. Each account includes the user ID, handle, name, description, follower count, verified flag, and location. Accepts a handle (without @). Use data.next_cursor as the next cursor while has_more is true. Costs 1 credit.`, {
|
|
130
|
+
server.tool("get_x_user_followings", `List the accounts an X user follows as JSON, under data.following (singular, unlike the tool name). Each account includes the user ID, handle, name, description, follower count, verified flag, and location. Accepts a handle (without @). Use data.next_cursor as the next cursor while has_more is true. Costs 1 credit.`, {
|
|
142
131
|
screen_name: z.string().min(1)
|
|
143
132
|
.describe("An X handle without the @, e.g. 'elonmusk'."),
|
|
144
133
|
cursor: z.string().optional()
|
package/dist/tools/x.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"x.js","sourceRoot":"","sources":["../../src/tools/x.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"x.js","sourceRoot":"","sources":["../../src/tools/x.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { handleApiError } from "../lib/tool-error.js";
|
|
3
|
+
const businessIdField = z.string().min(1).max(500).optional()
|
|
4
|
+
.describe("A Yelp business alias ('desnudo-coffee-austin-2'), its opaque encid ('p88l_DLOIB-yL3Ka8GbGDw'), or any yelp.com/biz URL carrying one. search_yelp returns both id forms on every row. Either this or url is required.");
|
|
5
|
+
export function registerYelpTools(server, getClient) {
|
|
6
|
+
server.tool("search_yelp", `Search Yelp for local businesses and return them in Yelp's own ranked order as JSON. Each row carries business_id AND alias, rating, review count, price band, categories, address, phone/website rails, hours, photos and a review snippet; count is the size of the 10-row page and total_results is Yelp's headline count. Yelp fixes the page size at 10 - use page to go further. location is effectively REQUIRED: Yelp geolocates a location-less search off the proxy exit, so the same request answers about a different metro run to run. Pass term AND location, or a full yelp.com/search URL. sort is a closed set because Yelp silently IGNORES an unrecognised value and serves default ranking under a billed 200. Costs 2 credits per page.`, {
|
|
7
|
+
term: z.string().min(1).max(200).optional()
|
|
8
|
+
.describe("What to look for: a category ('plumbers'), a dish, or a business name. Required together with location unless url is given."),
|
|
9
|
+
location: z.string().min(1).max(200).optional()
|
|
10
|
+
.describe("Where to look: a city and region ('Austin, TX'), a full address, or a postcode. Effectively required - without it Yelp answers about whatever metro the proxy exits from. Required together with term unless url is given."),
|
|
11
|
+
page: z.number().int().min(1).optional()
|
|
12
|
+
.describe("Results page, 1-based. Yelp fixes the page size at 10. Defaults to 1."),
|
|
13
|
+
sort: z.enum(["recommended", "rating", "review_count"]).optional()
|
|
14
|
+
.describe("Result ordering. Closed set - an unrecognised value is silently ignored by Yelp and you pay for default ranking. Defaults to 'recommended' (Yelp's own ranking)."),
|
|
15
|
+
price: z.array(z.number().int().min(1).max(4)).min(1).max(4).optional()
|
|
16
|
+
.describe("Price bands to include, 1 ($) to 4 ($$$$). Combine freely: [1, 2] means $ or $$."),
|
|
17
|
+
open_now: z.boolean().optional()
|
|
18
|
+
.describe("Only businesses open at the moment of the request."),
|
|
19
|
+
attributes: z.array(z.string().min(1).max(100)).max(20).optional()
|
|
20
|
+
.describe("Raw Yelp filter aliases sent through as 'attrs', e.g. ['RestaurantsDelivery', 'GoodForKids', 'WheelchairAccessible']. PASSTHROUGH, not an enum - Yelp's vocabulary runs to ~117 values per vertical, and an alias Yelp does not know is ignored upstream so results come back unfiltered."),
|
|
21
|
+
url: z.string().min(1).max(1000).optional()
|
|
22
|
+
.describe("A full yelp.com/search URL as an alternative to term + location, e.g. 'https://www.yelp.com/search?find_desc=coffee&find_loc=Austin%2C+TX'. Query, offset and sort are read out of it."),
|
|
23
|
+
}, async (params) => {
|
|
24
|
+
try {
|
|
25
|
+
const data = await getClient().post("/api/v1/yelp/search", params);
|
|
26
|
+
return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
|
|
27
|
+
}
|
|
28
|
+
catch (err) {
|
|
29
|
+
return handleApiError(err);
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
server.tool("get_yelp_business", `Get one Yelp business in full as JSON: rating and per-star histogram, review count, price band, categories, address and coordinates, phone, website and menu links, hours and holidays, amenities, photos and videos, popular items, health inspections, Q&A, licences and claim status - PLUS the first page of reviews at no extra cost, so do NOT follow this with get_yelp_reviews page 1. Yelp's recommendation software hides some reviews entirely; those are never returned and are counted in not_recommended_review_count. popular_items rows can arrive as stub shells with every field null but identifier - those rows are dropped and popular_items_omitted flags it. Requires business_id or url. No pagination. Costs 2 credits.`, {
|
|
33
|
+
business_id: businessIdField,
|
|
34
|
+
url: z.string().min(1).max(1000).optional()
|
|
35
|
+
.describe("A full yelp.com/biz URL as an alternative to business_id, e.g. 'https://www.yelp.com/biz/desnudo-coffee-austin-2'. Either this or business_id is required."),
|
|
36
|
+
}, async (params) => {
|
|
37
|
+
try {
|
|
38
|
+
const data = await getClient().post("/api/v1/yelp/business", params);
|
|
39
|
+
return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
|
|
40
|
+
}
|
|
41
|
+
catch (err) {
|
|
42
|
+
return handleApiError(err);
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
server.tool("get_yelp_reviews", `Get a page of Yelp reviews for one business as JSON: rating, full text, language, author profile and expertise counts, attached photos, reaction counts and owner response. PAGE 1 IS REDUNDANT - it re-fetches the same document get_yelp_business already returned and costs another 2 credits, so start at page 2 whenever you have already called get_yelp_business. Yelp fixes the page size at 10, and a page past the last review is a 404, not an empty result. The rating filter changes filtered_review_count, not review_count. sort is a closed set because Yelp silently IGNORES an unrecognised value and serves default ranking under a billed 200. Reviews Yelp's recommendation software hides are never returned here. Requires business_id or url. Costs 2 credits per page.`, {
|
|
46
|
+
business_id: businessIdField,
|
|
47
|
+
url: z.string().min(1).max(1000).optional()
|
|
48
|
+
.describe("A full yelp.com/biz URL as an alternative to business_id. Either this or business_id is required."),
|
|
49
|
+
page: z.number().int().min(1).optional()
|
|
50
|
+
.describe("Reviews page, 1-based, 10 per page. START AT 2 if you already called get_yelp_business - page 1 returns the same reviews it already gave you and costs another 2 credits. A page past the last review is a 404. Defaults to 1."),
|
|
51
|
+
sort: z.enum(["relevance", "newest", "oldest", "rating_high", "rating_low", "elites"]).optional()
|
|
52
|
+
.describe("Review ordering. Closed set - an unrecognised value is silently ignored by Yelp and you pay for default ranking. Defaults to 'relevance'."),
|
|
53
|
+
rating: z.number().int().min(1).max(5).optional()
|
|
54
|
+
.describe("Only reviews at this star rating, 1-5. Changes filtered_review_count on the response, not review_count."),
|
|
55
|
+
}, async (params) => {
|
|
56
|
+
try {
|
|
57
|
+
const data = await getClient().post("/api/v1/yelp/reviews", params);
|
|
58
|
+
return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
|
|
59
|
+
}
|
|
60
|
+
catch (err) {
|
|
61
|
+
return handleApiError(err);
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=yelp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"yelp.js","sourceRoot":"","sources":["../../src/tools/yelp.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/youtube.js
CHANGED
|
@@ -1,24 +1,13 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import {
|
|
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
|
-
}
|
|
2
|
+
import { handleApiError } from "../lib/tool-error.js";
|
|
14
3
|
export function registerYoutubeTools(server, getClient) {
|
|
15
4
|
server.tool("search_youtube", `Search YouTube and return video results as JSON. Each result includes video ID, title, channel, duration, view count, and upload date; the response also groups shorts, channels, and playlists. Use data.next_cursor as the next cursor while has_more is true. Costs 2 credits. Use when the user asks to find YouTube videos on a topic.`, {
|
|
16
5
|
search: z.string().min(1).max(500)
|
|
17
6
|
.describe("YouTube search query."),
|
|
18
7
|
sort_by: z.enum(["relevance", "date", "view_count", "rating"]).default("relevance")
|
|
19
8
|
.describe("Sort order. Use 'date' for most recent, 'view_count' for most watched."),
|
|
20
|
-
type: z.enum(["video", "channel", "playlist", "movie"]).
|
|
21
|
-
.describe("
|
|
9
|
+
type: z.enum(["video", "channel", "playlist", "movie"]).optional()
|
|
10
|
+
.describe("Restrict results to one type. Omit for the mixed response (videos plus the shorts, channels and playlists groups); setting it to 'video' suppresses those groups."),
|
|
22
11
|
upload_date: z.enum(["last_hour", "today", "this_week", "this_month", "this_year"]).optional()
|
|
23
12
|
.describe("Filter by upload date. Omit for all time."),
|
|
24
13
|
duration: z.enum(["short", "medium", "long"]).optional()
|
|
@@ -70,7 +59,7 @@ export function registerYoutubeTools(server, getClient) {
|
|
|
70
59
|
return handleApiError(err);
|
|
71
60
|
}
|
|
72
61
|
});
|
|
73
|
-
server.tool("youtube_search_suggestions", `Get YouTube search autocomplete suggestions for a partial query as JSON. Returns a list of suggested search strings. Use to expand a seed keyword or surface what people search for.`, {
|
|
62
|
+
server.tool("youtube_search_suggestions", `Get YouTube search autocomplete suggestions for a partial query as JSON. Returns a list of suggested search strings in data.suggestions. Use to expand a seed keyword or surface what people search for. Costs 1 credit.`, {
|
|
74
63
|
search: z.string().min(1).max(500)
|
|
75
64
|
.describe("Partial or seed search query to autocomplete."),
|
|
76
65
|
language: z.string().default("en")
|
|
@@ -86,7 +75,7 @@ export function registerYoutubeTools(server, getClient) {
|
|
|
86
75
|
return handleApiError(err);
|
|
87
76
|
}
|
|
88
77
|
});
|
|
89
|
-
server.tool("get_youtube_video", `Get full details for a YouTube video as JSON. Returns title, author, channel, publish date, description, length in seconds, view count, keywords, thumbnail, playability status, chapters, and available captions. Accepts a video ID or a watch URL. Use when the user has a specific video and wants details about it.`, {
|
|
78
|
+
server.tool("get_youtube_video", `Get full details for a YouTube video as JSON. Returns title, author, channel, publish date, description, length in seconds, view count, keywords, thumbnail, playability status, chapters, and available captions. Accepts a video ID or a watch URL. Use when the user has a specific video and wants details about it. Costs 1 credit.`, {
|
|
90
79
|
video_id: z.string()
|
|
91
80
|
.describe("YouTube video ID, e.g. 'dQw4w9WgXcQ', or a full watch URL."),
|
|
92
81
|
}, async (params) => {
|
|
@@ -98,7 +87,7 @@ export function registerYoutubeTools(server, getClient) {
|
|
|
98
87
|
return handleApiError(err);
|
|
99
88
|
}
|
|
100
89
|
});
|
|
101
|
-
server.tool("get_youtube_metadata", `Deprecated alias of get_youtube_video, kept for backward compatibility. Get details for a YouTube video by its video ID or watch URL. Prefer get_youtube_video for new integrations.`, {
|
|
90
|
+
server.tool("get_youtube_metadata", `Deprecated alias of get_youtube_video, kept for backward compatibility. Get details for a YouTube video by its video ID or watch URL. Prefer get_youtube_video for new integrations. Costs 1 credit.`, {
|
|
102
91
|
video_id: z.string()
|
|
103
92
|
.describe("YouTube video ID, e.g. 'dQw4w9WgXcQ', or a full watch URL."),
|
|
104
93
|
}, async (params) => {
|
|
@@ -110,7 +99,7 @@ export function registerYoutubeTools(server, getClient) {
|
|
|
110
99
|
return handleApiError(err);
|
|
111
100
|
}
|
|
112
101
|
});
|
|
113
|
-
server.tool("get_youtube_comments", `Get comments on a YouTube video as JSON. Each comment includes its ID, text, like count, reply count, publish time, a reply_cursor for fetching its replies, and author details. Accepts a video ID. Use data.next_cursor as the next cursor while has_more is true.`, {
|
|
102
|
+
server.tool("get_youtube_comments", `Get comments on a YouTube video as JSON. Each comment includes its ID, text, like count, reply count, publish time, a reply_cursor for fetching its replies, and author details. Accepts a video ID. Use data.next_cursor as the next cursor while has_more is true. Costs 1 credit.`, {
|
|
114
103
|
video_id: z.string()
|
|
115
104
|
.describe("YouTube video ID, e.g. 'dQw4w9WgXcQ'."),
|
|
116
105
|
cursor: z.string().optional()
|
|
@@ -124,7 +113,7 @@ export function registerYoutubeTools(server, getClient) {
|
|
|
124
113
|
return handleApiError(err);
|
|
125
114
|
}
|
|
126
115
|
});
|
|
127
|
-
server.tool("get_youtube_comment_replies", `Get replies to a specific YouTube comment as JSON. Requires the video ID and the reply_cursor from a comment in the get_youtube_comments response. Use data.next_cursor as the next cursor while has_more is true.`, {
|
|
116
|
+
server.tool("get_youtube_comment_replies", `Get replies to a specific YouTube comment as JSON. Requires the video ID and the reply_cursor from a comment in the get_youtube_comments response. Use data.next_cursor as the next cursor while has_more is true. Costs 1 credit.`, {
|
|
128
117
|
video_id: z.string()
|
|
129
118
|
.describe("YouTube video ID, e.g. 'dQw4w9WgXcQ'."),
|
|
130
119
|
reply_cursor: z.string()
|
|
@@ -156,11 +145,11 @@ export function registerYoutubeTools(server, getClient) {
|
|
|
156
145
|
return handleApiError(err);
|
|
157
146
|
}
|
|
158
147
|
});
|
|
159
|
-
server.tool("get_youtube_related", `Get videos related to a YouTube video as JSON. Each result includes video ID, title, URL, channel, thumbnail, view count, publish time, and length. Accepts a video ID. Use to discover similar or recommended videos.`, {
|
|
148
|
+
server.tool("get_youtube_related", `Get videos related to a YouTube video as JSON. Each result includes video ID, title, URL, channel, thumbnail, view count, publish time, and length, under data.results with data.total_count. Accepts a video ID. Use to discover similar or recommended videos. This endpoint returns no next_cursor and no has_more, so treat the response as a single page. Costs 1 credit.`, {
|
|
160
149
|
video_id: z.string()
|
|
161
150
|
.describe("YouTube video ID, e.g. 'dQw4w9WgXcQ'."),
|
|
162
151
|
cursor: z.string().optional()
|
|
163
|
-
.describe("
|
|
152
|
+
.describe("Opaque pagination cursor. Accepted by the endpoint, but the response never returns one, so there is normally nothing to pass here."),
|
|
164
153
|
}, async (params) => {
|
|
165
154
|
try {
|
|
166
155
|
const data = await getClient().post("/api/v1/youtube/related", params);
|
|
@@ -170,7 +159,7 @@ export function registerYoutubeTools(server, getClient) {
|
|
|
170
159
|
return handleApiError(err);
|
|
171
160
|
}
|
|
172
161
|
});
|
|
173
|
-
server.tool("search_youtube_channels", `Search YouTube channels by keyword as JSON. Each result includes channel ID, name, handle, URL, thumbnail, subscriber count, and description. Use data.next_cursor as the next cursor while has_more is true.`, {
|
|
162
|
+
server.tool("search_youtube_channels", `Search YouTube channels by keyword as JSON. Each result includes channel ID, name, handle, URL, thumbnail, subscriber count, and description. Use data.next_cursor as the next cursor while has_more is true. Costs 1 credit.`, {
|
|
174
163
|
search: z.string().min(1).max(500)
|
|
175
164
|
.describe("Channel search query."),
|
|
176
165
|
cursor: z.string().optional()
|
|
@@ -184,7 +173,7 @@ export function registerYoutubeTools(server, getClient) {
|
|
|
184
173
|
return handleApiError(err);
|
|
185
174
|
}
|
|
186
175
|
});
|
|
187
|
-
server.tool("get_youtube_channel", `Get a YouTube channel's profile as JSON. Returns channel ID, title, description, handle, URL, subscriber/video/view counts, country, creation date, verified flag, avatar, banner, and external links. Accepts a channel ID, an @handle, or a channel URL.`, {
|
|
176
|
+
server.tool("get_youtube_channel", `Get a YouTube channel's profile as JSON. Returns channel ID, title, description, handle, URL, subscriber/video/view counts, country, creation date, verified flag, avatar, banner, and external links. Accepts a channel ID, an @handle, or a channel URL. Costs 1 credit.`, {
|
|
188
177
|
channel_id: z.string()
|
|
189
178
|
.describe("YouTube channel ID (e.g. 'UC...'), an @handle, or a channel URL."),
|
|
190
179
|
}, async (params) => {
|
|
@@ -196,9 +185,9 @@ export function registerYoutubeTools(server, getClient) {
|
|
|
196
185
|
return handleApiError(err);
|
|
197
186
|
}
|
|
198
187
|
});
|
|
199
|
-
server.tool("get_youtube_channel_videos", `List a YouTube channel's videos as JSON. Each result includes video ID, title, URL, thumbnail, duration, view count, publish time, and live flag. Accepts a channel ID. Use data.next_cursor as the next cursor while has_more is true.`, {
|
|
188
|
+
server.tool("get_youtube_channel_videos", `List a YouTube channel's videos as JSON. Each result includes video ID, title, URL, thumbnail, duration, view count, publish time, and live flag. Accepts a channel ID, an @handle, or a channel URL. Use data.next_cursor as the next cursor while has_more is true. Costs 1 credit.`, {
|
|
200
189
|
channel_id: z.string()
|
|
201
|
-
.describe("YouTube channel ID
|
|
190
|
+
.describe("YouTube channel ID (e.g. 'UC...'), an @handle, or a channel URL."),
|
|
202
191
|
cursor: z.string().optional()
|
|
203
192
|
.describe("Pagination cursor (next_cursor) from a previous response."),
|
|
204
193
|
}, async (params) => {
|
|
@@ -210,9 +199,9 @@ export function registerYoutubeTools(server, getClient) {
|
|
|
210
199
|
return handleApiError(err);
|
|
211
200
|
}
|
|
212
201
|
});
|
|
213
|
-
server.tool("get_youtube_channel_shorts", `List a YouTube channel's Shorts as JSON. Each result includes video ID, title, URL
|
|
202
|
+
server.tool("get_youtube_channel_shorts", `List a YouTube channel's Shorts as JSON. Each result includes video ID, title, URL and thumbnail only - there is no view count, because the upstream field for Shorts carries promo text rather than a count. Accepts a channel ID, an @handle, or a channel URL. Use data.next_cursor as the next cursor while has_more is true. Costs 1 credit.`, {
|
|
214
203
|
channel_id: z.string()
|
|
215
|
-
.describe("YouTube channel ID
|
|
204
|
+
.describe("YouTube channel ID (e.g. 'UC...'), an @handle, or a channel URL."),
|
|
216
205
|
cursor: z.string().optional()
|
|
217
206
|
.describe("Pagination cursor (next_cursor) from a previous response."),
|
|
218
207
|
}, async (params) => {
|
|
@@ -224,9 +213,9 @@ export function registerYoutubeTools(server, getClient) {
|
|
|
224
213
|
return handleApiError(err);
|
|
225
214
|
}
|
|
226
215
|
});
|
|
227
|
-
server.tool("get_youtube_channel_community", `List a YouTube channel's community posts as JSON. Each post includes its ID, URL, text, author, publish time, vote count, comment count, attached images, and attachment type. Accepts a channel ID. Use data.next_cursor as the next cursor while has_more is true.`, {
|
|
216
|
+
server.tool("get_youtube_channel_community", `List a YouTube channel's community posts as JSON, under data.posts (the only YouTube endpoint whose list key is not results). Each post includes its ID, URL, text, author, publish time, vote count, comment count, attached images, and attachment type. Accepts a channel ID, an @handle, or a channel URL. Use data.next_cursor as the next cursor while has_more is true. Costs 1 credit.`, {
|
|
228
217
|
channel_id: z.string()
|
|
229
|
-
.describe("YouTube channel ID
|
|
218
|
+
.describe("YouTube channel ID (e.g. 'UC...'), an @handle, or a channel URL."),
|
|
230
219
|
cursor: z.string().optional()
|
|
231
220
|
.describe("Pagination cursor (next_cursor) from a previous response."),
|
|
232
221
|
}, async (params) => {
|
|
@@ -238,7 +227,7 @@ export function registerYoutubeTools(server, getClient) {
|
|
|
238
227
|
return handleApiError(err);
|
|
239
228
|
}
|
|
240
229
|
});
|
|
241
|
-
server.tool("resolve_youtube_channel", `Resolve a YouTube @handle or channel URL to its canonical channel ID and URL, returned as JSON.
|
|
230
|
+
server.tool("resolve_youtube_channel", `Resolve a YouTube @handle or channel URL to its canonical channel ID and URL, returned as JSON. The other channel tools accept a handle or URL directly, so this is only needed when you want the id itself. Costs 1 credit.`, {
|
|
242
231
|
channel: z.string()
|
|
243
232
|
.describe("A YouTube @handle (e.g. '@MrBeast') or a channel URL."),
|
|
244
233
|
}, async (params) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"youtube.js","sourceRoot":"","sources":["../../src/tools/youtube.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAEzE,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,SAAS,cAAc,CAAC,GAAY;IAClC,IAAI,GAAG,YAAY,QAAQ,EAAE,CAAC;QAC5B,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;YAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,+BAA+B,EAAE,CAAC,EAAE,CAAC;QACrH,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;YAAE,MAAM,IAAI,QAAQ,CAAC,SAAS,CAAC,aAAa,EAAE,mDAAmD,CAAC,CAAC;QACzH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,qBAAqB,GAAG,CAAC,MAAM,MAAM,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC;IAClH,CAAC;IACD,MAAM,IAAI,QAAQ,CAAC,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,MAAiB,EAAE,SAA6B;IACnF,MAAM,CAAC,IAAI,CACT,gBAAgB,EAChB,6UAA6U,EAC7U;QACE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;aAC/B,QAAQ,CAAC,uBAAuB,CAAC;QACpC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC;aAChF,QAAQ,CAAC,wEAAwE,CAAC;QACrF,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;aACrE,QAAQ,CAAC,qBAAqB,CAAC;QAClC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE;aAC3F,QAAQ,CAAC,2CAA2C,CAAC;QACxD,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE;aACrD,QAAQ,CAAC,+DAA+D,CAAC;QAC5E,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;aACrH,QAAQ,CAAC,sDAAsD,CAAC;QACnE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;aAC1B,QAAQ,CAAC,2DAA2D,CAAC;QACxE,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;aACvB,QAAQ,CAAC,kDAAkD,CAAC;QAC/D,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;aACzB,QAAQ,CAAC,kDAAkD,CAAC;QAC/D,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;aAC9B,QAAQ,CAAC,wEAAwE,CAAC;QACrF,gBAAgB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;aACrC,QAAQ,CAAC,uFAAuF,CAAC;QACpG,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;aACzB,QAAQ,CAAC,sDAAsD,CAAC;QACnE,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;aAC1B,QAAQ,CAAC,2DAA2D,CAAC;QACxE,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;aACzB,QAAQ,CAAC,kDAAkD,CAAC;QAC/D,GAAG,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;aACxB,QAAQ,CAAC,oDAAoD,CAAC;QACjE,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;aAC1B,QAAQ,CAAC,wDAAwD,CAAC;KACtE,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,SAAS,EAAE,CAAC,IAAI,CAAC,wBAAwB,EAAE,MAAM,CAAC,CAAC;YACtE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QAC9E,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,cAAc,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,uBAAuB,EACvB,wOAAwO,EACxO;QACE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;aAC/B,QAAQ,CAAC,8BAA8B,CAAC;QAC3C,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC;aAChF,QAAQ,CAAC,wEAAwE,CAAC;QACrF,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;aAC1B,QAAQ,CAAC,2DAA2D,CAAC;KACzE,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,SAAS,EAAE,CAAC,IAAI,CAAC,wBAAwB,EAAE,MAAM,CAAC,CAAC;YACtE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QAC9E,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,cAAc,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,4BAA4B,EAC5B,sLAAsL,EACtL;QACE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;aAC/B,QAAQ,CAAC,+CAA+C,CAAC;QAC5D,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;aAC/B,QAAQ,CAAC,kDAAkD,CAAC;QAC/D,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;aAC7B,QAAQ,CAAC,gDAAgD,CAAC;KAC9D,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,SAAS,EAAE,CAAC,IAAI,CAAC,6BAA6B,EAAE,MAAM,CAAC,CAAC;YAC3E,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QAC9E,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,cAAc,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,mBAAmB,EACnB,0TAA0T,EAC1T;QACE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;aACjB,QAAQ,CAAC,4DAA4D,CAAC;KAC1E,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,SAAS,EAAE,CAAC,IAAI,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC;YACrE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QAC9E,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,cAAc,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,sBAAsB,EACtB,sLAAsL,EACtL;QACE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;aACjB,QAAQ,CAAC,4DAA4D,CAAC;KAC1E,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,SAAS,EAAE,CAAC,IAAI,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC;YACrE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QAC9E,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,cAAc,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,sBAAsB,EACtB,sQAAsQ,EACtQ;QACE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;aACjB,QAAQ,CAAC,uCAAuC,CAAC;QACpD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;aAC1B,QAAQ,CAAC,2DAA2D,CAAC;KACzE,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,SAAS,EAAE,CAAC,IAAI,CAAC,0BAA0B,EAAE,MAAM,CAAC,CAAC;YACxE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QAC9E,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,cAAc,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,6BAA6B,EAC7B,oNAAoN,EACpN;QACE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;aACjB,QAAQ,CAAC,uCAAuC,CAAC;QACpD,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;aACrB,QAAQ,CAAC,uEAAuE,CAAC;QACpF,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;aAC1B,QAAQ,CAAC,mEAAmE,CAAC;KACjF,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,SAAS,EAAE,CAAC,IAAI,CAAC,kCAAkC,EAAE,MAAM,CAAC,CAAC;YAChF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QAC9E,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,cAAc,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,wBAAwB,EACxB,2RAA2R,EAC3R;QACE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;aACjB,QAAQ,CAAC,4DAA4D,CAAC;QACzE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;aAC/B,QAAQ,CAAC,kDAAkD,CAAC;QAC/D,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;aAC5C,QAAQ,CAAC,2DAA2D,CAAC;KACzE,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,SAAS,EAAE,CAAC,IAAI,CAAC,4BAA4B,EAAE,MAAM,CAAC,CAAC;YAC1E,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QAC9E,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,cAAc,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,qBAAqB,EACrB,wNAAwN,EACxN;QACE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;aACjB,QAAQ,CAAC,uCAAuC,CAAC;QACpD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;aAC1B,QAAQ,CAAC,2DAA2D,CAAC;KACzE,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,SAAS,EAAE,CAAC,IAAI,CAAC,yBAAyB,EAAE,MAAM,CAAC,CAAC;YACvE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QAC9E,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,cAAc,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,yBAAyB,EACzB,+MAA+M,EAC/M;QACE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;aAC/B,QAAQ,CAAC,uBAAuB,CAAC;QACpC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;aAC1B,QAAQ,CAAC,2DAA2D,CAAC;KACzE,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,SAAS,EAAE,CAAC,IAAI,CAAC,gCAAgC,EAAE,MAAM,CAAC,CAAC;YAC9E,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QAC9E,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,cAAc,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,qBAAqB,EACrB,4PAA4P,EAC5P;QACE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;aACnB,QAAQ,CAAC,kEAAkE,CAAC;KAChF,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,SAAS,EAAE,CAAC,IAAI,CAAC,yBAAyB,EAAE,MAAM,CAAC,CAAC;YACvE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QAC9E,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,cAAc,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,4BAA4B,EAC5B,yOAAyO,EACzO;QACE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;aACnB,QAAQ,CAAC,mCAAmC,CAAC;QAChD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;aAC1B,QAAQ,CAAC,2DAA2D,CAAC;KACzE,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,SAAS,EAAE,CAAC,IAAI,CAAC,gCAAgC,EAAE,MAAM,CAAC,CAAC;YAC9E,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QAC9E,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,cAAc,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,4BAA4B,EAC5B,sMAAsM,EACtM;QACE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;aACnB,QAAQ,CAAC,mCAAmC,CAAC;QAChD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;aAC1B,QAAQ,CAAC,2DAA2D,CAAC;KACzE,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,SAAS,EAAE,CAAC,IAAI,CAAC,gCAAgC,EAAE,MAAM,CAAC,CAAC;YAC9E,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QAC9E,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,cAAc,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,+BAA+B,EAC/B,sQAAsQ,EACtQ;QACE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;aACnB,QAAQ,CAAC,mCAAmC,CAAC;QAChD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;aAC1B,QAAQ,CAAC,2DAA2D,CAAC;KACzE,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,SAAS,EAAE,CAAC,IAAI,CAAC,mCAAmC,EAAE,MAAM,CAAC,CAAC;YACjF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QAC9E,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,cAAc,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,yBAAyB,EACzB,6KAA6K,EAC7K;QACE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;aAChB,QAAQ,CAAC,uDAAuD,CAAC;KACrE,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,SAAS,EAAE,CAAC,IAAI,CAAC,iCAAiC,EAAE,MAAM,CAAC,CAAC;YAC/E,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QAC9E,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,cAAc,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,qBAAqB,EACrB,yQAAyQ,EACzQ;QACE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;aACjB,QAAQ,CAAC,4DAA4D,CAAC;KAC1E,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,SAAS,EAAE,CAAC,IAAI,CAAC,yBAAyB,EAAE,MAAM,CAAC,CAAC;YACvE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QAC9E,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,cAAc,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"youtube.js","sourceRoot":"","sources":["../../src/tools/youtube.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { handleApiError } from "../lib/tool-error.js";
|
|
3
|
+
// No zod `.default()` anywhere in this file. The MCP SDK applies a zod default
|
|
4
|
+
// BEFORE the handler runs, so a defaulted field is posted on every call whether
|
|
5
|
+
// the model set it or not. Here that would be actively harmful: a bare ZIP in
|
|
6
|
+
// `location` works alone but silently resolves to a DIFFERENT city as soon as
|
|
7
|
+
// any filter or sort rides along, and a defaulted listing_status or sort would
|
|
8
|
+
// attach one to every call. Upstream defaults are documented in describe text.
|
|
9
|
+
export function registerZillowTools(server, getClient) {
|
|
10
|
+
server.tool("search_zillow", `Search Zillow for US real-estate listings in a region and return them as JSON. Each row carries the zpid, address, price, beds, baths, living area, lot size, home type, listing status, Zestimate and rent Zestimate, latitude and longitude, images, days on Zillow and broker attribution.
|
|
11
|
+
|
|
12
|
+
TRAP WORTH READING BEFORE YOU CALL: a bare ZIP code in \`location\` works ALONE, but it must NOT be combined with any filter or sort. On that request shape Zillow resolves the region by geolocating the request instead of reading the ZIP, and answers about a completely different city under a 200. Whenever you filter or sort, pass the city name ("Austin, TX") or a Zillow slug, never the ZIP.
|
|
13
|
+
|
|
14
|
+
Second trap: on listing_status=for_rent, min_price and max_price mean MONTHLY RENT, not sale price — Zillow files rent under its payment filter. days_on_zillow is a closed enum; an unrecognised value returns the UNFILTERED set under a 200 rather than an error, so confirm the filter took. Sorts that rank against a signed-in Zillow profile (saved, featured, personalised) are deliberately unavailable because we are never signed in. A region Zillow cannot resolve comes back as a 404, not an empty result set.
|
|
15
|
+
|
|
16
|
+
Paginate with page. Costs 1 credit per page.`, {
|
|
17
|
+
location: z.string().min(1).max(200)
|
|
18
|
+
.describe("Region to search: a Zillow slug ('austin-tx'), a human 'City, ST', a bare ZIP, or a pasted zillow.com search URL. A bare ZIP is only safe with NO filter and NO sort — with either one Zillow geolocates the request and returns another city. Use the city name when filtering or sorting."),
|
|
19
|
+
listing_status: z.enum(["for_sale", "for_rent", "sold"]).optional()
|
|
20
|
+
.describe("Which market to search. Upstream default is 'for_sale'. On 'for_rent', min_price/max_price switch meaning to MONTHLY RENT."),
|
|
21
|
+
page: z.number().int().min(1).optional()
|
|
22
|
+
.describe("Results page, 1-based. One page per call, 1 credit each."),
|
|
23
|
+
sort: z.enum([
|
|
24
|
+
"relevance", "recommended", "newest", "price_low", "price_high",
|
|
25
|
+
"payment_low", "payment_high", "beds", "baths", "sqft", "lot_size",
|
|
26
|
+
"zestimate_low", "zestimate_high", "recent_change",
|
|
27
|
+
]).optional()
|
|
28
|
+
.describe("Sort order. Sending any sort makes a bare-ZIP location unsafe — use a city name instead. Sorts that rank against a signed-in profile (saved / featured / personalised) are unavailable."),
|
|
29
|
+
min_price: z.number().min(0).optional()
|
|
30
|
+
.describe("Minimum price in USD. On listing_status=for_rent this is MONTHLY RENT, not sale price."),
|
|
31
|
+
max_price: z.number().min(0).optional()
|
|
32
|
+
.describe("Maximum price in USD. On listing_status=for_rent this is MONTHLY RENT, not sale price."),
|
|
33
|
+
beds_min: z.number().int().min(0).optional()
|
|
34
|
+
.describe("Minimum bedrooms."),
|
|
35
|
+
beds_max: z.number().int().min(0).optional()
|
|
36
|
+
.describe("Maximum bedrooms."),
|
|
37
|
+
baths_min: z.number().min(0).optional()
|
|
38
|
+
.describe("Minimum bathrooms. Half-baths allowed, e.g. 1.5."),
|
|
39
|
+
baths_max: z.number().min(0).optional()
|
|
40
|
+
.describe("Maximum bathrooms. Half-baths allowed, e.g. 2.5."),
|
|
41
|
+
sqft_min: z.number().int().min(0).optional()
|
|
42
|
+
.describe("Minimum living area in square feet."),
|
|
43
|
+
sqft_max: z.number().int().min(0).optional()
|
|
44
|
+
.describe("Maximum living area in square feet."),
|
|
45
|
+
lot_size_min: z.number().int().min(0).optional()
|
|
46
|
+
.describe("Minimum lot size in square feet."),
|
|
47
|
+
lot_size_max: z.number().int().min(0).optional()
|
|
48
|
+
.describe("Maximum lot size in square feet."),
|
|
49
|
+
year_built_min: z.number().int().min(0).optional()
|
|
50
|
+
.describe("Earliest year built, e.g. 1990."),
|
|
51
|
+
year_built_max: z.number().int().min(0).optional()
|
|
52
|
+
.describe("Latest year built, e.g. 2024."),
|
|
53
|
+
max_hoa: z.number().min(0).optional()
|
|
54
|
+
.describe("Maximum monthly HOA fee in USD."),
|
|
55
|
+
home_type: z.enum(["houses", "townhomes", "multi_family", "condos", "apartments", "manufactured", "lots_land"]).optional()
|
|
56
|
+
.describe("Property type filter."),
|
|
57
|
+
days_on_zillow: z.enum(["1", "7", "14", "30", "90", "6m", "12m", "24m", "36m"]).optional()
|
|
58
|
+
.describe("Maximum days on Zillow. CLOSED enum — an unrecognised value returns the UNFILTERED set under a 200 rather than an error."),
|
|
59
|
+
keywords: z.string().min(1).max(200).optional()
|
|
60
|
+
.describe("Free-text keywords matched against the listing description, e.g. 'casita' or 'solar'."),
|
|
61
|
+
has_pool: z.boolean().optional()
|
|
62
|
+
.describe("Restrict to listings with a pool."),
|
|
63
|
+
has_garage: z.boolean().optional()
|
|
64
|
+
.describe("Restrict to listings with a garage."),
|
|
65
|
+
has_air_conditioning: z.boolean().optional()
|
|
66
|
+
.describe("Restrict to listings with air conditioning."),
|
|
67
|
+
is_waterfront: z.boolean().optional()
|
|
68
|
+
.describe("Restrict to waterfront listings."),
|
|
69
|
+
has_basement: z.boolean().optional()
|
|
70
|
+
.describe("Restrict to listings with a basement."),
|
|
71
|
+
is_new_construction: z.boolean().optional()
|
|
72
|
+
.describe("Restrict to new construction."),
|
|
73
|
+
has_open_house: z.boolean().optional()
|
|
74
|
+
.describe("Restrict to listings with a scheduled open house."),
|
|
75
|
+
price_reduced: z.boolean().optional()
|
|
76
|
+
.describe("Restrict to listings whose price was recently reduced."),
|
|
77
|
+
is_3d_tour: z.boolean().optional()
|
|
78
|
+
.describe("Restrict to listings with a 3D tour."),
|
|
79
|
+
}, async (params) => {
|
|
80
|
+
try {
|
|
81
|
+
const data = await getClient().post("/api/v1/zillow/search", params);
|
|
82
|
+
return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
|
|
83
|
+
}
|
|
84
|
+
catch (err) {
|
|
85
|
+
return handleApiError(err);
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
server.tool("get_zillow_property", `Get one Zillow listing in full as JSON: address, current price and the complete price history, Zestimate and rent Zestimate, tax history, the listing description, RESO facts, room-by-room detail, assigned schools, scheduled open houses, photos and broker attribution.
|
|
89
|
+
|
|
90
|
+
Rental BUILDINGS answer differently — floor plans, amenities and unit counts instead of a single home's facts. They also have NO caller-visible zpid: search_zillow returns coordinates in the zpid slot for them, so pass the zillow.com/apartments/ building URL rather than trying to use that value as an id.
|
|
91
|
+
|
|
92
|
+
Single-listing lookup, no pagination. For a real-estate agent's profile and reviews use get_zillow_agent_reviews instead. Costs 1 credit.`, {
|
|
93
|
+
zpid: z.string().min(1)
|
|
94
|
+
.describe("A Zillow zpid (e.g. '20485700'), a zillow.com/homedetails/ URL, or a zillow.com/apartments/ building URL. Rental buildings have no caller-visible zpid — search_zillow puts coordinates in that slot — so pass the /apartments/ URL for those."),
|
|
95
|
+
}, async (params) => {
|
|
96
|
+
try {
|
|
97
|
+
const data = await getClient().post("/api/v1/zillow/property", params);
|
|
98
|
+
return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
|
|
99
|
+
}
|
|
100
|
+
catch (err) {
|
|
101
|
+
return handleApiError(err);
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
server.tool("get_zillow_agent_reviews", `Get a Zillow real-estate AGENT's profile and their reviews as JSON. This addresses an AGENT by profile screen name — it is NOT a property endpoint and returns nothing about a home. For a home, use get_zillow_property.
|
|
105
|
+
|
|
106
|
+
Returns the agent's name, photo, brokerage, overall rating, total review count, specialties, languages, licences, service areas and sales counts, plus the review bodies with author, date, rating, text and sub-ratings (local knowledge, responsiveness, negotiation skill).
|
|
107
|
+
|
|
108
|
+
Zillow server-renders only the FIRST FIVE reviews: \`count\` is how many bodies came back, \`total_review_count\` is how many the agent actually has. There is no page or cursor param and no way to reach the rest — treat the five as the whole available sample.
|
|
109
|
+
|
|
110
|
+
Costs 1 credit.`, {
|
|
111
|
+
screen_name: z.string().min(1).max(200)
|
|
112
|
+
.describe("Agent profile screen name — the <name> in zillow.com/profile/<name>/ — or the full profile URL. May contain spaces."),
|
|
113
|
+
}, async (params) => {
|
|
114
|
+
try {
|
|
115
|
+
const data = await getClient().post("/api/v1/zillow/reviews", params);
|
|
116
|
+
return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
|
|
117
|
+
}
|
|
118
|
+
catch (err) {
|
|
119
|
+
return handleApiError(err);
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=zillow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zillow.js","sourceRoot":"","sources":["../../src/tools/zillow.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.13.0",
|
|
4
4
|
"mcpName": "io.github.scavio-ai/scavio-mcp",
|
|
5
|
-
"description": "MCP server connecting AI agents to
|
|
5
|
+
"description": "MCP server connecting AI agents to Scavio: web search, page extraction, and structured e-commerce, social, travel, jobs, real-estate, app-store, ad-library and company-filing data. 191 tools across 32 platforms, one API key.",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"license": "MIT",
|
|
8
8
|
"author": "Scavio",
|
|
@@ -28,6 +28,15 @@
|
|
|
28
28
|
"linkedin",
|
|
29
29
|
"web-search",
|
|
30
30
|
"instagram",
|
|
31
|
+
"threads",
|
|
32
|
+
"ebay",
|
|
33
|
+
"zillow",
|
|
34
|
+
"yelp",
|
|
35
|
+
"indeed",
|
|
36
|
+
"glassdoor",
|
|
37
|
+
"sec-filings",
|
|
38
|
+
"web-scraping",
|
|
39
|
+
"url-extraction",
|
|
31
40
|
"tavily-alternative",
|
|
32
41
|
"serpapi-alternative"
|
|
33
42
|
],
|
|
@@ -43,6 +52,7 @@
|
|
|
43
52
|
"build": "tsc",
|
|
44
53
|
"start": "node dist/index.js",
|
|
45
54
|
"typecheck": "tsc --noEmit",
|
|
55
|
+
"toolslist": "node scripts/toolslist.mjs",
|
|
46
56
|
"prepublishOnly": "npm run build"
|
|
47
57
|
},
|
|
48
58
|
"publishConfig": {
|