Adaga solutions — Data APIs Toolbox
12 pay-per-event data APIs: Maps, TikTok, Instagram, YouTube, LinkedIn, RAG, reviews, fuel, AEO.
使うべきか
品質と安全性
ツール定義とプロトコルへの準拠に関する自動分析に基づいています。
コンテキストコスト
これは、サーバーのツールがモデルのコンテキストに読み込まれるたびに消費されるおおよそのトークン数です。数が多いほど、ほかのタスクに使える注意が減ります。
インストール
ワンクリックインストール
これを `claude_desktop_config.json` ファイルに追加してください:
{
"mcpServers": {
"adaga-solutions-toolbox": {
"url": "https://adagasolutions.lu/mcp"
}
}
}リモートエンドポイント
https://adagasolutions.lu/mcpstreamable-httpできること
ツール一覧
ツール(13)
🟢local_presence_audit(query, websiteUrl, maxReviews, language, dryRun, ...)
Audit any local business's online presence in one run: Google Business Profile data (rating, review count, category, contact), recent reviews with urgency classification and owner-response detection, website AI-readiness scan (llms.txt, JSON-LD, robots.txt AI-crawler rules), a transparent presence score /100, and ready-to-use deliverables (publishable llms.txt, LocalBusiness JSON-LD, AI-drafted review responses, prioritized action plan). Use when you need to audit a local business before selling it marketing services, or to check whether ChatGPT, Perplexity and Gemini can 'see' a business. Pricing: $1.00 per run + $0.50 per business audited.
入力スキーマ
{
"type": "object",
"properties": {
"query": {
"title": "Business search query",
"type": "string",
"description": "Business name + city used to find its Google Maps profile (e.g. 'Boulangerie Paul Mersch' or 'restaurant Esch-sur-Alzette'). The first, most relevant place is audited. Optional if websiteUrl alone is enough for you.",
"prefill": "restaurant Esch-sur-Alzette",
"editor": "textfield"
},
"websiteUrl": {
"title": "Business website URL",
"type": "string",
"description": "Full URL of the business website (e.g. https://example.lu). Scanned without a browser for AI-readiness: JSON-LD structured data, LocalBusiness schema, meta description, H1, Open Graph, /llms.txt, and robots.txt rules for AI crawlers (GPTBot, ClaudeBot, PerplexityBot, Google-Extended, CCBot).",
"prefill": "https://adagasolutions.lu",
"editor": "textfield"
},
"maxReviews": {
"title": "Max reviews to analyze",
"type": "integer",
"description": "Number of most recent Google reviews to scrape and classify (urgency detection, owner-response check). Between 1 and 30.",
"default": 15,
"minimum": 1,
"maximum": 30,
"prefill": 5,
"editor": "number"
},
"language": {
"title": "Interface language",
"type": "string",
"description": "Google Maps interface language code (fr, en, de...). Affects localized labels parsing.",
"default": "fr",
"editor": "textfield"
},
"dryRun": {
"title": "Dry run (no billing events)",
"type": "boolean",
"description": "When true, the actor runs fully but skips all pay-per-event charges. Use it for testing and integration QA.",
"default": false,
"prefill": true,
"editor": "checkbox"
},
"proxyConfiguration": {
"title": "Proxy configuration",
"type": "object",
"description": "Apify proxy settings. Residential proxies are strongly recommended — Google Maps blocks datacenter IPs. Defaults to RESIDENTIAL.",
"prefill": {
"useApifyProxy": true,
"apifyProxyGroups": [
"RESIDENTIAL"
]
},
"editor": "proxy"
}
},
"required": [],
"additionalProperties": true
}🟢google_maps_scraper(searchQuery, queries, maxResults, language, includeReviews, ...)
Extract local business data from Google Maps with this scraper: names, addresses, phones, ratings, review counts, websites, GPS coordinates. Use when you need lead lists, competitor analysis or market research for any city or search query. Returns an array of business objects. Pricing: $1.00 per run + $0.03 per business scraped.
入力スキーマ
{
"type": "object",
"properties": {
"searchQuery": {
"title": "Search Query",
"type": "string",
"description": "What to search on Google Maps (e.g., 'restaurants Paris', 'plumbers London', 'hotels New York')",
"editor": "textfield",
"prefill": "restaurants Paris"
},
"queries": {
"title": "Multiple Search Queries",
"type": "array",
"description": "Array of search queries to scrape. Use this for multiple searches in one run.",
"editor": "json",
"prefill": [
"restaurants Paris",
"hotels Lyon"
]
},
"maxResults": {
"title": "Maximum Results",
"type": "integer",
"description": "Maximum number of businesses to extract per query",
"default": 20,
"minimum": 1,
"maximum": 500
},
"language": {
"title": "Language",
"type": "string",
"description": "Language code for Google Maps results (e.g., 'fr', 'en', 'de', 'es')",
"default": "fr",
"editor": "textfield"
},
"includeReviews": {
"title": "Include Reviews",
"type": "boolean",
"description": "Whether to extract user reviews for each business",
"default": true
},
"maxReviews": {
"title": "Max Reviews per Business",
"type": "integer",
"description": "Maximum number of reviews to extract per business",
"default": 5,
"minimum": 0,
"maximum": 100
},
"proxyConfiguration": {
"title": "Proxy configuration",
"type": "object",
"description": "Proxy settings. Residential proxies are recommended for Google Maps.",
"editor": "proxy",
"prefill": {
"useApifyProxy": true,
"apifyProxyGroups": [
"RESIDENTIAL"
]
}
}
},
"required": [],
"additionalProperties": true
}⚪tiktok_scraper(profiles, hashtags, maxVideosPerProfile)
Scrape TikTok profiles and videos: follower counts, likes, video metadata and stats. Use when researching influencers, tracking social engagement or analyzing TikTok content. Returns profile and video objects. Pricing: $0.01 per profile + $0.002 per video.
入力スキーマ
{
"type": "object",
"properties": {
"profiles": {
"title": "TikTok Profiles",
"type": "array",
"description": "List of TikTok usernames or profile URLs to scrape (e.g., ['mrbeast', 'https://www.tiktok.com/@charlidamelio'])",
"editor": "stringList",
"prefill": [
"mrbeast",
"charlidamelio"
]
},
"hashtags": {
"title": "Hashtags",
"type": "array",
"description": "List of hashtags to scrape trending videos from (without #)",
"editor": "stringList"
},
"maxVideosPerProfile": {
"title": "Max Videos per Profile",
"type": "integer",
"description": "Maximum number of videos to extract per profile",
"default": 10,
"minimum": 0,
"maximum": 100
}
},
"required": [
"profiles"
],
"additionalProperties": true
}⚪instagram_scraper(profiles)
Scrape Instagram profiles and hashtag posts: followers, posts, engagement metrics. Use when vetting influencers, monitoring brands or tracking competitors on Instagram. Returns profile objects with recent posts. Pricing: $0.01 per profile scraped.
入力スキーマ
{
"type": "object",
"properties": {
"profiles": {
"title": "Instagram profiles",
"type": "array",
"description": "List of Instagram usernames to scrape (without @). Example: [\"nasa\", \"cristiano\"]",
"editor": "json",
"prefill": [
"nasa"
]
}
},
"required": [
"profiles"
],
"additionalProperties": true
}⚪youtube_scraper(videoUrls, channelUrls, searchQueries, maxResults)
Scrape YouTube videos and channels: views, subscribers, metadata, descriptions. Use when researching content trends, analyzing creators or building YouTube datasets. Returns video and channel objects. Pricing: $0.002 per video scraped.
入力スキーマ
{
"type": "object",
"properties": {
"videoUrls": {
"title": "Video URLs",
"type": "array",
"description": "YouTube video URLs or IDs to scrape. Supports youtube.com/watch, youtu.be, and /shorts/ formats.",
"editor": "stringList",
"prefill": [
"https://www.youtube.com/watch?v=dQw4w9WgXcQ"
]
},
"channelUrls": {
"title": "Channel URLs",
"type": "array",
"description": "YouTube channel URLs to scrape. Supports @handle, /channel/, and /c/ formats.",
"editor": "stringList",
"prefill": []
},
"searchQueries": {
"title": "Search Queries",
"type": "array",
"description": "Search YouTube for videos matching these queries. Returns top results with full video data.",
"editor": "stringList",
"prefill": []
},
"maxResults": {
"title": "Max Results per Search",
"type": "integer",
"description": "Maximum number of results per search query (1-50)",
"default": 10,
"minimum": 1,
"maximum": 50,
"editor": "number",
"prefill": 10
}
},
"required": [],
"additionalProperties": true
}🟢linkedin_profile_scraper(profileUrls, includeSkills, includeExperience)
Extract public LinkedIn profile data with this scraper: name, headline, experience, company. Use when enriching B2B leads or doing recruiting research on LinkedIn. Returns structured profile objects. Pricing: $0.02 per profile scraped.
入力スキーマ
{
"type": "object",
"properties": {
"profileUrls": {
"title": "LinkedIn Profile URLs",
"type": "array",
"description": "List of LinkedIn profile URLs to scrape (e.g., ['https://www.linkedin.com/in/williamhgates/'])",
"editor": "stringList",
"prefill": [
"https://www.linkedin.com/in/williamhgates/"
]
},
"includeSkills": {
"title": "Include Skills",
"type": "boolean",
"description": "Whether to extract the skills section",
"default": true
},
"includeExperience": {
"title": "Include Experience",
"type": "boolean",
"description": "Whether to extract work experience details",
"default": true
}
},
"required": [
"profileUrls"
],
"additionalProperties": true
}🟢rag_web_browser(query, urls, maxResults, outputFormat, lang)
Fetch web pages and convert them into clean LLM-ready text for RAG pipelines. Use when an agent needs readable page content from the web without HTML noise — a lightweight browser alternative for retrieval. Returns per-page cleaned text with metadata. Pricing: $0.003 per page crawled.
入力スキーマ
{
"type": "object",
"properties": {
"query": {
"title": "Search query",
"type": "string",
"description": "Google search query. Top results are fetched and extracted. Example: 'best crm software 2026'",
"editor": "textfield",
"prefill": "apify actor monetization"
},
"urls": {
"title": "URLs to extract",
"type": "array",
"description": "Direct page URLs to extract content from (instead of searching). Example: [\"https://example.com/article\"]",
"editor": "json"
},
"maxResults": {
"title": "Max results",
"type": "integer",
"description": "Maximum number of search results / pages to process",
"default": 10,
"minimum": 1,
"maximum": 50
},
"outputFormat": {
"title": "Output format",
"type": "string",
"description": "Content format: markdown (best for LLM/RAG) or plain text",
"editor": "select",
"enum": [
"markdown",
"text"
],
"enumTitles": [
"Markdown",
"Plain text"
],
"default": "markdown"
},
"lang": {
"title": "Search language",
"type": "string",
"description": "Language code for search results (e.g. en, fr, de)",
"editor": "textfield",
"default": "en"
}
},
"required": [],
"additionalProperties": true
}🟡api_breaking_change_radar(apis, webhookUrl, dryRun, maxApis)
Monitor public APIs and detect breaking changes by diffing OpenAPI specs and classifying changelogs — a radar for the APIs you depend on. Use when you need early warning before an API change breaks your integration. Returns change events classified by severity. Pricing: $0.50 per run + $0.005 per API checked.
入力スキーマ
{
"type": "object",
"properties": {
"apis": {
"title": "APIs to monitor",
"description": "List of APIs to watch. For type 'openapi', url must point to a raw OpenAPI spec (JSON or YAML). For type 'github-releases', url must be 'owner/repo' or a GitHub repo URL. For type 'rss', url must be an RSS/Atom changelog feed.",
"type": "array",
"editor": "json",
"prefill": [
{
"name": "github",
"type": "openapi",
"url": "https://raw.githubusercontent.com/github/rest-api-description/main/descriptions/api.github.com/api.github.com.json"
},
{
"name": "stripe",
"type": "openapi",
"url": "https://raw.githubusercontent.com/stripe/openapi/master/openapi/spec3.json"
}
],
"items": {
"type": "object",
"required": [
"name",
"type",
"url"
],
"properties": {
"name": {
"type": "string",
"title": "API name",
"description": "Short identifier, e.g. 'stripe' or 'github'."
},
"type": {
"type": "string",
"title": "Source type",
"enum": [
"openapi",
"github-releases",
"rss"
],
"description": "openapi = OpenAPI spec diffed with oasdiff (most precise). github-releases = GitHub releases classified by rules. rss = RSS/Atom changelog feed classified by rules."
},
"url": {
"type": "string",
"title": "Source URL",
"description": "Raw spec URL, 'owner/repo', or feed URL."
},
"owner": {
"type": "string",
"title": "Owner (optional)",
"description": "Team or person responsible for this API on your side — copied into output events for routing."
}
}
}
},
"webhookUrl": {
"title": "Webhook URL (optional)",
"description": "POST endpoint called at the end of each run with a JSON summary (counts by class + top critical changes). Slack/Discord/Teams incoming-webhook compatible payload is included.",
"type": "string",
"editor": "textfield"
},
"dryRun": {
"title": "Dry run (no billing)",
"description": "When true, the actor performs the full detection but does NOT charge any pay-per-event fee. Use for testing your configuration.",
"type": "boolean",
"default": true,
"editor": "checkbox"
},
"maxApis": {
"title": "Max APIs per run",
"description": "Safety cap on the number of APIs processed in one run.",
"type": "integer",
"default": 25,
"minimum": 1,
"maximum": 500
}
},
"required": [
"apis"
],
"additionalProperties": true
}⚪review_radar(placeUrls, query, maxPlaces, maxReviewsPerPlace, alertThreshold, ...)
Monitor Google Maps reviews and detect only NEW ones, with Bayesian urgency classification and optional Slack alerts — your reputation radar. Use when tracking review activity for local businesses. Returns review objects flagged isNew with urgency scores. Pricing: $0.25 per run + $0.01 per new review.
入力スキーマ
{
"type": "object",
"properties": {
"placeUrls": {
"title": "Place URLs",
"type": "array",
"description": "Google Maps place URLs (/maps/place/...) to monitor",
"editor": "stringList",
"default": []
},
"query": {
"title": "Search query (alternative)",
"type": "string",
"description": "Google Maps search, e.g. 'restaurants Esch-sur-Alzette' — takes the first maxPlaces results. Ignored if placeUrls is non-empty.",
"editor": "textfield",
"prefill": "restaurant Esch-sur-Alzette"
},
"maxPlaces": {
"title": "Max places",
"type": "integer",
"description": "How many businesses to monitor (from placeUrls or the search query)",
"editor": "number",
"default": 3,
"prefill": 1,
"minimum": 1,
"maximum": 20
},
"maxReviewsPerPlace": {
"title": "Max reviews per place",
"type": "integer",
"description": "How many recent reviews to scrape per business",
"editor": "number",
"default": 10,
"prefill": 5,
"minimum": 1,
"maximum": 50
},
"alertThreshold": {
"title": "Alert threshold (stars)",
"type": "integer",
"description": "New reviews with this rating or lower trigger a Slack alert",
"editor": "number",
"default": 3,
"minimum": 1,
"maximum": 5
},
"dryRun": {
"title": "Dry run",
"type": "boolean",
"description": "Testing mode: skips Slack alerts, state writes, and billing events",
"editor": "checkbox",
"default": false,
"prefill": true
},
"slackConnector": {
"title": "Slack connector (optional)",
"description": "MCP connector to your Slack workspace. Authorize once in Apify Console → Settings → Integrations. The Actor only sees a connector ID. Leave empty to skip alerts (dataset only).",
"type": "string",
"resourceType": "mcpConnector",
"mcpServers": [
{
"url": "*",
"tools": {
"required": [
"*message*",
"*chat*",
"*post*",
"*send*"
],
"readOnly": false
}
}
]
},
"proxyConfiguration": {
"title": "Proxy configuration",
"type": "object",
"description": "A residential proxy is strongly recommended — Google Maps blocks datacenter IPs.",
"editor": "proxy"
}
},
"required": [],
"additionalProperties": true
}🟢review_pitch_generator(placeUrls, query, maxPlaces, maxReviewsPerPlace, worstThreshold, ...)
Generate pre-sales reports from a business's worst Google Maps reviews: HTML report plus ready pitch. Use when doing agency outbound and you want to show prospects their visible bad reviews. Returns pitch text and a shareable report URL per business. Pricing: $0.25 per run + $0.10 per pitch generated.
入力スキーマ
{
"type": "object",
"properties": {
"placeUrls": {
"title": "Place URLs",
"type": "array",
"description": "Google Maps place URLs (/maps/place/...) of the prospects to analyze",
"editor": "stringList",
"default": []
},
"query": {
"title": "Search query (alternative)",
"type": "string",
"description": "Google Maps search, e.g. 'restaurants Esch-sur-Alzette' — takes the first maxPlaces results. Ignored if placeUrls is non-empty.",
"editor": "textfield",
"prefill": "restaurants Luxembourg"
},
"maxPlaces": {
"title": "Max places",
"type": "integer",
"description": "How many prospects to analyze",
"editor": "number",
"default": 5,
"prefill": 2,
"minimum": 1,
"maximum": 20
},
"maxReviewsPerPlace": {
"title": "Max reviews per place",
"type": "integer",
"description": "How many recent reviews to scan per business when looking for the worst",
"editor": "number",
"default": 15,
"prefill": 5,
"minimum": 5,
"maximum": 50
},
"worstThreshold": {
"title": "Worst threshold (stars)",
"type": "integer",
"description": "Reviews at or below this rating are included in the pitch report",
"editor": "number",
"default": 3,
"minimum": 1,
"maximum": 5
},
"mode": {
"title": "Mode",
"type": "string",
"description": "generate = scrape + pitch + delivery. check-engagement = IMAP reply watch only (no Maps scraping, runs even under Google rate-limit)",
"editor": "select",
"enum": [
"generate",
"check-engagement"
],
"default": "generate"
},
"telemetryEndpoint": {
"title": "Telemetry endpoint (optional)",
"type": "string",
"description": "Base URL of our tracking receiver (e.g. https://track.example.com). Embeds an HMAC-signed 1px pixel in each HTML report; opens trigger CONVERSION_RECORDED.",
"editor": "textfield"
},
"vertical": {
"title": "Vertical",
"type": "string",
"description": "Sector template for pitch/report: chr (hotels/restaurants), immobilier, sante, artisanat",
"editor": "select",
"enum": [
"chr",
"immobilier",
"sante",
"artisanat"
],
"default": "chr"
},
"emailMap": {
"title": "Email map (optional)",
"type": "object",
"description": "Mapping place name or Maps URL -> recipient email for outbound delivery. Only used when sendApproval is true.",
"editor": "json"
},
"smtpUser": {
"title": "SMTP user (optional, secret)",
"type": "string",
"description": "Gmail address used to send reports (requires an app password). Secret input.",
"editor": "textfield",
"isSecret": true
},
"smtpPassword": {
"title": "SMTP app password (optional, secret)",
"type": "string",
"description": "Gmail app password for the SMTP user. Secret input, never logged.",
"editor": "textfield",
"isSecret": true
},
"sendApproval": {
"title": "Approve sending (required for outbound)",
"type": "boolean",
"description": "Explicit approval gate: without it, NO email is ever sent (reports are generated only)",
"editor": "checkbox",
"default": false
},
"maxEmailsPerRun": {
"title": "Max emails per run",
"type": "integer",
"description": "Rate limit: maximum reports emailed in one run (plus 20s inter-send delay and a 20/day global cap)",
"editor": "number",
"default": 5,
"minimum": 1,
"maximum": 20
},
"dryRun": {
"title": "Dry run",
"type": "boolean",
"description": "Testing mode: skips report publishing and billing events",
"editor": "checkbox",
"default": false,
"prefill": true
},
"proxyConfiguration": {
"title": "Proxy configuration",
"type": "object",
"description": "A residential proxy is strongly recommended — Google Maps blocks datacenter IPs.",
"editor": "proxy"
}
},
"required": [],
"additionalProperties": true
}🟢france_fuel_prices(departement, carburant)
Get live fuel prices for about 10,000 gas stations across France (official open data, Hermès Revenu API). Use when comparing fuel prices, estimating route costs or building price datasets for France. Returns station objects with prices per fuel type. Pricing: $0.20 per run + $0.01 per 1k stations.
入力スキーマ
{
"type": "object",
"properties": {
"departement": {
"title": "Département (optionnel)",
"type": "string",
"description": "Filtrer par code département (ex: '75' pour Paris, '69' pour Lyon). Laissez vide pour toute la France.",
"editor": "textfield"
},
"carburant": {
"title": "Type de carburant (optionnel)",
"type": "string",
"description": "Filtrer par type de carburant",
"editor": "select",
"enum": [
"",
"Gazole",
"SP95",
"SP98",
"E10",
"E85",
"GPLc"
],
"enumTitles": [
"Tous",
"Gazole",
"SP95",
"SP98",
"E10",
"E85",
"GPLc"
]
}
},
"required": [],
"additionalProperties": true
}⚪hotel_rate_monitoring
Monitor hotel rates across booking sources for revenue management. Use when tracking competitor hotel pricing or building rate intelligence. Returns rate observations per hotel and date. Micro-pricing per event.
入力スキーマ
{
"type": "object",
"properties": {},
"required": [],
"additionalProperties": true
}🟢aeo_ai_visibility_checker(url, generateLlmsTxt)
Check any website's AI visibility with a 7-criteria AEO audit: JSON-LD, llms.txt, AI bots in robots.txt and more. Use when you need to know if a site can be cited by ChatGPT, Perplexity or Claude — this checker returns a 0-7 score with exact fixes plus a generated llms.txt draft. FREE.
入力スキーマ
{
"type": "object",
"properties": {
"url": {
"title": "Website URL",
"description": "Full URL of the site to audit (e.g. https://example.lu). The checker fetches the homepage, /llms.txt and /robots.txt.",
"type": "string",
"editor": "textfield",
"prefill": "https://adagasolutions.lu"
},
"generateLlmsTxt": {
"title": "Generate llms.txt draft",
"description": "Also generate a ready-to-publish llms.txt draft for the audited site (delivered in the dataset and in the key-value store as llms.txt).",
"type": "boolean",
"default": true,
"editor": "checkbox"
}
},
"required": [
"url"
],
"additionalProperties": true
}コミュニティ
エビデンス