webdata-tools-mcp 0.2.0 → 0.4.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 +4 -3
- package/package.json +5 -3
- package/src/tools.js +28 -3
package/README.md
CHANGED
|
@@ -6,9 +6,9 @@
|
|
|
6
6
|
[Smithery](https://smithery.ai/servers/tacps126/webdata-tools-mcp)
|
|
7
7
|
[](https://glama.ai/mcp/servers/tacps126/webdata-tools-mcp)
|
|
8
8
|
|
|
9
|
-
An [MCP](https://modelcontextprotocol.io) server that gives AI agents
|
|
9
|
+
An [MCP](https://modelcontextprotocol.io) server that gives AI agents eleven web-data tools: job
|
|
10
10
|
postings, hiring signals, Google News, Trustpilot and app-store reviews, Reddit mentions, website
|
|
11
|
-
contacts, German property listings and
|
|
11
|
+
contacts, German and Austrian property listings, Shopify products and trade-show exhibitor lists.
|
|
12
12
|
|
|
13
13
|
Each tool runs a ready-made [Apify](https://apify.com/tacps126) Actor and returns clean JSON. You
|
|
14
14
|
pay Apify per result (about $1–3 per 1,000 results); there is no subscription and nothing is sent
|
|
@@ -26,8 +26,9 @@ anywhere except Apify.
|
|
|
26
26
|
| `get_app_reviews` | App Store and Google Play reviews | $0.20 / 1,000 reviews | [app-reviews](https://apify.com/tacps126/app-reviews) |
|
|
27
27
|
| `search_reddit` | Reddit posts and comments by keyword or subreddit | $1 / 1,000 items | [reddit-monitor](https://apify.com/tacps126/reddit-monitor) |
|
|
28
28
|
| `find_website_contacts` | Emails, phones, socials from websites | $2 / 1,000 sites with contacts | [contact-details](https://apify.com/tacps126/contact-details) |
|
|
29
|
-
| `search_german_property_listings` | Rent/buy listings in Germany (ImmoScout24) | $1 / 1,000 listings | [immobilienscout24-scraper](https://apify.com/tacps126/immobilienscout24-scraper) |
|
|
29
|
+
| `search_german_property_listings` | Rent/buy listings in Germany and Austria (ImmoScout24) | $1 / 1,000 listings | [immobilienscout24-scraper](https://apify.com/tacps126/immobilienscout24-scraper) |
|
|
30
30
|
| `get_shopify_products` | Prices, discounts, stock, variants from Shopify stores | $1 / 1,000 products | [shopify-products](https://apify.com/tacps126/shopify-products) |
|
|
31
|
+
| `get_trade_show_exhibitors` | Trade-show exhibitors: booth, email, phone, website, address (76 shows or any supported exhibitor-list link) | $2 / 1,000 exhibitors | [exhibition-scraper](https://apify.com/tacps126/exhibition-scraper) |
|
|
31
32
|
|
|
32
33
|
Every tool also takes an optional `extra_input` object for any other field the Actor documents.
|
|
33
34
|
Every result comes back as text and as structured content (`tool`, `count`, `shown`, `truncated`,
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "webdata-tools-mcp",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"mcpName": "io.github.tacps126/webdata-tools-mcp",
|
|
5
|
-
"description": "MCP server for AI agents: job postings, hiring signals, Google News, Trustpilot and app reviews, Reddit mentions, website contacts, German real estate and
|
|
5
|
+
"description": "MCP server for AI agents: job postings, hiring signals, Google News, Trustpilot and app reviews, Reddit mentions, website contacts, German real estate, Shopify products and trade-show exhibitor lists. Runs ready-made Apify Actors with your own Apify token.",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"bin": {
|
|
8
8
|
"webdata-tools-mcp": "src/index.js"
|
|
@@ -28,7 +28,9 @@
|
|
|
28
28
|
"google-news",
|
|
29
29
|
"trustpilot",
|
|
30
30
|
"reviews",
|
|
31
|
-
"lead-generation"
|
|
31
|
+
"lead-generation",
|
|
32
|
+
"trade-shows",
|
|
33
|
+
"exhibitors"
|
|
32
34
|
],
|
|
33
35
|
"license": "MIT",
|
|
34
36
|
"engines": {
|
package/src/tools.js
CHANGED
|
@@ -249,12 +249,13 @@ export const TOOLS = [
|
|
|
249
249
|
{
|
|
250
250
|
name: 'search_german_property_listings',
|
|
251
251
|
actor: 'tacps126/immobilienscout24-scraper',
|
|
252
|
-
title: 'Search German property listings (ImmoScout24)',
|
|
252
|
+
title: 'Search German and Austrian property listings (ImmoScout24)',
|
|
253
253
|
price: 'about $0.001 per listing',
|
|
254
254
|
description:
|
|
255
|
-
'Apartments and houses for rent or sale in Germany: price, rent, area, rooms, address with coordinates, energy class, features, agent, photos and dates.
|
|
255
|
+
'Apartments and houses for rent or sale in Germany or Austria: price, rent, area, rooms, address with coordinates, energy class, features, agent, photos and dates. Not Switzerland.',
|
|
256
256
|
shape: {
|
|
257
|
-
|
|
257
|
+
country: z.enum(['de', 'at']).default('de').describe('de = Germany (immobilienscout24.de), at = Austria (immobilienscout24.at).'),
|
|
258
|
+
locations: strings('Cities, districts or regions in plain words, e.g. ["Berlin","München Schwabing"]; in Austria a city or federal state, e.g. ["Wien","Tirol"].'),
|
|
258
259
|
offer_type: z.enum(['rent', 'buy']).default('rent').describe('Rent or buy listings.'),
|
|
259
260
|
property_type: z.enum(['apartment', 'house']).default('apartment').describe('Apartments or houses.'),
|
|
260
261
|
min_price: z.number().optional().describe('Minimum price in EUR (monthly rent or purchase price).'),
|
|
@@ -265,6 +266,7 @@ export const TOOLS = [
|
|
|
265
266
|
},
|
|
266
267
|
map: (a) =>
|
|
267
268
|
clean({
|
|
269
|
+
country: a.country,
|
|
268
270
|
locations: a.locations,
|
|
269
271
|
offerType: a.offer_type,
|
|
270
272
|
propertyType: a.property_type,
|
|
@@ -300,6 +302,29 @@ export const TOOLS = [
|
|
|
300
302
|
}),
|
|
301
303
|
limit: (a) => a.max_items,
|
|
302
304
|
},
|
|
305
|
+
{
|
|
306
|
+
name: 'get_trade_show_exhibitors',
|
|
307
|
+
actor: 'tacps126/exhibition-scraper',
|
|
308
|
+
title: 'Get trade show exhibitor lists (booths and contacts)',
|
|
309
|
+
price: 'about $0.002 per exhibitor',
|
|
310
|
+
description:
|
|
311
|
+
"Exhibitor lists of trade shows as B2B leads: company, booth and hall, email, phone, website, address, socials and categories. 76 built-in shows (e.g. medica, sema-show, nab-show, fabtech, ish, automechanika, wtm-london, world-health-expo) or any exhibitor-list link on Messe Frankfurt, Messe Düsseldorf, RX, Map Your Show, a2z / A2Z Connect, Swapcard or Corussoft; the link's own show and year are used. Contact coverage depends on what the organiser publishes.",
|
|
312
|
+
shape: {
|
|
313
|
+
shows: z.array(z.string().min(1)).optional().describe('Built-in show ids, e.g. ["medica","sema-show"]. The Actor README lists all ids.'),
|
|
314
|
+
urls: z.array(z.string().url()).optional().describe("Links to any show's exhibitor list or exhibitor search page (or its homepage)."),
|
|
315
|
+
include_contacts: z.boolean().default(true).describe('Open each exhibitor profile for email, phone, website, address and socials. Off = names and booths only (faster).'),
|
|
316
|
+
max_items: maxItems(50, 2000),
|
|
317
|
+
},
|
|
318
|
+
map: (a) =>
|
|
319
|
+
clean({
|
|
320
|
+
exhibitionList: a.shows,
|
|
321
|
+
startUrls: (a.urls ?? []).map((url) => ({ url })),
|
|
322
|
+
includeDetails: a.include_contacts,
|
|
323
|
+
maxResults: a.max_items,
|
|
324
|
+
}),
|
|
325
|
+
// max_items applies per show.
|
|
326
|
+
limit: (a) => a.max_items * Math.max(1, (a.shows?.length ?? 0) + (a.urls?.length ?? 0)),
|
|
327
|
+
},
|
|
303
328
|
];
|
|
304
329
|
|
|
305
330
|
export const ACTORS = [...new Set(TOOLS.map((t) => t.actor))];
|