gmpsignal-mcp 1.1.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/bin/cli.mjs +326 -17
  2. package/package.json +1 -1
package/bin/cli.mjs CHANGED
@@ -4,15 +4,16 @@
4
4
  * @description Official Model Context Protocol (MCP) JSON-RPC 2.0 stdio server and CLI launcher
5
5
  * for the GMPSignal 40-Actor Enterprise Data, Quantitative Crypto, Prediction Markets,
6
6
  * B2B Enrichment, KYB/Sanctions, Cybersecurity & Regulatory Intelligence Suite on Apify.
7
- * Supports full offline/container introspection (initialize, tools/list, resources/list,
8
- * prompts/list) for Glama.ai / Smithery.ai inspections and executes live Apify Actor runs on tools/call.
7
+ * Exposes all 40 GMPSignal Apify Actors as strongly-typed MCP tools with zero-credential
8
+ * offline/container introspection (initialize, tools/list, resources/list, prompts/list)
9
+ * for Glama.ai and Smithery.ai inspections.
9
10
  */
10
11
 
11
12
  import readline from 'node:readline';
12
13
  import { GMPSIGNAL_SUITES, resolveActorsForSuite, buildMcpServerConfig } from '../index.mjs';
13
14
 
14
15
  /**
15
- * Detailed MCP Tool schemas for GMPSignal's Flagship & Regional Apify Intelligence Actors.
16
+ * Complete 40-Tool MCP Definitions mapping 1-to-1 to all 40 GMPSignal Apify Actors.
16
17
  * @type {Array<{name: string, actorSlug: string, description: string, inputSchema: Object}>}
17
18
  */
18
19
  const MCP_TOOL_DEFINITIONS = [
@@ -23,7 +24,7 @@ const MCP_TOOL_DEFINITIONS = [
23
24
  inputSchema: {
24
25
  type: 'object',
25
26
  properties: {
26
- chainId: { type: 'string', description: 'Target blockchain network (e.g., solana, ethereum, base, arbitrum, bsc).', default: 'solana' },
27
+ chainId: { type: 'string', description: 'Target blockchain network (solana, ethereum, base, arbitrum, bsc).', default: 'solana' },
27
28
  searchQuery: { type: 'string', description: 'Token symbol, name, or contract/pair address to audit.', default: 'SOL' },
28
29
  minLiquidityUsd: { type: 'number', description: 'Minimum pool liquidity in USD.', default: 10000 },
29
30
  maxResults: { type: 'integer', description: 'Maximum number of audited token pairs to return.', default: 15 }
@@ -67,7 +68,7 @@ const MCP_TOOL_DEFINITIONS = [
67
68
  type: 'object',
68
69
  properties: {
69
70
  mode: { type: 'string', description: 'Query mode: yield_pools, protocol_tvl, or stablecoins.', default: 'yield_pools' },
70
- chains: { type: 'array', items: { type: 'string' }, description: 'Chains to filter (e.g., Ethereum, Solana, Arbitrum, Base).', default: ['Ethereum', 'Solana'] },
71
+ chains: { type: 'array', items: { type: 'string' }, description: 'Chains to filter (Ethereum, Solana, Arbitrum, Base).', default: ['Ethereum', 'Solana'] },
71
72
  minTvlUsd: { type: 'number', description: 'Minimum pool TVL in USD.', default: 1000000 },
72
73
  maxResults: { type: 'integer', description: 'Maximum records to return.', default: 25 }
73
74
  },
@@ -180,15 +181,27 @@ const MCP_TOOL_DEFINITIONS = [
180
181
  }
181
182
  },
182
183
  {
183
- name: 'sec_edgar_filings_scraper',
184
- actorSlug: 'gmpsignal~sec-edgar-filings',
185
- description: 'Fetch official US SEC EDGAR corporate filings (10-K, 10-Q, 8-K, Form 4 insider transactions) by ticker, CIK, or form type.',
184
+ name: 'global_product_recalls_monitor',
185
+ actorSlug: 'gmpsignal~global-product-recalls',
186
+ description: 'Monitor consumer product safety recalls across US CPSC, USDA FSIS, and European Safety Gate (RAPEX) alerts.',
186
187
  inputSchema: {
187
188
  type: 'object',
188
189
  properties: {
189
- tickers: { type: 'array', items: { type: 'string' }, description: 'Stock tickers or CIK codes (e.g., AAPL, NVDA, MSFT).', default: ['AAPL', 'NVDA'] },
190
- forms: { type: 'array', items: { type: 'string' }, description: 'SEC form types (e.g., 10-K, 10-Q, 8-K, 4).', default: ['10-K', '10-Q', '8-K'] },
191
- maxResults: { type: 'integer', description: 'Maximum filings to return.', default: 25 }
190
+ sources: { type: 'array', items: { type: 'string' }, description: 'Recall authorities (cpsc, fsis, eu).', default: ['cpsc', 'eu'] },
191
+ maxResults: { type: 'integer', description: 'Maximum recall alerts to return.', default: 25 }
192
+ },
193
+ required: []
194
+ }
195
+ },
196
+ {
197
+ name: 'earthquake_monitor_usgs_emsc_afad',
198
+ actorSlug: 'gmpsignal~earthquake-monitor-usgs-emsc-afad',
199
+ description: 'Track cross-verified global and regional seismic events in real time across USGS, EMSC, and AFAD networks.',
200
+ inputSchema: {
201
+ type: 'object',
202
+ properties: {
203
+ minMagnitude: { type: 'string', description: 'Minimum Richter magnitude threshold (e.g., "3.0", "4.5").', default: '4.5' },
204
+ maxResults: { type: 'integer', description: 'Maximum seismic events to return.', default: 25 }
192
205
  },
193
206
  required: []
194
207
  }
@@ -219,6 +232,62 @@ const MCP_TOOL_DEFINITIONS = [
219
232
  required: []
220
233
  }
221
234
  },
235
+ {
236
+ name: 'pazar3_merrjep_balkan_classifieds_scraper',
237
+ actorSlug: 'gmpsignal~pazar3-merrjep-balkan-scraper',
238
+ description: 'Extract real estate, vehicles, and marketplace listings across North Macedonia (Pazar3.mk), Kosovo (MerrJep.com), and Albania (MerrJep.al).',
239
+ inputSchema: {
240
+ type: 'object',
241
+ properties: {
242
+ country: { type: 'string', description: 'Target country code (mk, xk, al).', default: 'mk' },
243
+ category: { type: 'string', description: 'Category slug (cars, real-estate, electronics).', default: 'cars' },
244
+ maxItems: { type: 'integer', description: 'Maximum classified listings to return.', default: 25 }
245
+ },
246
+ required: []
247
+ }
248
+ },
249
+ {
250
+ name: 'turkey_real_estate_listings_scraper',
251
+ actorSlug: 'gmpsignal~hepsiemlak-scraper-turkey-real-estate-listings',
252
+ description: 'Extract residential and commercial real estate listings, square-meter pricing, and agent details across regional cities.',
253
+ inputSchema: {
254
+ type: 'object',
255
+ properties: {
256
+ city: { type: 'string', description: 'Target city slug (e.g., istanbul, ankara, izmir).', default: 'istanbul' },
257
+ category: { type: 'string', description: 'Listing type category slug.', default: 'sale' },
258
+ maxItems: { type: 'integer', description: 'Maximum property listings to return.', default: 20 }
259
+ },
260
+ required: []
261
+ }
262
+ },
263
+ {
264
+ name: 'sec_edgar_filings_scraper',
265
+ actorSlug: 'gmpsignal~sec-edgar-filings',
266
+ description: 'Fetch official US SEC EDGAR corporate filings (10-K, 10-Q, 8-K, Form 4 insider transactions) by ticker, CIK, or form type.',
267
+ inputSchema: {
268
+ type: 'object',
269
+ properties: {
270
+ tickers: { type: 'array', items: { type: 'string' }, description: 'Stock tickers or CIK codes (e.g., AAPL, NVDA, MSFT).', default: ['AAPL', 'NVDA'] },
271
+ forms: { type: 'array', items: { type: 'string' }, description: 'SEC form types (10-K, 10-Q, 8-K, 4).', default: ['10-K', '10-Q', '8-K'] },
272
+ maxResults: { type: 'integer', description: 'Maximum filings to return.', default: 25 }
273
+ },
274
+ required: []
275
+ }
276
+ },
277
+ {
278
+ name: 'german_jobs_arbeitsagentur_scraper',
279
+ actorSlug: 'gmpsignal~german-jobs-scraper',
280
+ description: 'Search official German Federal Employment Agency (Bundesagentur fuer Arbeit) job vacancies, employers, and locations.',
281
+ inputSchema: {
282
+ type: 'object',
283
+ properties: {
284
+ searchQuery: { type: 'string', description: 'Job title, skill, or profession keyword.', default: 'Software Engineer' },
285
+ location: { type: 'string', description: 'City or region in Germany (e.g., Berlin, Munich).', default: 'Berlin' },
286
+ maxResults: { type: 'integer', description: 'Maximum job listings to return.', default: 25 }
287
+ },
288
+ required: []
289
+ }
290
+ },
222
291
  {
223
292
  name: 'fda_recalls_enforcement_monitor',
224
293
  actorSlug: 'gmpsignal~fda-recalls-enforcement',
@@ -233,14 +302,254 @@ const MCP_TOOL_DEFINITIONS = [
233
302
  }
234
303
  },
235
304
  {
236
- name: 'earthquake_monitor_usgs_emsc_afad',
237
- actorSlug: 'gmpsignal~earthquake-monitor-usgs-emsc-afad',
238
- description: 'Track cross-verified global and regional seismic events in real time across USGS, EMSC, and AFAD networks.',
305
+ name: 'njuskalo_croatia_classifieds_scraper',
306
+ actorSlug: 'gmpsignal~njuskalo-scraper',
307
+ description: 'Extract marketplace, automotive, and real estate listings from Njuskalo.hr in Croatia.',
239
308
  inputSchema: {
240
309
  type: 'object',
241
310
  properties: {
242
- minMagnitude: { type: 'string', description: 'Minimum Richter magnitude threshold (e.g., "3.0", "4.5").', default: '4.5' },
243
- maxResults: { type: 'integer', description: 'Maximum seismic events to return.', default: 25 }
311
+ query: { type: 'string', description: 'Search keyword on Njuskalo.hr.', default: 'iphone' },
312
+ maxItems: { type: 'integer', description: 'Maximum listings to return.', default: 25 }
313
+ },
314
+ required: []
315
+ }
316
+ },
317
+ {
318
+ name: 'bolha_slovenia_classifieds_scraper',
319
+ actorSlug: 'gmpsignal~bolha-scraper',
320
+ description: 'Extract marketplace, automotive, and real estate listings from Bolha.com in Slovenia.',
321
+ inputSchema: {
322
+ type: 'object',
323
+ properties: {
324
+ query: { type: 'string', description: 'Search keyword on Bolha.com.', default: 'macbook' },
325
+ maxItems: { type: 'integer', description: 'Maximum listings to return.', default: 25 }
326
+ },
327
+ required: []
328
+ }
329
+ },
330
+ {
331
+ name: 'olx_bosnia_marketplace_scraper',
332
+ actorSlug: 'gmpsignal~olx-ba-scraper',
333
+ description: 'Extract vehicles, real estate, and consumer goods listings from OLX.ba in Bosnia and Herzegovina.',
334
+ inputSchema: {
335
+ type: 'object',
336
+ properties: {
337
+ query: { type: 'string', description: 'Search keyword on OLX.ba.', default: 'golf' },
338
+ maxItems: { type: 'integer', description: 'Maximum listings to return.', default: 25 }
339
+ },
340
+ required: []
341
+ }
342
+ },
343
+ {
344
+ name: 'turkey_crypto_exchange_prices_monitor',
345
+ actorSlug: 'gmpsignal~turkey-crypto-exchange-prices',
346
+ description: 'Monitor TRY and USDT cryptocurrency trading pairs, 24h volume, and order book spreads across Turkish crypto exchanges (BtcTurk, Paribu).',
347
+ inputSchema: {
348
+ type: 'object',
349
+ properties: {
350
+ quoteCurrency: { type: 'string', description: 'Quote currency filter (TRY, USDT, ALL).', default: 'TRY' },
351
+ maxResults: { type: 'integer', description: 'Maximum ticker records to return.', default: 50 }
352
+ },
353
+ required: []
354
+ }
355
+ },
356
+ {
357
+ name: 'halooglasi_serbia_classifieds_scraper',
358
+ actorSlug: 'gmpsignal~halooglasi-serbia-scraper',
359
+ description: 'Extract real estate, apartments, and automotive classifieds from HaloOglasi.com in Serbia.',
360
+ inputSchema: {
361
+ type: 'object',
362
+ properties: {
363
+ category: { type: 'string', description: 'Category path or keyword on HaloOglasi.', default: 'nekretnine' },
364
+ maxItems: { type: 'integer', description: 'Maximum listings to return.', default: 25 }
365
+ },
366
+ required: []
367
+ }
368
+ },
369
+ {
370
+ name: 'kupujemprodajem_serbia_marketplace_scraper',
371
+ actorSlug: 'gmpsignal~kupujemprodajem-scraper',
372
+ description: 'Search and extract product listings, prices, and seller details from KupujemProdajem.com in Serbia.',
373
+ inputSchema: {
374
+ type: 'object',
375
+ properties: {
376
+ keywords: { type: 'string', description: 'Search keyword on KupujemProdajem.', default: 'iphone' },
377
+ maxItems: { type: 'integer', description: 'Maximum listings to return.', default: 25 }
378
+ },
379
+ required: []
380
+ }
381
+ },
382
+ {
383
+ name: 'turkey_gold_and_bank_bullion_prices',
384
+ actorSlug: 'gmpsignal~turkey-gold-prices',
385
+ description: 'Fetch live Turkish gold prices (Gram, Quarter, Half, Republic, Ons) and compare buy/sell spreads across 35 commercial banks.',
386
+ inputSchema: {
387
+ type: 'object',
388
+ properties: {
389
+ includeBanks: { type: 'boolean', description: 'Include 35 bank gold buy/sell spread comparisons.', default: true }
390
+ },
391
+ required: []
392
+ }
393
+ },
394
+ {
395
+ name: 'turkey_weather_mgm_official_forecast',
396
+ actorSlug: 'gmpsignal~turkey-weather-mgm-official',
397
+ description: 'Retrieve official Turkish State Meteorological Service (MGM) current weather observations and 5-day forecasts across 81 provinces.',
398
+ inputSchema: {
399
+ type: 'object',
400
+ properties: {
401
+ provinces: { type: 'array', items: { type: 'string' }, description: 'List of Turkish provinces (e.g., istanbul, ankara, izmir, antalya).', default: ['istanbul', 'ankara', 'izmir'] }
402
+ },
403
+ required: []
404
+ }
405
+ },
406
+ {
407
+ name: 'europe_mediterranean_earthquakes_emsc',
408
+ actorSlug: 'gmpsignal~europe-mediterranean-earthquakes-emsc-official-data',
409
+ description: 'Fetch real-time European and Mediterranean seismic events, epicenter coordinates, depths, and magnitudes from EMSC.',
410
+ inputSchema: {
411
+ type: 'object',
412
+ properties: {
413
+ minMagnitude: { type: 'number', description: 'Minimum earthquake magnitude.', default: 2.5 },
414
+ maxResults: { type: 'integer', description: 'Maximum seismic events to return.', default: 30 }
415
+ },
416
+ required: []
417
+ }
418
+ },
419
+ {
420
+ name: 'islamic_prayer_times_worldwide_calendars',
421
+ actorSlug: 'gmpsignal~islamic-prayer-times-worldwide-monthly-calendars',
422
+ description: 'Calculate daily and monthly astronomical Islamic prayer times (Fajr, Sunrise, Dhuhr, Asr, Maghrib, Isha) and Qibla direction for any global city.',
423
+ inputSchema: {
424
+ type: 'object',
425
+ properties: {
426
+ city: { type: 'string', description: 'Target city name (e.g., Istanbul, London, Mecca).', default: 'Istanbul' },
427
+ country: { type: 'string', description: 'Target country name.', default: 'Turkey' }
428
+ },
429
+ required: []
430
+ }
431
+ },
432
+ {
433
+ name: 'turkey_on_duty_pharmacies_directory',
434
+ actorSlug: 'gmpsignal~turkey-on-duty-pharmacies-nobetci-eczane-daily',
435
+ description: 'Find daily emergency on-duty pharmacies with addresses, phone numbers, and map coordinates across provinces and districts.',
436
+ inputSchema: {
437
+ type: 'object',
438
+ properties: {
439
+ city: { type: 'string', description: 'Province name (e.g., istanbul, ankara, izmir).', default: 'istanbul' },
440
+ district: { type: 'string', description: 'Optional district filter (e.g., kadikoy, besiktas).', default: '' }
441
+ },
442
+ required: []
443
+ }
444
+ },
445
+ {
446
+ name: 'tcmb_official_central_bank_fx_rates',
447
+ actorSlug: 'gmpsignal~tcmb-exchange-rates-official-turkish-central-bank-fx',
448
+ description: 'Fetch official Central Bank (TCMB) daily foreign exchange buying, selling, bank-note, and cross rates.',
449
+ inputSchema: {
450
+ type: 'object',
451
+ properties: {
452
+ currencies: { type: 'array', items: { type: 'string' }, description: 'ISO currency codes (e.g., USD, EUR, GBP, CHF, JPY).', default: ['USD', 'EUR', 'GBP'] }
453
+ },
454
+ required: []
455
+ }
456
+ },
457
+ {
458
+ name: 'turkey_fuel_prices_81_provinces_daily',
459
+ actorSlug: 'gmpsignal~turkey-fuel-prices-81-provinces-daily-benzin-motorin-lpg',
460
+ description: 'Retrieve daily retail gasoline, diesel, and autogas (LPG) pump prices across all 81 provinces.',
461
+ inputSchema: {
462
+ type: 'object',
463
+ properties: {
464
+ provinces: { type: 'array', items: { type: 'string' }, description: 'Provinces to query (e.g., istanbul, ankara, izmir).', default: ['istanbul', 'ankara', 'izmir'] }
465
+ },
466
+ required: []
467
+ }
468
+ },
469
+ {
470
+ name: 'turkey_car_rental_prices_index',
471
+ actorSlug: 'gmpsignal~turkey-car-rental-prices-city-airport-index',
472
+ description: 'Compare daily car rental fleet prices, vehicle classes, transmission types, and supplier ratings across airports and cities.',
473
+ inputSchema: {
474
+ type: 'object',
475
+ properties: {
476
+ locations: { type: 'array', items: { type: 'string' }, description: 'Pickup locations or airports (e.g., istanbul, antalya).', default: ['istanbul'] }
477
+ },
478
+ required: []
479
+ }
480
+ },
481
+ {
482
+ name: 'turkey_hotels_explorer_ratings_amenities',
483
+ actorSlug: 'gmpsignal~turkey-hotels-explorer-ratings-amenities',
484
+ description: 'Extract hotel nightly rates, guest review scores, star ratings, board types, and amenities across Turkish destinations.',
485
+ inputSchema: {
486
+ type: 'object',
487
+ properties: {
488
+ cities: { type: 'array', items: { type: 'string' }, description: 'Target destination cities (e.g., istanbul, antalya, bodrum).', default: ['istanbul'] },
489
+ maxHotelsPerCity: { type: 'integer', description: 'Maximum hotels to return per city.', default: 25 }
490
+ },
491
+ required: []
492
+ }
493
+ },
494
+ {
495
+ name: 'turkey_earthquakes_afad_official_feed',
496
+ actorSlug: 'gmpsignal~turkey-earthquakes-afad-official-data',
497
+ description: 'Retrieve official AFAD (Disaster and Emergency Management Authority) real-time earthquake records across Turkey and neighboring regions.',
498
+ inputSchema: {
499
+ type: 'object',
500
+ properties: {
501
+ minMagnitude: { type: 'number', description: 'Minimum earthquake magnitude filter.', default: 2.0 },
502
+ maxResults: { type: 'integer', description: 'Maximum earthquake events to return.', default: 30 }
503
+ },
504
+ required: []
505
+ }
506
+ },
507
+ {
508
+ name: 'turkey_domestic_flight_prices_aggregator',
509
+ actorSlug: 'gmpsignal~turkey-domestic-flight-prices',
510
+ description: 'Compare domestic and regional airline ticket fares, departure/arrival times, baggage allowances, and carriers (THY, Pegasus, AJet).',
511
+ inputSchema: {
512
+ type: 'object',
513
+ properties: {
514
+ origin: { type: 'string', description: 'Origin city or airport slug (e.g., istanbul).', default: 'istanbul' },
515
+ destination: { type: 'string', description: 'Destination city or airport slug (e.g., izmir, antalya).', default: 'izmir' }
516
+ },
517
+ required: []
518
+ }
519
+ },
520
+ {
521
+ name: 'social_community_forum_entries_scraper',
522
+ actorSlug: 'gmpsignal~eksi-sozluk-scraper-entries-trending',
523
+ description: 'Extract trending discussion topics, user entries, favorite counts, and community sentiment data.',
524
+ inputSchema: {
525
+ type: 'object',
526
+ properties: {
527
+ includeTrending: { type: 'boolean', description: 'Scrape current trending topics.', default: true },
528
+ maxEntriesPerTopic: { type: 'integer', description: 'Maximum entries per topic.', default: 20 }
529
+ },
530
+ required: []
531
+ }
532
+ },
533
+ {
534
+ name: 'turkey_greek_islands_ferry_schedules',
535
+ actorSlug: 'gmpsignal~turkey-greek-islands-ferry-schedules',
536
+ description: 'Fetch maritime ferry timetables, operators, sailing durations, and ticket prices across Aegean, Marmara, and Greek Island routes.',
537
+ inputSchema: {
538
+ type: 'object',
539
+ properties: {
540
+ routes: { type: 'array', items: { type: 'string' }, description: 'Route slugs (e.g., yenikapi-mudanya, bodrum-kos).', default: ['yenikapi-mudanya'] }
541
+ },
542
+ required: []
543
+ }
544
+ },
545
+ {
546
+ name: 'turkey_bus_routes_and_ticket_prices',
547
+ actorSlug: 'gmpsignal~turkey-bus-routes-prices',
548
+ description: 'Extract intercity bus schedules, coach operators, departure/arrival terminals, seat configurations, and TRY ticket prices across Turkey.',
549
+ inputSchema: {
550
+ type: 'object',
551
+ properties: {
552
+ routes: { type: 'array', items: { type: 'string' }, description: 'Intercity route pairs (e.g., istanbul-ankara, izmir-antalya).', default: ['istanbul-ankara'] }
244
553
  },
245
554
  required: []
246
555
  }
@@ -332,7 +641,7 @@ async function handleJsonRpcMessage(message) {
332
641
  },
333
642
  serverInfo: {
334
643
  name: 'gmpsignal-mcp-server',
335
- version: '1.1.0'
644
+ version: '1.2.0'
336
645
  }
337
646
  });
338
647
  return;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gmpsignal-mcp",
3
- "version": "1.1.0",
3
+ "version": "1.2.0",
4
4
  "description": "Official Model Context Protocol (MCP) Server & CLI Launcher for the GMPSignal 40-Actor Enterprise Data, Quantitative Crypto, Prediction Markets, B2B Enrichment, KYB/Sanctions, Cybersecurity & Regulatory Suite on Apify.",
5
5
  "type": "module",
6
6
  "main": "./index.mjs",