webdata-tools-mcp
You can run ten read-only web-data tools via Apify Actors to gather jobs, news, reviews, social mentions, contacts, property listings, and Shopify product data.
Search Google News for articles with real publisher URLs, dates, and related coverage (supports operators, site filters, country/language/timeframe).
Find companies hiring for given roles as a buying-intent signal from job-page URLs or search phrases.
Get all open jobs from company career pages (Greenhouse, Lever, Ashby, Workday, etc.) in one normalized format.
Search Indeed job listings across 9 countries with filters for location, job type, and date posted.
Get Trustpilot reviews, TrustScore, and company profile data filtered by stars, language, verified status, and date.
Get App Store and Google Play reviews with ratings, text, author, date, app version, developer reply, and sentiment.
Search Reddit posts and comments by keyword, subreddit, or user for brand and topic monitoring.
Find business emails, phones, addresses, and social profiles (LinkedIn, X, Facebook, Instagram, YouTube) on websites for lawful outreach.
Search German property listings on ImmoScout24 for rent or buy with price, area, rooms, address, energy class, and features.
Get products from any Shopify store with prices, sale prices, discounts, stock, variants, SKUs, images, and descriptions.
Every tool accepts optional extra_input and returns structured JSON; calls are read-only with a $0.50 spend cap by default.
Provides a tool to fetch App Store reviews, including review content and ratings.
Provides a tool to search Google News for articles, returning publisher URLs, dates, and related coverage.
Provides a tool to fetch Google Play reviews, including review content and ratings.
Provides a tool to retrieve open job postings from company career pages hosted on Greenhouse.
Provides a tool to search Indeed job listings across nine countries.
Provides a tool to search Reddit posts and comments by keyword or subreddit.
Provides a tool to fetch product data such as prices, discounts, stock, and variants from Shopify stores.
Provides a tool to fetch Trustpilot reviews, TrustScore, and company profile data.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@webdata-tools-mcpfind Trustpilot reviews of example.com from the last month"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
webdata-tools-mcp
An MCP server that gives AI agents ten web-data tools: job postings, hiring signals, Google News, Trustpilot and app-store reviews, Reddit mentions, website contacts, German property listings and Shopify products.
Each tool runs a ready-made Apify Actor and returns clean JSON. You pay Apify per result (about $1–3 per 1,000 results); there is no subscription and nothing is sent anywhere except Apify.
Tools
Tool | What it returns | Cost (approx.) | Actor |
| News articles with the publisher's real URL, date, related coverage | $2 / 1,000 articles | |
| Which companies are hiring for given roles (buying-intent signal) | 1¢ per company with a signal | |
| All open jobs from career pages (Greenhouse, Lever, Ashby, Workday, …) | $1 / 1,000 jobs | |
| Indeed listings in 9 countries | $3 / 1,000 jobs | |
| Reviews, TrustScore and company profile | $0.50 / 1,000 reviews | |
| App Store and Google Play reviews | $0.20 / 1,000 reviews | |
| Reddit posts and comments by keyword or subreddit | $1 / 1,000 items | |
| Emails, phones, socials from websites | $2 / 1,000 sites with contacts | |
| Rent/buy listings in Germany (ImmoScout24) | $1 / 1,000 listings | |
| Prices, discounts, stock, variants from Shopify stores | $1 / 1,000 products |
Every tool also takes an optional extra_input object for any other field the Actor documents.
Every result comes back as text and as structured content (tool, count, shown, truncated,
items), and every tool is marked read-only, so clients can run it without asking.
More about the tools: https://tacps126.github.io/mcp.html
Related MCP server: Steadyfetch agent tools
Setup
Create a free Apify account and copy your API token from Console → Settings → API & Integrations.
Add the server to your client. The token goes in
APIFY_TOKEN.
Claude Desktop / Cursor / Windsurf (mcpServers config):
{
"mcpServers": {
"webdata": {
"command": "npx",
"args": ["-y", "webdata-tools-mcp"],
"env": { "APIFY_TOKEN": "<your Apify token>" }
}
}
}Claude Code:
claude mcp add webdata -e APIFY_TOKEN=<your Apify token> -- npx -y webdata-tools-mcpRequires Node.js 18 or newer.
Try it
"Which of these companies are hiring data engineers right now? https://boards.greenhouse.io/stripe, https://jobs.lever.co/spotify"
"Show the 1 and 2 star Trustpilot reviews of example.com from the last 30 days and group the complaints."
"Find news from the last 7 days about open-source LLM licensing, with the real publisher links."
"Get contact emails for these 20 agency websites." (use only for lawful business outreach)
Settings
Environment variable | Default | Meaning |
| required | Your Apify API token |
|
| Spend cap per tool call; Apify stops the run when it is reached |
|
| How long one call may run (30 to 300) |
Cost safety
Every call is capped at $0.50 of Apify spend (
WEBDATA_MAX_CHARGE_USDchanges it). Apify stops the run when the cap is reached.max_itemsdefaults to small numbers (20–100) and has a hard maximum per tool.Long text fields are shortened to 600 characters, and one result is limited to about 60,000 characters, so a call cannot flood the agent's context.
No install: Apify's hosted MCP server
You can also use Apify's own server with these Actors selected, with nothing to install:
{
"mcpServers": {
"apify": { "url": "https://mcp.apify.com?tools=tacps126/google-news,tacps126/hiring-signals,tacps126/trustpilot-reviews" }
}
}It signs you in with OAuth. The tools take the Actors' raw input fields instead of the simplified arguments above.
Development
npm install
npm test # offline: mapping, errors, size limits, MCP handshake
node scripts/sync-actor-inputs.mjs # refresh test/fixtures from the published Actors
APIFY_TOKEN=... node scripts/smoke.mjs # live check, a few centstest/fixtures/actor-inputs.json lists the input fields of each published Actor; the tests fail if
a tool sends a field the Actor does not accept.
Responsible use
The Actors read publicly available pages. You are responsible for following each site's terms and the law that applies to you (GDPR, CAN-SPAM) when you use the data, especially contact details.
License
MIT
Available Tools
10 toolsfind_hiring_companiesFind companies hiring for given rolesARead-onlyIdempotent
Buying-intent signal: which companies are hiring for the roles you care about, how many roles, how fresh, and seniority/locations. Give target accounts (their jobs-page URLs on Greenhouse, Lever, Ashby, Workday, SmartRecruiters, Recruitee, Personio, Teamtailor) and/or job-search phrases to discover companies. Runs the Apify Actor tacps126/hiring-signals on your Apify account (about $0.01 per company with a matching signal; companies without one are free; spend per call is capped at $0.5).
| Name | Required | Description | Default |
|---|---|---|---|
| searches | No | Job-search phrases to discover companies you do not know yet, e.g. "head of security". | |
| companies | No | Target accounts' jobs-page URLs, e.g. "https://boards.greenhouse.io/stripe". | |
| locations | No | Keep roles in these locations. | |
| max_items | No | Maximum results to return (default 50, max 500). Cost scales with this. | |
| extra_input | No | Advanced: extra Actor input fields, merged over the defaults. | |
| role_keywords | No | A role counts when its title contains any of these words, e.g. ["data engineer","security"]. Empty = every role. | |
| posted_within_days | No | Only roles posted in the last N days. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | Yes | Name of the tool that produced the result. |
| count | Yes | Number of records the Actor returned. |
| items | Yes | The records. Long text fields are shortened to 600 characters. |
| shown | Yes | Number of records included in `items` (can be lower than count when the result is long). |
| truncated | Yes | True when records were left out to keep the result short; ask for fewer items. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only/idempotent/open-world, but the description goes further with billing and safety context: it runs a specific Apify Actor on the caller's own Apify account, costs ~$0.01 per company with a matching signal, companies without a signal are free, and spend is capped at $0.5 per call. That is exactly the cost/auth/limit disclosure annotations cannot provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the value proposition and the key scoping fact (which companies are hiring) before inputs and cost. It is a single dense paragraph; the 'Buying-intent signal' opener is slightly marketing-flavored, but little of the text is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, annotations covering the safety profile, and full schema description coverage, the description supplies everything else an agent needs: the two discovery modes, supported ATS sources, and the cost ceiling. Nothing required for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3 and the schema already documents all seven parameters. The description adds meaning by enumerating the supported ATS boards (Greenhouse, Lever, Ashby, Workday, SmartRecruiters, Recruitee, Personio, Teamtailor), which constrains what the 'companies' URL values may be — a modest but real addition.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource — discovering which companies are hiring — and enumerates the output dimensions (how many roles, freshness, seniority/locations), so the agent knows this returns companies rather than job listings. The 'discover companies you do not know yet' framing implicitly separates it from a single-company job fetch like get_company_jobs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains the two input modes clearly: pass target-account jobs-page URLs for known accounts, and/or job-search phrases to discover unknown companies. It gives context for when each mode applies but names no alternative sibling tool and states no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_website_contactsFind emails, phones and social profiles on websitesARead-onlyIdempotent
Finds business emails, phone numbers, addresses and social profiles (LinkedIn, X, Facebook, Instagram, YouTube) on any list of websites; it visits the contact and about pages itself. Use only for lawful business outreach (GDPR / CAN-SPAM). Runs the Apify Actor tacps126/contact-details on your Apify account (about $0.002 per website with contacts found; nothing found, no charge; spend per call is capped at $0.5).
| Name | Required | Description | Default |
|---|---|---|---|
| websites | Yes | Website addresses or domains, e.g. "apify.com". | |
| max_items | No | Maximum results to return (default 50, max 1000). Cost scales with this. | |
| extra_input | No | Advanced: extra Actor input fields, merged over the defaults. | |
| require_email | No | Drop sites where no email was found. | |
| max_pages_per_site | No | Pages read per website; contact, imprint and about pages are picked first. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | Yes | Name of the tool that produced the result. |
| count | Yes | Number of records the Actor returned. |
| items | Yes | The records. Long text fields are shortened to 600 characters. |
| shown | Yes | Number of records included in `items` (can be lower than count when the result is long). |
| truncated | Yes | True when records were left out to keep the result short; ask for fewer items. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive, open-world behavior, so safety is covered. The description goes further with genuinely useful operational detail: the backing Apify Actor, per-site pricing with no charge when nothing is found, and a $0.5 per-call spend cap. It still omits what a partial/failed crawl looks like, but the cost and execution model are well disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences that lead with what is found and where, then follow with legality and execution economics. Every clause carries information, though the second sentence packs legality, Actor identity, unit pricing, free-miss policy and a cap into one run-on that could be split.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need no explanation, and annotations cover the safety profile. The description supplies the remaining agent-relevant context (legal use, crawl behavior, cost model), leaving only minor gaps around error/partial-result handling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with websites, max_items, max_pages_per_site, require_email and extra_input all self-documented, including defaults, ranges and the cost-scaling note on max_items. The description adds no parameter-level meaning beyond this, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb (Finds) plus the exact resources (business emails, phone numbers, addresses, social profiles on named platforms) and mechanism (visits contact and about pages itself). This makes it trivially distinguishable from siblings like search_google_news or get_company_jobs, which are single-source retrieval tools rather than website contact scrapers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a usage constraint ('Use only for lawful business outreach (GDPR / CAN-SPAM)') and cost framing, which implies the appropriate context. However, it never names an alternative or states when a different sibling tool would be the better choice for a related need, so selection guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_app_reviewsGet App Store and Google Play reviewsARead-onlyIdempotent
Reviews from the Apple App Store and Google Play in one dataset: rating, text, author, date, app version, developer reply, sentiment. Mix both stores and several countries. Runs the Apify Actor tacps126/app-reviews on your Apify account (about $0.0002 per review; spend per call is capped at $0.5).
| Name | Required | Description | Default |
|---|---|---|---|
| apps | Yes | App Store / Google Play links, App Store ids ("id324684580") or Android package names ("com.spotify.music"). | |
| countries | No | Two-letter store countries, e.g. ["us","gb"]. | |
| max_items | No | Maximum results to return (default 100, max 2000). Cost scales with this. | |
| extra_input | No | Advanced: extra Actor input fields, merged over the defaults. | |
| star_ratings | No | Only these ratings, e.g. ["1","2"]. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | Yes | Name of the tool that produced the result. |
| count | Yes | Number of records the Actor returned. |
| items | Yes | The records. Long text fields are shortened to 600 characters. |
| shown | Yes | Number of records included in `items` (can be lower than count when the result is long). |
| truncated | Yes | True when records were left out to keep the result short; ask for fewer items. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnly, idempotent, non-destructive, openWorld), so the description is free to add operational context, which it does: it runs the Apify Actor tacps126/app-reviews on the caller's account, costs ~$0.0002 per review, and caps spend at $0.5 per call. That cost/execution detail is genuinely additive beyond the annotations, though latency and pagination behavior remain unstated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences that front-load what the dataset contains and then the execution/cost note. The 'Mix both stores and several countries' clause is slightly redundant with the opening clause but overall there is no wasted prose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description need not explain return values, and annotations carry the safety profile; the added cost and Actor-execution context rounds it out well. Minor gap: it doesn't reconcile the max_items ceiling with the $0.5 spend cap or mention result limits in practice.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters are already documented in the schema; baseline is 3. The description's mention of mixing stores and countries loosely maps to the countries parameter but adds no syntax or format detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Reviews from the Apple App Store and Google Play'), names the two data sources, and enumerates the returned fields. This is immediately distinguishable from the sibling get_trustpilot_reviews because the store sources are explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage ('Mix both stores and several countries') but never states when to prefer this tool over the similar sibling get_trustpilot_reviews or any exclusion criteria. Usage is inferable from the resource rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_company_jobsGet all open jobs from company career pagesARead-onlyIdempotent
All open jobs from company career pages in one normalized format (title, company, location, remote/hybrid, seniority, salary, apply URL, posted date). Paste career-page URLs from Greenhouse, Lever, Ashby, Workable, SmartRecruiters, Recruitee, Workday, Personio or Teamtailor; the board type is detected automatically. Runs the Apify Actor tacps126/jobs-harvester on your Apify account (about $0.001 per job; spend per call is capped at $0.5).
| Name | Required | Description | Default |
|---|---|---|---|
| max_items | No | Maximum results to return (default 50, max 500). Cost scales with this. | |
| extra_input | No | Advanced: extra Actor input fields, merged over the defaults. | |
| remote_only | No | Only remote jobs. | |
| title_includes | No | Keep jobs whose title contains any of these. | |
| career_page_urls | Yes | Career page URLs, e.g. "https://jobs.lever.co/spotify". | |
| location_includes | No | Keep jobs in these locations. | |
| posted_within_days | No | Only jobs posted in the last N days. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | Yes | Name of the tool that produced the result. |
| count | Yes | Number of records the Actor returned. |
| items | Yes | The records. Long text fields are shortened to 600 characters. |
| shown | Yes | Number of records included in `items` (can be lower than count when the result is long). |
| truncated | Yes | True when records were left out to keep the result short; ask for fewer items. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint, idempotentHint, destructiveHint=false, openWorldHint). The description adds genuinely new context beyond them: the tool runs the Apify Actor tacps126/jobs-harvester on the user's Apify account, costs about $0.001 per job, and spend is capped at $0.5 per call. That cost/ownership disclosure is exactly the kind of extra behavioral value that matters here.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences that are front-loaded with the outcome, then the input format, then the cost model; nothing is redundant. It is slightly list-heavy but every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a scraper with a full input schema, output schema, and annotations covering the safety profile, the description adds the missing operational context (provider support, auto-detection, cost and per-call cap). Only the explicit when-to-use-this-versus-siblings guidance is absent, which keeps it just shy of complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and an output schema exists, so the schema already documents all 7 parameters including defaults, ranges and cost scaling. The description adds no parameter-specific syntax or format detail beyond what the schema provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (get) and resource (all open jobs from company career pages) and names the nine supported board providers. It also enumerates the normalized output fields, which clearly separates it from siblings like search_indeed_jobs and find_hiring_companies without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear operational context: paste career-page URLs from a specific list of ATS providers and the board type is auto-detected, which tells the agent exactly what input this tool expects. However, it never explicitly contrasts itself against alternatives such as search_indeed_jobs or find_hiring_companies, so the choice between them is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_shopify_productsGet products from Shopify storesARead-onlyIdempotent
Products from any Shopify store: prices, sale prices, discounts, stock, variants, SKUs, images and descriptions. Whole stores, collections or single products. Useful for price and stock monitoring. Runs the Apify Actor tacps126/shopify-products on your Apify account (about $0.001 per product; spend per call is capped at $0.5).
| Name | Required | Description | Default |
|---|---|---|---|
| stores | Yes | Store domains, collection links or product links, e.g. "allbirds.com". | |
| keywords | No | Only products matching any of these words. | |
| max_items | No | Maximum results to return (default 100, max 1000). Cost scales with this. | |
| extra_input | No | Advanced: extra Actor input fields, merged over the defaults. | |
| only_on_sale | No | Only products with a sale price. | |
| only_available | No | Only products that are in stock. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | Yes | Name of the tool that produced the result. |
| count | Yes | Number of records the Actor returned. |
| items | Yes | The records. Long text fields are shortened to 600 characters. |
| shown | Yes | Number of records included in `items` (can be lower than count when the result is long). |
| truncated | Yes | True when records were left out to keep the result short; ask for fewer items. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/destructive=false, so safety is covered. The description adds genuinely new behavioral context beyond structured data: it runs the external Actor tacps126/shopify-products on the caller's Apify account, at ~$0.001 per product with a $0.5 per-call spend cap. It omits runtime/latency and pagination behavior, keeping it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences with the payload front-loaded: what you get, at what scope, what it's for, and what it costs/how it runs. No sentence is filler, and the cost caveat is placed last where it reads as a constraint rather than the headline.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need no explanation, and all six parameters are documented in the schema. The description supplies the missing economics (per-product cost, per-call cap) and execution model (external Apify Actor), which is everything an agent needs to decide whether and how to call it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already explains stores, keywords, max_items, only_on_sale, only_available, and extra_input. The description restates scope (store/collection/product links) and cost scaling but adds no syntax or format detail beyond what the schema already documents. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb+resource ('Products from any Shopify store') and enumerates the returned data (prices, sale prices, discounts, stock, variants, SKUs, images, descriptions) plus the three scopes it supports (whole stores, collections, single products). None of the sibling tools overlap, so no sibling disambiguation is needed.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Useful for price and stock monitoring' names a concrete use case, and the scope sentence tells the agent it can pass store domains, collection links, or product links. There is no explicit when-not guidance or named alternative, but no sibling competes for this task, so the gap is minor.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_trustpilot_reviewsGet Trustpilot reviews and company ratingARead-onlyIdempotent
Trustpilot reviews for one or more companies (rating, title, text, reviewer, country, date, company reply) plus the company's TrustScore and review counts. Filter by stars, language, verified and date period. Runs the Apify Actor tacps126/trustpilot-reviews on your Apify account (about $0.0005 per review; company profile free; spend per call is capped at $0.5).
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | Newest reviews first (recency) or most relevant first. | recency |
| search | No | Only reviews containing this text. | |
| companies | Yes | Company domains or Trustpilot URLs, e.g. "apify.com". | |
| date_period | No | Only reviews from this period. | |
| extra_input | No | Advanced: extra Actor input fields, merged over the defaults. | |
| max_reviews | No | Maximum results to return (default 50, max 500). Cost scales with this. | |
| star_ratings | No | Only these ratings, e.g. ["1","2"] for complaints. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | Yes | Name of the tool that produced the result. |
| count | Yes | Number of records the Actor returned. |
| items | Yes | The records. Long text fields are shortened to 600 characters. |
| shown | Yes | Number of records included in `items` (can be lower than count when the result is long). |
| truncated | Yes | True when records were left out to keep the result short; ask for fewer items. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/idempotent/openWorld, but the description adds genuinely useful context beyond them: it runs the Apify Actor tacps126/trustpilot-reviews on the caller's own Apify account, costs ~$0.0005 per review, and caps spend at $0.5 per call. It stops short of describing latency or async/polling behavior, so not a full 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact sentences, front-loaded with what is returned before filters and cost. Dense and mostly waste-free, though the parenthetical field list is long and the actor/cost sentence could be tightened.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and 100% schema description coverage, the description need not explain return values, and it does supply the missing operational context (cost, spend cap, backing actor). The only gap is the absent guidance on choosing this tool over review-related siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3 and the schema already documents every parameter. The description's mention of 'language' and 'verified' filters is slightly out of step with the top-level schema (those would have to go through extra_input), and it only adds marginal semantics such as cost scaling with max_reviews.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (get Trustpilot reviews for one or more companies) and enumerates the returned fields (rating, title, text, reviewer, country, date, company reply) plus TrustScore and review counts. This clearly separates it from siblings like get_app_reviews and search_reddit without needing the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies its domain (Trustpilot company reviews) and lists the available filter dimensions, which hints at when it applies. However, it never names an alternative tool or states when NOT to use it (e.g., app-store reviews belong to get_app_reviews), so routing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_german_property_listingsSearch German property listings (ImmoScout24)ARead-onlyIdempotent
Apartments and houses for rent or sale in Germany: price, rent, area, rooms, address with coordinates, energy class, features, agent, photos and dates. Germany only. Runs the Apify Actor tacps126/immobilienscout24-scraper on your Apify account (about $0.001 per listing; spend per call is capped at $0.5).
| Name | Required | Description | Default |
|---|---|---|---|
| min_area | No | Minimum area in m2. | |
| locations | Yes | Cities, districts or regions in plain words, e.g. ["Berlin","München Schwabing"]. | |
| max_items | No | Maximum results to return (default 50, max 500). Cost scales with this. | |
| max_price | No | Maximum price in EUR (monthly rent or purchase price). | |
| min_price | No | Minimum price in EUR (monthly rent or purchase price). | |
| min_rooms | No | Minimum number of rooms. | |
| offer_type | No | Rent or buy listings. | rent |
| extra_input | No | Advanced: extra Actor input fields, merged over the defaults. | |
| property_type | No | Apartments or houses. | apartment |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | Yes | Name of the tool that produced the result. |
| count | Yes | Number of records the Actor returned. |
| items | Yes | The records. Long text fields are shortened to 600 characters. |
| shown | Yes | Number of records included in `items` (can be lower than count when the result is long). |
| truncated | Yes | True when records were left out to keep the result short; ask for fewer items. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so safety is covered. The description adds real operational context annotations cannot: it runs a specific Apify Actor on the caller's account, costs roughly $0.001 per listing, and hard-caps spend at $0.5 per call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences: result scope first, geographic constraint second, then billing/implementation. Every clause carries information and nothing is repeated, though the field enumeration is long and sits closer to an output summary than to purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only search tool with a full output schema and complete parameter descriptions, the definition covers the remaining gaps an agent needs: geographic restriction and the monetary cost ceiling that governs whether it is safe to call with a large max_items.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all nine parameters (locations, price/area/room bounds, offer_type, property_type, max_items, extra_input) are already documented inline. The description adds no parameter syntax or format detail beyond what the schema provides; the cost note merely reinforces max_items, which the schema already flags.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the resource (apartments and houses for rent or sale), the geography (Germany only), and enumerates the returned fields (price, area, rooms, coordinates, energy class, agent, photos). No sibling tool overlaps this vertical, so an agent can route to it unambiguously.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the content (property search) and there is one exclusion ("Germany only"), but the description never states when to prefer this over alternatives or what a caller should do if listings are needed outside Germany. Adequate but no explicit routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_google_newsSearch Google NewsARead-onlyIdempotent
Search Google News (any language and country) and return articles with the publisher's real article URL, publisher, date and related coverage. Supports Google operators ("exact phrase", -exclude, OR, intitle:) and site filters. Runs the Apify Actor tacps126/google-news on your Apify account (about $0.002 per article; spend per call is capped at $0.5).
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query, e.g. "generative AI" or "tesla -musk". | |
| sites | No | Limit to these publisher domains, e.g. ["reuters.com"]. | |
| country | No | Two-letter edition country, e.g. US, GB, DE. | US |
| language | No | Language code, e.g. en, de, fr. | en |
| max_items | No | Maximum results to return (default 20, max 200). Cost scales with this. | |
| timeframe | No | Only articles newer than this. | |
| extra_input | No | Advanced: extra Actor input fields, merged over the defaults. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | Yes | Name of the tool that produced the result. |
| count | Yes | Number of records the Actor returned. |
| items | Yes | The records. Long text fields are shortened to 600 characters. |
| shown | Yes | Number of records included in `items` (can be lower than count when the result is long). |
| truncated | Yes | True when records were left out to keep the result short; ask for fewer items. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, openWorld), and the description adds genuinely useful operational context: it runs on the user's Apify account, costs ~$0.002/article, and spend per call is capped at $0.5. It stops short of describing failure modes or how the cap is enforced.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences that are front-loaded with purpose, then capabilities, then cost. Dense but every clause earns its place; no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return details need not be spelled out, and the description covers scope, cost, and account context for a 7-param nested-schema tool. Minor gaps remain around pagination or behavior when a query returns nothing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description adds real semantic value by enumerating supported Google operators ("exact phrase", -exclude, OR, intitle:) that the plain query schema does not document, and it ties cost scaling to max_items.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Search Google News') plus the exact return payload (article URL, publisher, date, related coverage), which separates it cleanly from sibling search tools like search_indeed_jobs or search_reddit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Conveys how to use it (Google operators, site filters, language/country scope) and flags the cost model, giving clear context for invocation. It does not, however, state when to prefer this over a sibling news/review source or any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_indeed_jobsSearch Indeed jobsARead-onlyIdempotent
Search Indeed job listings by keyword and location in 9 countries (us, uk, ca, au, ie, de, fr, nl, sg): title, company, location, salary, job type, benefits, skills and apply link. Runs the Apify Actor tacps126/indeed-jobs on your Apify account (about $0.003 per job; spend per call is capped at $0.5).
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Job title, skill or company, e.g. "react developer". | |
| country | No | Indeed country site. | us |
| job_type | No | Only this employment type. | |
| location | No | City, state, postcode or "Remote". Empty = whole country. | |
| max_items | No | Maximum results to return (default 30, max 500). Cost scales with this. | |
| extra_input | No | Advanced: extra Actor input fields, merged over the defaults. | |
| date_posted_days | No | Only jobs posted in the last N days. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | Yes | Name of the tool that produced the result. |
| count | Yes | Number of records the Actor returned. |
| items | Yes | The records. Long text fields are shortened to 600 characters. |
| shown | Yes | Number of records included in `items` (can be lower than count when the result is long). |
| truncated | Yes | True when records were left out to keep the result short; ask for fewer items. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the description doesn't need to restate safety. It does add meaningful non-obvious behavior: it runs a specific Apify Actor on the user's own Apify account, costs about $0.003 per job, and caps spend per call at $0.5. That cost/credential context is valuable beyond the annotations; it stops short of describing return shape or pagination, but the output schema exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the core purpose and field list, then operational context (Actor, cost, cap). No filler, though the long parenthetical could be trimmed slightly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only search over 7 params with full schema coverage and an output schema, the description covers purpose, scope, return fields, cost and spend cap. The only meaningful omission is guidance on choosing it over sibling job tools and any account/auth prerequisite.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so every parameter is already documented with types, enums and defaults, setting the baseline at 3. The description adds little parameter-level meaning beyond confirming keyword/location search and the country list; it does not explain how max_items interacts with the $0.5 cap, which would have been useful.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Search) and resource (Indeed job listings) plus the exact scope: by keyword and location across nine named countries, and enumerates the fields returned. An agent can distinguish it from siblings like find_hiring_companies or get_company_jobs without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the query/location framing, but the description never states when to pick this over sibling job tools (find_hiring_companies, get_company_jobs) or any prerequisites such as needing an Apify account/API key. No exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_redditSearch Reddit posts and commentsARead-onlyIdempotent
Reddit posts (and optionally comments) by keyword, subreddit or user: title, text, author, subreddit, score, links and dates. Good for brand and topic monitoring. Runs the Apify Actor tacps126/reddit-monitor on your Apify account (about $0.001 per post or comment; spend per call is capped at $0.5).
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | Result order. | new |
| time | No | Time window for keyword searches. | week |
| keywords | No | Search all of Reddit; "exact phrase" works. | |
| max_items | No | Maximum results to return (default 50, max 500). Cost scales with this. | |
| subreddits | No | Subreddit names, e.g. ["webscraping"]. | |
| extra_input | No | Advanced: extra Actor input fields, merged over the defaults. | |
| include_comments | No | Also return comments of the matched posts (more results, higher cost). |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | Yes | Name of the tool that produced the result. |
| count | Yes | Number of records the Actor returned. |
| items | Yes | The records. Long text fields are shortened to 600 characters. |
| shown | Yes | Number of records included in `items` (can be lower than count when the result is long). |
| truncated | Yes | True when records were left out to keep the result short; ask for fewer items. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds genuinely new behavioral context: it runs the third-party Actor tacps126/reddit-monitor on the caller's Apify account, costs roughly $0.001 per item, and is capped at $0.5 per call. It does not cover auth prerequisites or failure behavior, so not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact sentences that lead with scope and filters before moving to cost and execution model. The field list (title, text, author, subreddit, score, links, dates) is somewhat redundant given an output schema exists, but the overall density is high.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need not be explained, and the description correctly spends its words on cost, execution environment, and filter scope instead. The main gap is the absence of any note on authentication or what happens when the spend cap is hit mid-call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter (sort, time, keywords, subreddits, max_items, include_comments, extra_input) is already documented in the schema. The description restates the filter dimensions but adds no format or syntax detail beyond what the schema provides, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (Reddit posts and optionally comments) with the filter dimensions (keyword, subreddit, user) and the fields returned. It is clearly distinguishable from siblings like search_google_news or get_trustpilot_reviews, which target entirely different sources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Good for brand and topic monitoring" implies a use case but gives no when-not guidance, no prerequisites, and does not route to any alternative sibling. The agent can infer intent but gets no decision boundary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
10 tool updates
v0.1.1- Changed
find_hiring_companies1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "count": { + "description": "Number of records the Actor returned.", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "items": { + "description": "The records. Long text fields are shortened to 600 characters.", + "items": { + "additionalProperties": {}, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "type": "array" + }, + "shown": { + "description": "Number of records included in `items` (can be lower than count when the result is long).", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "tool": { + "description": "Name of the tool that produced the result.", + "type": "string" + }, + "truncated": { + "description": "True when records were left out to keep the result short; ask for fewer items.", + "type": "boolean" + } + }, + "required": [ + "tool", + "count", + "shown", + "truncated", + "items" + ], + "type": "object" +}
- Changed
find_website_contacts2 fields changed- added
Input schema / properties / max_pages_per_site / descriptionAdded value: +"Pages read per website; contact, imprint and about pages are picked first." - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "count": { + "description": "Number of records the Actor returned.", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "items": { + "description": "The records. Long text fields are shortened to 600 characters.", + "items": { + "additionalProperties": {}, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "type": "array" + }, + "shown": { + "description": "Number of records included in `items` (can be lower than count when the result is long).", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "tool": { + "description": "Name of the tool that produced the result.", + "type": "string" + }, + "truncated": { + "description": "True when records were left out to keep the result short; ask for fewer items.", + "type": "boolean" + } + }, + "required": [ + "tool", + "count", + "shown", + "truncated", + "items" + ], + "type": "object" +}
- Changed
get_app_reviews1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "count": { + "description": "Number of records the Actor returned.", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "items": { + "description": "The records. Long text fields are shortened to 600 characters.", + "items": { + "additionalProperties": {}, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "type": "array" + }, + "shown": { + "description": "Number of records included in `items` (can be lower than count when the result is long).", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "tool": { + "description": "Name of the tool that produced the result.", + "type": "string" + }, + "truncated": { + "description": "True when records were left out to keep the result short; ask for fewer items.", + "type": "boolean" + } + }, + "required": [ + "tool", + "count", + "shown", + "truncated", + "items" + ], + "type": "object" +}
- Changed
get_company_jobs1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "count": { + "description": "Number of records the Actor returned.", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "items": { + "description": "The records. Long text fields are shortened to 600 characters.", + "items": { + "additionalProperties": {}, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "type": "array" + }, + "shown": { + "description": "Number of records included in `items` (can be lower than count when the result is long).", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "tool": { + "description": "Name of the tool that produced the result.", + "type": "string" + }, + "truncated": { + "description": "True when records were left out to keep the result short; ask for fewer items.", + "type": "boolean" + } + }, + "required": [ + "tool", + "count", + "shown", + "truncated", + "items" + ], + "type": "object" +}
- Changed
get_shopify_products3 fields changed- added
Input schema / properties / only_available / descriptionAdded value: +"Only products that are in stock." - added
Input schema / properties / only_on_sale / descriptionAdded value: +"Only products with a sale price." - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "count": { + "description": "Number of records the Actor returned.", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "items": { + "description": "The records. Long text fields are shortened to 600 characters.", + "items": { + "additionalProperties": {}, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "type": "array" + }, + "shown": { + "description": "Number of records included in `items` (can be lower than count when the result is long).", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "tool": { + "description": "Name of the tool that produced the result.", + "type": "string" + }, + "truncated": { + "description": "True when records were left out to keep the result short; ask for fewer items.", + "type": "boolean" + } + }, + "required": [ + "tool", + "count", + "shown", + "truncated", + "items" + ], + "type": "object" +}
- Changed
get_trustpilot_reviews3 fields changed- added
Input schema / properties / date_period / descriptionAdded value: +"Only reviews from this period." - added
Input schema / properties / sort / descriptionAdded value: +"Newest reviews first (recency) or most relevant first." - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "count": { + "description": "Number of records the Actor returned.", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "items": { + "description": "The records. Long text fields are shortened to 600 characters.", + "items": { + "additionalProperties": {}, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "type": "array" + }, + "shown": { + "description": "Number of records included in `items` (can be lower than count when the result is long).", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "tool": { + "description": "Name of the tool that produced the result.", + "type": "string" + }, + "truncated": { + "description": "True when records were left out to keep the result short; ask for fewer items.", + "type": "boolean" + } + }, + "required": [ + "tool", + "count", + "shown", + "truncated", + "items" + ], + "type": "object" +}
- Changed
search_german_property_listings6 fields changed- added
Input schema / properties / max_price / descriptionAdded value: +"Maximum price in EUR (monthly rent or purchase price)." - added
Input schema / properties / min_price / descriptionAdded value: +"Minimum price in EUR (monthly rent or purchase price)." - added
Input schema / properties / min_rooms / descriptionAdded value: +"Minimum number of rooms." - added
Input schema / properties / offer_type / descriptionAdded value: +"Rent or buy listings." - added
Input schema / properties / property_type / descriptionAdded value: +"Apartments or houses." - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "count": { + "description": "Number of records the Actor returned.", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "items": { + "description": "The records. Long text fields are shortened to 600 characters.", + "items": { + "additionalProperties": {}, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "type": "array" + }, + "shown": { + "description": "Number of records included in `items` (can be lower than count when the result is long).", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "tool": { + "description": "Name of the tool that produced the result.", + "type": "string" + }, + "truncated": { + "description": "True when records were left out to keep the result short; ask for fewer items.", + "type": "boolean" + } + }, + "required": [ + "tool", + "count", + "shown", + "truncated", + "items" + ], + "type": "object" +}
- Changed
search_google_news1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "count": { + "description": "Number of records the Actor returned.", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "items": { + "description": "The records. Long text fields are shortened to 600 characters.", + "items": { + "additionalProperties": {}, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "type": "array" + }, + "shown": { + "description": "Number of records included in `items` (can be lower than count when the result is long).", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "tool": { + "description": "Name of the tool that produced the result.", + "type": "string" + }, + "truncated": { + "description": "True when records were left out to keep the result short; ask for fewer items.", + "type": "boolean" + } + }, + "required": [ + "tool", + "count", + "shown", + "truncated", + "items" + ], + "type": "object" +}
- Changed
search_indeed_jobs2 fields changed- added
Input schema / properties / job_type / descriptionAdded value: +"Only this employment type." - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "count": { + "description": "Number of records the Actor returned.", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "items": { + "description": "The records. Long text fields are shortened to 600 characters.", + "items": { + "additionalProperties": {}, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "type": "array" + }, + "shown": { + "description": "Number of records included in `items` (can be lower than count when the result is long).", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "tool": { + "description": "Name of the tool that produced the result.", + "type": "string" + }, + "truncated": { + "description": "True when records were left out to keep the result short; ask for fewer items.", + "type": "boolean" + } + }, + "required": [ + "tool", + "count", + "shown", + "truncated", + "items" + ], + "type": "object" +}
- Changed
search_reddit4 fields changed- added
Input schema / properties / include_comments / descriptionAdded value: +"Also return comments of the matched posts (more results, higher cost)." - added
Input schema / properties / sort / descriptionAdded value: +"Result order." - added
Input schema / properties / time / descriptionAdded value: +"Time window for keyword searches." - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "count": { + "description": "Number of records the Actor returned.", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "items": { + "description": "The records. Long text fields are shortened to 600 characters.", + "items": { + "additionalProperties": {}, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "type": "array" + }, + "shown": { + "description": "Number of records included in `items` (can be lower than count when the result is long).", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "tool": { + "description": "Name of the tool that produced the result.", + "type": "string" + }, + "truncated": { + "description": "True when records were left out to keep the result short; ask for fewer items.", + "type": "boolean" + } + }, + "required": [ + "tool", + "count", + "shown", + "truncated", + "items" + ], + "type": "object" +}
10 tool updates
v0.1.0- First observed
find_hiring_companies - First observed
find_website_contacts - First observed
get_app_reviews - First observed
get_company_jobs - First observed
get_shopify_products - First observed
get_trustpilot_reviews - First observed
search_german_property_listings - First observed
search_google_news - First observed
search_indeed_jobs - First observed
search_reddit
TDQS
Scored across 10 tools
Each tool targets a clearly distinct data source and action (news, hiring signals, company jobs, Indeed jobs, Trustpilot, app reviews, Reddit, contacts, German property, Shopify). The three job-related tools are differentiated by source and output type, so an agent can easily select the right one.
All tool names follow a consistent snake_case verb_noun pattern (search_, find_, get_), with descriptive and predictable names. The use of multiple verbs is not inconsistent because the overall structure is uniform.
10 tools is well-scoped for a multi-source web data scraping server. Each tool represents a distinct scraper/source, and there is no redundancy or filler.
While each tool is self-contained, the server leaves notable gaps for a general web data domain: no Twitter/X, LinkedIn, generic web search, Amazon, or real estate outside Germany. Agents needing those sources would hit dead ends and require other servers.
Maintenance
Related MCP Connectors
Jobs, ads, SEO, keywords, YouTube and AliExpress data for AI agents. Runs on Apify.
Direct access to 60+ scraping and search tools. Extract structured data from Google (Search, Maps, Trends), Amazon, Airbnb, Social Media, and any web page directly into your AI agent.
Give your agent live data from Twitter, Reddit, the web and GitHub. No API keys, no scraping stack.
Web data for agents: YouTube transcripts, screenshots, Google News, WHOIS, jobs, tech stack, more.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceProvides AI agents with real-time web capabilities including live search results, markdown web scraping, business lead generation, and detailed company information. It enables agents to bypass knowledge cutoffs by accessing current web data through a monetized Apify Actor.-
- AlicenseNot gradedqualityBmaintenanceEnables agents to access 30 pay-per-event Apify actors for ad, video, reel, and audio transcripts; Google Trends and keyword demand; job boards; Amazon product data; and Instagram data, charging only per delivered item.MIT

kanto-labs-mcpofficial
AlicenseAqualityAmaintenanceEnables AI assistants to run pay-per-result web data and media tools such as website tech stack detection, document-to-Markdown conversion, SEO audits, OCR, and domain lookups via Apify.14MIT- AlicenseAqualityBmaintenanceEnables AI agents to search the web with clean page text, crawl websites into Markdown, extract articles and structured data, and monitor Google News and press releases for LLM context and RAG pipelines. It works with MCP clients and uses the user's own Apify API token for pay-per-result data retrieval.6MIT