ScrapeUnblocker
Server Details
Fetch any web page's fully rendered HTML, AI-parsed structured JSON, or Google search results through ScrapeUnblocker's anti-bot scraping API (bypasses Cloudflare, DataDome, PerimeterX, Akamai). Bring your own API key.
- Status
- Healthy
- Uptime
- 100.0% over 61 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 21 tools
Most tools target a clearly distinct site or vertical, and descriptions provide good guidance. However, there is some overlap between generic tools (fetch_parsed, run_plugin) and site-specific tools (e.g., amazon_product), which could occasionally cause an agent to choose the less appropriate tool.
All tools use snake_case with a consistent site-or-vertical prefix (e.g., amazon_, google_, fetch_, list_). Some names omit an explicit verb (amazon_product, booking_hotels), but the pattern is predictable and readable overall.
With 21 tools, the surface is on the heavy side for a single server. While each tool maps to a distinct site or generic capability, this count sits at the borderline where discoverability and cognitive load start to suffer.
The set covers major e-commerce, search, review, real-estate, job, and media sites, plus generic fetching, parsing, element discovery, and a plugin runner. The generic tools ensure that any additional site can still be scraped, leaving no obvious dead ends for the stated purpose.
Available Tools
21 toolsamazon_productScrape an Amazon product pageARead-onlyInspect
Fetches a single Amazon product and returns it as JSON: title, brand, price + currency, listPrice and savingsPercent, availability (+ a boolean inStock), rating, reviewCount, seller, features (bullet points), categories (breadcrumb) and images. Identify the product with either asin (plus marketplace) or a full product url. Amazon prices each page in the currency of the delivery location it infers from the visitor's IP address, so proxy_country defaults to the marketplace's home country (amazon.com -> US) and the call is routed through ISP proxies in that country. The proxy that served the request is reported as exitCountry (its country) and exitProvider (its type: isp, residential or datacenter). Returns JSON. Billed like an API request; listing plugins bill one unit per result page they fetch, so keep max_results modest.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Full Amazon product url, e.g. 'https://www.amazon.de/dp/B0BSHF7WHW'. The ASIN and marketplace are read from it, so `asin`/`marketplace` are not needed when a url is given. | |
| asin | No | Amazon product id (10-char ASIN, e.g. 'B0BSHF7WHW'; books use their ISBN-10). Give either `asin` (with `marketplace`) or a full `url`. | |
| marketplace | No | Regional Amazon site the ASIN belongs to. Prices and currency differ per marketplace. One of: amazon.com, amazon.co.uk, amazon.de, amazon.fr, amazon.it, amazon.es, amazon.nl, amazon.se, amazon.pl, amazon.com.be, amazon.com.tr, amazon.ca, amazon.com.mx, amazon.com.br, amazon.co.jp, amazon.in, amazon.ae, amazon.sa, amazon.sg, amazon.com.au. Default: amazon.com. | |
| proxy_country | No | Proxy country the request is sent from (ISO-2, e.g. 'US', 'DE'). Defaults to the marketplace's home country so the price comes back in the expected currency. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Going well beyond the readOnly/openWorld/non-destructive annotations, it discloses the IP-based currency inference behavior, the automatic ISP-proxy routing by proxy_country, the reported exitCountry/exitProvider metadata, and the unit-based billing model. These are non-obvious operational traits an agent could not derive from annotations or schema.
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?
It is front-loaded with the return payload, then behavior, then args/billing, and most sentences carry weight. The closing sentence about listing plugins billing per result page and keeping 'max_results' modest is irrelevant boilerplate for a single-product tool with no max_results parameter, which is the one clear waste.
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 no output schema, the description compensates by enumerating the returned fields (title, brand, price/currency, availability, rating, images, etc.) plus the meta fields exitCountry/exitProvider. Combined with argument selection rules, defaults, currency behavior and billing, an agent has everything needed to call it correctly.
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 already 100%, so the baseline is 3, but the description adds real meaning: why proxy_country matters (prices are returned in the currency of the inferred delivery location) and how url subsumes asin/marketplace. It does not, however, document edge cases such as invalid ASIN handling or unsupported marketplaces.
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?
The description names a specific verb and resource ('Fetches a single Amazon product and returns it as JSON') and even enumerates the returned fields, so the agent knows exactly what comes back. The word 'single' implicitly separates it from amazon_search/amazon_reviews, but no sibling is named explicitly, which keeps it short of a 5.
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?
It gives concrete invocation guidance: identify the product with either 'asin' (plus 'marketplace') or a full product 'url', and explains that proxy_country defaults to the marketplace's home country. It never states when to prefer this tool over amazon_search for keyword discovery or amazon_reviews for review data, so it stops short of the explicit when/when-not/alternatives rubric.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
amazon_reviewsScrape the reviews on an Amazon product pageARead-onlyInspect
Returns the review data an Amazon product page shows to a signed-out visitor, as JSON: the overall rating, total reviewCount (global ratings), the 5..1-star histogram (percent per star), the AI customersSay summary (overall text plus per-aspect sentiment, mentions, positive, negative, summary and the quoted review excerpts Amazon shows for the aspect) and the top reviews (each with id, url, author, rating, title, body, date, country, fromOtherCountry, verified, helpfulVotes, variant and images). Identify the product with asin (plus marketplace) or a product url. Scope: Amazon only shows its full review list to signed-in customers, so this endpoint returns the public slice on the product page - typically 5 to 13 top reviews, local ones first and then reviews from other countries - not a complete review export. When Amazon hides the top reviews behind a sign-in prompt (common on amazon.com), reviewsGated is true and reviews is empty; the rating, histogram and customers-say data, including its review excerpts, are still returned. Every field is always present and is null when the page does not show it. proxy_country defaults to the marketplace's home country; the proxy that served the request is reported as exitCountry (its country) and exitProvider (its type: isp, residential or datacenter). Returns JSON. Billed like an API request; listing plugins bill one unit per result page they fetch, so keep max_results modest.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Full Amazon product url, e.g. 'https://www.amazon.de/dp/B0D1XD1ZV3'. The ASIN and marketplace are read from it, so `asin`/`marketplace` are not needed when a url is given. | |
| asin | No | Amazon product id (10-char ASIN, e.g. 'B07PXGQC1Q'; books use their ISBN-10). Give either `asin` (with `marketplace`) or a product `url`. | |
| marketplace | No | Regional Amazon site the ASIN belongs to. Reviews are read from that store. One of: amazon.com, amazon.co.uk, amazon.de, amazon.fr, amazon.it, amazon.es, amazon.nl, amazon.se, amazon.pl, amazon.com.be, amazon.com.tr, amazon.ca, amazon.com.mx, amazon.com.br, amazon.co.jp, amazon.in, amazon.ae, amazon.sa, amazon.sg, amazon.com.au. Default: amazon.com. | |
| proxy_country | No | Proxy country the request is sent from (ISO-2, e.g. 'US', 'DE'). Defaults to the marketplace's home country. The reviews come from the marketplace itself, so any proxy country returns the same reviews. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds genuinely useful behavior: reviewsGated gating on amazon.com, null-when-absent field semantics, proxy country reporting via exitCountry/exitProvider, and per-page billing. It doesn't cover rate limits or retry/failure behavior, so a 3 is fair against the annotation baseline.
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 purpose, and the long field enumeration earns its place because there is no output schema. Some sentences are run-ons, but no content is filler given the missing output schema.
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 no output schema, the description must carry the full return-value burden and does: rating, reviewCount, histogram, customersSay aspects/excerpts, and per-review fields are all enumerated, plus gating and null-fill semantics. Nothing an agent needs to interpret the response 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 coverage is 100% and the four parameter descriptions already document the asin/marketplace/url relationship, the marketplace enum list and the proxy_country default. The description largely restates this ('Identify the product with asin (plus marketplace) or a product url'), so it adds little beyond the schema. 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?
Opens with a specific verb+resource: returns Amazon product-page review data as JSON. It clearly delineates scope ('public slice on the product page') versus a full review export, which is exactly the line that separates it from amazon_product (details) and search siblings.
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 how to invoke it (identify product via asin+marketplace or url) and gives a strong negative-scope statement ('not a complete review export', 5-13 top reviews). It does not explicitly name sibling tools to use instead, but the context of use is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
amazon_searchScrape Amazon search listingsARead-onlyInspect
Searches any regional Amazon marketplace for keyword and returns the result cards as JSON: asin, title, price + currency, listPrice, rating, reviewCount, a clean product url, image, and the sponsored / prime flags. Filter with min_price / max_price, order with sort (featured, price_asc, price_desc, avg_review, newest), and page with page. Fetch each result's full detail (all fields above plus features and images) through POST /marketplace/amazon-product. Some cards show no price on the search page (Amazon defers it, or the item has buying options); those return price: null and are kept in the list rather than dropped. proxy_country defaults to the marketplace's home country so prices are in the expected currency. Returns JSON. Billed like an API request; listing plugins bill one unit per result page they fetch, so keep max_results modest.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | 1-based page number. Default: 1. | |
| sort | No | Result order: featured, price_asc, price_desc, avg_review, newest. Default 'featured'. Default: featured. | |
| keyword | Yes | Search phrase, e.g. 'wireless headphones' or a brand + model. | |
| max_price | No | Highest price to include, in the marketplace's currency. | |
| min_price | No | Lowest price to include, in the marketplace's currency. | |
| marketplace | No | Regional Amazon site to search. Prices and currency differ per marketplace. One of: amazon.com, amazon.co.uk, amazon.de, amazon.fr, amazon.it, amazon.es, amazon.nl, amazon.se, amazon.pl, amazon.com.be, amazon.com.tr, amazon.ca, amazon.com.mx, amazon.com.br, amazon.co.jp, amazon.in, amazon.ae, amazon.sa, amazon.sg, amazon.com.au. Default: amazon.com. | |
| proxy_country | No | Proxy country the request is sent from (ISO-2, e.g. 'US', 'DE'). Defaults to the marketplace's home country so prices come back in the expected currency. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/openWorld annotations it discloses non-obvious behavior: price-less cards return `price: null` and are retained rather than dropped, `proxy_country` defaults to the marketplace home country to keep currency consistent, and notably the billing model (one unit per result page, keep max_results modest). That cost/rate context is exactly what annotations cannot convey.
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-loads the return shape in the first sentence, then layers filtering, pagination, edge-case price behavior and billing, with no filler sentences. It is a dense single paragraph, but each clause adds information an agent can act on.
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 no output schema, the description carries the full burden of describing returns and does so field-by-field, plus it covers the null-price edge case, default currency behavior and cost. Nothing material is missing for a 7-parameter search tool.
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 is already documented, and the description largely restates the sort enum and the proxy/marketplace currency defaults rather than adding new syntax or constraints. Baseline 3 is appropriate.
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 (Searches) plus resource (any regional Amazon marketplace listings), and enumerates the returned card fields, so an agent knows exactly what it gets. It also distinguishes itself from the sibling amazon_product by handing off full-detail fetches to that tool.
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?
Explicitly routes detail lookups to `POST /marketplace/amazon-product`, which is genuine sibling differentiation against amazon_product. It also spells out how to filter, order and page, though it never says when to prefer this over ebay_search, walmart_search or google_shopping for product queries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
booking_hotelsScrape Booking.com hotelsARead-onlyInspect
Searches Booking.com for location and returns the properties as JSON: name, price (with checkin/checkout), reviewScore, address, coordinates, image and a hotel url. Set adults, children, rooms and currency, and collect up to max_results across pages. Prices only appear when check-in/check-out dates are given. Returns JSON. Billed like an API request; listing plugins bill one unit per result page they fetch, so keep max_results modest.
| Name | Required | Description | Default |
|---|---|---|---|
| rooms | No | Number of rooms. | |
| adults | No | Number of adults. | |
| checkin | No | Check-in YYYY-MM-DD (needed for prices). | |
| checkout | No | Check-out YYYY-MM-DD. | |
| children | No | Number of children. | |
| currency | No | Price currency: USD, EUR, GBP, AUD, CAD, CHF, JPY, CNY, INR, BRL, MXN, PLN, SEK, NOK, DKK, AED, SGD, ZAR, TRY, RUB. Default: USD. | |
| location | Yes | City or place to search, e.g. 'Austin' or 'Paris'. | |
| max_results | No | How many properties to collect across pages. Default: 25. | |
| proxy_country | No | Proxy country the request is sent from (ISO-2, e.g. 'US', 'DE'). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already carry the safety profile (readOnly, openWorld, non-destructive), so the bar is lower, yet the description adds genuine operational context beyond them: pagination ('across pages') and the billing/rate model ('billed like an API request', 'one unit per result page'). That billing detail materially affects how an agent should size max_results.
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 purpose, then return shape, then usage tips and billing caveat in a logical order. Slightly redundant: JSON output is mentioned twice ('returns the properties as JSON' and 'Returns JSON'), which costs a little space.
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 no output schema, the description correctly carries the return-value burden by listing the returned fields (name, price, reviewScore, address, coordinates, image, url), plus pagination and billing behavior. Nothing an agent needs to call or interpret this tool 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 coverage is 100%, so every parameter is already documented in the schema. The description restates the tunable knobs (adults, children, rooms, currency, max_results) and the checkin/checkout-for-prices rule, but adds little syntax or constraint information beyond what the schema provides. 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 and resource ('Searches Booking.com for `location`') and enumerates the returned fields, so an agent immediately knows what this tool produces. It is the only hotel-scraping sibling, so distinction from the amazon/google/zillow tools is unambiguous.
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 a real usage condition: prices only appear when check-in/check-out dates are provided, so an agent knows what to supply to get pricing. It also advises keeping max_results modest. It stops short of naming alternatives, though no close sibling competes with it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ebay_searchScrape eBay search listingsARead-onlyInspect
Searches any regional eBay marketplace for keyword and returns the listings as JSON: title, price + currency, condition (with a normalised conditionCode), seller (username, feedback percentage and score), shippingCost, sold, watchers, bids, image and a clean item url. Filter with condition, listing_type, min_price/max_price, free_shipping, seller or category, sort with sort, and page with page/page_size (60, 120 or 240 per page). Set marketplace to search a specific site - prices, currency and availability differ between ebay.com, ebay.de, ebay.co.uk and the rest. When eBay finds no exact match it still serves a full page of its own loosely-related suggestions. That case is reported honestly: exactMatches is false and a notice explains it, so those listings are never mistaken for real matches. Returns JSON. Billed like an API request; listing plugins bill one unit per result page they fetch, so keep max_results modest.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | 1-based page number. Default: 1. | |
| sort | No | Ordering: best_match, newly_listed, ending_soon, price_asc, price_desc. Default 'best_match'. Default: best_match. | |
| seller | No | Restrict the search to one seller's username. | |
| keyword | Yes | Search phrase, e.g. 'iphone 13' or a part number like '1K0953519A'. | |
| category | No | eBay category id to search inside, e.g. '131090' for vehicle parts and accessories. | |
| condition | No | Item condition filter: new, open_box, refurbished, used, for_parts. Omit for every condition. | |
| max_price | No | Highest price to include, in the marketplace's currency. | |
| min_price | No | Lowest price to include, in the marketplace's currency. | |
| page_size | No | Listings per page - eBay's own page sizes: 60, 120, 240. Default: 60. | |
| marketplace | No | Regional eBay site to search. Prices, currency and availability differ per marketplace. One of: ebay.com, ebay.co.uk, ebay.de, ebay.fr, ebay.it, ebay.es, ebay.nl, ebay.pl, ebay.at, ebay.ch, ebay.be, ebay.ie, ebay.ca, ebay.com.au, ebay.in, ebay.ph, ebay.com.sg, ebay.com.my, ebay.com.hk. Default: ebay.com. | |
| listing_type | No | Listing format: all, buy_it_now, auction. Default 'all'. Default: all. | |
| free_shipping | No | Only listings eBay marks as free delivery. Default: false. | |
| proxy_country | No | Proxy country the request is sent from (ISO-2, e.g. 'US', 'DE'). Defaults to a country chosen for the marketplace. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, openWorld, non-destructive), yet the description adds substantial extra behavior: the exactMatches=false plus notice fallback for loosely-related suggestions, and the billing model (per-result-page units, keep max_results modest). This is real context beyond the structured fields.
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 purpose and return shape, then filters, then the exactMatches caveat and billing. Dense but every sentence carries information; the enumeration of return fields is slightly list-heavy but justified since no output schema exists.
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 13-parameter tool with no output schema, the description adequately covers both input groups and the response shape, and it flags the non-obvious eBay fallback behavior that would otherwise mislead an agent. Nothing essential to correct invocation appears 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 schema already documents all 13 parameters including defaults and the marketplace enum list. The description restates the filter/sort/paging groups but adds no syntax or format detail beyond the schema, so the baseline 3 applies. It also references a 'max_results' knob that does not exist in the schema, a minor inconsistency.
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 (searches) and resource (eBay listings), names the scope (any regional marketplace), and enumerates the exact return fields including normalised conditionCode. An agent can distinguish this from amazon_search or walmart_search purely from the definition since it is explicitly eBay-scoped.
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 context for marketplace selection ('prices, currency and availability differ between ebay.com, ebay.de, ebay.co.uk') and how filtering/sorting/paging work. It never states when NOT to use this tool or points to a sibling alternative, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fetch_htmlFetch page HTMLARead-onlyInspect
Fetch the fully rendered HTML of any web page through the ScrapeUnblocker API (https://docs.scrapeunblocker.com), bypassing anti-bot protection (Cloudflare, DataDome, PerimeterX, Akamai, Shape). Use when a normal fetch is blocked (403/429, captcha) or the page needs a real browser. Returns raw HTML. Pass steps to interact with the page (search, click, paginate) before capture - use the list_elements tool first to discover selectors.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The absolute URL to fetch (http/https). | |
| steps | No | Ordered browser actions to run in a real browser after the page loads (wait_for, wait_for_text, wait, click, type [human-like], select, press_key, scroll), then return the resulting HTML. NON-IDEMPOTENT: it runs once and is not retried. A failed step returns a 422 naming the offending step plus the page HTML at that point. Discover selectors with list_elements first. | |
| wait_value | No | The selector/expression paired with wait_method. | |
| wait_method | No | Optional render-wait: 'css' selector or 'js' expression. | |
| proxy_country | No | Optional ISO country code to route through, e.g. 'US'. | |
| sleep_seconds | No | Extra seconds to wait after load. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds behavioral context like bypassing anti-bot protection and using a real browser, which helps the agent understand what happens under the hood. It also notes that steps are non-idempotent in the schema, though not in the main description—still, it adds enough value beyond annotations.
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 sentences, front-loaded with the core purpose and key differentiator (anti-bot bypass). The alternative-trigger guidance and list_elements hint are placed efficiently without redundancy. Every sentence 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 tool with a detailed schema and read-only annotations, the description covers the essential points: what it does, when to use it, what it returns, and how to prepare for interactive steps. No critical missing information for an agent to invoke it correctly.
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 each parameter is documented. The description adds a small amount of guidance for the steps parameter ('interact with the page... use the list_elements tool first'), but this is a usage hint rather than new semantic meaning. Baseline 3 is appropriate; the schema does the heavy lifting.
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?
Clearly states the specific action ('Fetch the fully rendered HTML of any web page') and resource (web page via ScrapeUnblocker API). It differentiates from siblings like fetch_parsed (raw vs parsed HTML) and google_search (search vs fetch). No ambiguity about what the tool does.
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?
Explicitly tells when to use: 'Use when a normal fetch is blocked (403/429, captcha) or the page needs a real browser.' It also directs the agent to use list_elements first for steps, providing clear alternative tool usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fetch_parsedFetch AI-parsed page dataARead-onlyInspect
Fetch a web page through the ScrapeUnblocker API (https://docs.scrapeunblocker.com) and return AI-parsed structured JSON instead of raw HTML (product details, article content, listings). If the page holds no structured data, the result says so and returns the rendered HTML instead (billed like fetch_html).
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The absolute URL to fetch and parse. | |
| proxy_country | No | Optional ISO country code, e.g. 'US'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld/no-destructive, so the safety profile is covered; the description adds meaningful behavior on top — the fallback to rendered HTML when no structured data is found and that this fallback is billed like fetch_html. It leaves out latency, rate limits, and failure modes, so it is good but not exhaustive.
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 sentences, zero waste: the primary purpose and return type come first, the edge-case fallback and its billing implication second. Everything is front-loaded and each 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?
With no output schema, the description carries the return-value burden and does so well by naming the JSON categories and the HTML fallback. It is nearly complete for a 2-parameter read tool, missing only detail on how the 'no structured data' signal is surfaced in the response.
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% and both parameters (url, proxy_country) are fully documented in the schema, so the baseline is 3. The description adds no extra meaning about the URL format or what proxy_country changes about the fetch.
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 (fetch a web page and return AI-parsed structured JSON) and explicitly contrasts the return type with raw HTML, which cleanly separates it from the sibling fetch_html. The parenthetical examples of structured payloads (product details, article content, listings) make the resource scope concrete.
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?
It names the alternative (fetch_html) and the condition under which the result degrades to it, giving the agent a decision rule. It doesn't state when to prefer fetch_html outright or preconditions such as auth/rate limits, so it falls short of an explicit when/when-not pair.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_imagesScrape Google Images resultsARead-onlyInspect
Runs the Google Images vertical (udm=2) for q and returns the image results as JSON. Every result carries imageUrl (the full-resolution origin image, not a Google thumbnail; for an image found inside a document such as a PDF, which has no URL of its own, it is Google's thumbnail and sourcePageUrl is the document), sourceDomain and googleImagesUrl (the Google Images viewer link, i.e. the /imgres?... URL a browser copies from the result tile), plus sourcePageUrl, title, sourceName, thumbnailUrl, width, height and fileSize where available. Set proxy_country to target a market: the Google market (gl) follows it automatically, and gl is only an optional override. pages fetches up to 5 result pages of ~100 each; every page fetched is billed as one request. time_range (past hour/day/week/month/year) or date_from/date_to limit the results to images Google found in that period, so a repeated scan returns only what is new. Returns JSON. Billed like an API request; listing plugins bill one unit per result page they fetch, so keep max_results modest.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | Image search term, e.g. 'eiffel tower'. | |
| gl | No | Optional Google market override (ISO-2, e.g. 'us', 'de'). Leave empty and the market follows `proxy_country` ('us' when neither is set). The market, not the proxy country, is what decides which images rank. | |
| pages | No | How many Google Images result pages to fetch (1-5, ~100 results each; Google stops at ~400-500 per query). Each page fetched is billed as one request. Default: 1. | |
| date_to | No | Only images Google found on or before this date (YYYY-MM-DD). Works alone or with `date_from`; cannot be combined with `time_range`. | |
| date_from | No | Only images Google found on or after this date (YYYY-MM-DD). Works alone or with `date_to`; cannot be combined with `time_range`. | |
| time_range | No | Only images Google found within this recent period: `hour`, `day`, `week`, `month` or `year` (Google Images' Tools > Time filter). Use it to get just the new results on repeated scans. Cannot be combined with `date_from`/`date_to`. | |
| max_results | No | Optional cap on the number of results returned (default: all results of the fetched pages). | |
| proxy_country | No | Proxy country the request is sent from (ISO-2, e.g. 'US', 'DE'). Image results are market-specific. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover read-only/safe/open-world status, but the description adds substantial non-obvious behavior beyond them: exact return field semantics (e.g., `imageUrl` is the full-resolution origin, except for PDF-embedded images where it is a Google thumbnail), billing per page, page limits (~400-500 per query), and pagination behavior up to 5 pages.
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?
It is information-dense but front-loads the main purpose and then walks through parameters in a logical order. It is somewhat long and could be tightened, but every sentence carries useful operational detail.
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 an 8-parameter, no-output-schema tool, it covers purpose, output shape, parameter interactions, limits, and billing. An agent has enough information to call it correctly without opening the schema.
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; however, the description adds meaning not fully captured by the schema, such as how `proxy_country` automatically sets `gl` unless overridden, and clarifies `time_range`/`date_from`/`date_to` semantics for repeated scans.
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 ('Runs the Google Images vertical') and resource, and identifies the concrete output artifact (image results as JSON) with field-level detail. It is clearly distinguished from siblings like google_search, google_shopping, and google_local by naming the `udm=2` vertical.
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 context for several parameters: use `time_range`/`date_from`/`date_to` for repeated new-result scans, set `proxy_country` to target a market, and keep `max_results` modest due to billing. It does not explicitly say when to prefer this over google_search or other image-capable siblings, but the vertical-specific purpose largely makes that unnecessary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_localScrape Google Local business listingsARead-onlyInspect
Runs a Google Local (tbm=lcl) search for keyword and returns up to ~20 businesses as JSON: name, rating, reviews, price, category, address, phone, website, hours, and a top review_snippet. phone and website are null when Google does not render them for that result - service businesses (plumbers, contractors) almost always carry both. Local results are location-sensitive - set proxy_country (and optionally gl/hl) to target a market. Returns JSON. Billed like an API request; listing plugins bill one unit per result page they fetch, so keep max_results modest.
| Name | Required | Description | Default |
|---|---|---|---|
| gl | No | Google country of search, ISO-2 lowercase, e.g. 'us', 'de'. | |
| hl | No | Google UI language, e.g. 'en', 'de', 'fr'. Default: en. | |
| keyword | Yes | Search phrase, e.g. 'coffee shops in chicago' or 'plumbers near SW1A'. | |
| proxy_country | No | Proxy country the request is sent from (ISO-2, e.g. 'US', 'GB'). Local results are location-sensitive, so pick the country you want results for. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnly, openWorld, non-destructive), and the description adds genuinely new behavior: phone/website come back null when Google doesn't render them, service businesses usually carry both, and billing is one unit per result page fetched. Cost and data-availability disclosure beyond the annotations is exactly the value-add expected.
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-loads purpose and return shape, then tacks on location and billing caveats; every sentence carries information. Minor redundancy in restating 'Returns JSON' after already saying results come back as JSON.
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 no output schema, the description compensates by listing all returned fields and flagging which can be null. Combined with location and billing guidance, an agent has everything needed to call and interpret the tool.
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, but the description goes further by explaining the purpose of proxy_country plus gl/hl as a location-targeting mechanism rather than restating their type. It adds intent the schema alone doesn't convey.
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 ('Runs a Google Local (`tbm=lcl`) search for `keyword`') and enumerates the returned fields, which cleanly separates it from google_search and maps_place_details. An agent can tell this is the SERP-scraping local-results tool 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?
Gives clear operational context: local results are location-sensitive, so set proxy_country and optionally gl/hl to target a market, and keep max_results modest because of billing. It stops short of naming an alternative (e.g., maps_place_details) or stating when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_searchGoogle search resultsARead-onlyInspect
Run a Google search through the ScrapeUnblocker API (https://docs.scrapeunblocker.com) and return organic results as JSON.
| Name | Required | Description | Default |
|---|---|---|---|
| keyword | Yes | The search query. | |
| proxy_country | No | Optional ISO country code to search from, e.g. 'US'. | |
| pages_to_check | No | How many result pages to collect (default 1). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already indicate read-only, open-world, and non-destructive behavior. The description adds that it uses an external API but does not disclose further behavioral details such as rate limits, network dependencies, or potential result variance.
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?
The description is a single, concise sentence with no redundancy or irrelevant information. It clearly communicates the action, the method, and the expected output format.
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?
The description provides essential context: it performs a search, uses a specific API, and returns JSON with organic results. While there is no output schema, the description gives enough shape for a typical search-result response and the parameter schema fills in the remaining details.
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%, with each parameter having a clear description, so the description does not need to repeat parameter details. The schema itself adequately documents keyword, proxy_country, and pages_to_check.
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?
The description clearly states the tool runs a Google search via the ScrapeUnblocker API and returns organic results as JSON. This distinguishes it from sibling tools like fetch_html or list_elements, which are more generic scraping/list operations.
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 when Google search results are needed and specifies the output format, but it does not explicitly state when to use this tool versus the sibling tools or mention limitations. There is no direct alternative comparison.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_shoppingScrape Google Shopping product listingsARead-onlyInspect
Runs the Google Shopping vertical (udm=28) for q and returns the product cards as JSON: title, price, currency, originalPrice, discount, merchant, rating and reviewCount. Set proxy_country/gl to target a market (prices/merchants are region-specific) and min_price/max_price to filter. One render returns the first page of products (v1). Note: Google Shopping exposes no per-product URL, so url is omitted and image is best-effort. Returns JSON. Billed like an API request; listing plugins bill one unit per result page they fetch, so keep max_results modest.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | Product search term, e.g. 'wireless headphones'. | |
| gl | No | Market of search, ISO-2, e.g. 'us', 'de'. Sets prices/merchants. Default: us. | |
| max_price | No | Maximum price filter (whole units, gl currency). | |
| min_price | No | Minimum price filter (whole units, gl currency). | |
| max_results | No | How many products to return (v1: first page). Default: 60. | |
| proxy_country | No | Proxy country the request is sent from (ISO-2, e.g. 'US', 'DE'). Prices/merchants are market-specific. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so safety is covered. The description adds genuinely useful behavioral context beyond them: one render returns only the first page of products, Google Shopping exposes no per-product URL so `url` is omitted, `image` is best-effort, and the cost model (one unit per result page; billed like an API request). It stops short of noting rate limits or auth requirements, 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?
Front-loaded with what the tool returns, then guidance, then caveats and billing in a logical order with no filler. It is dense for a single paragraph but every clause carries information; slightly long for a 6-param tool.
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 no output schema, the description carries the burden and delivers: it enumerates the return fields, discloses the missing `url` and best-effort `image`, states the single-page v1 limitation, and explains the billing units. An agent has enough to call it correctly and set expectations on results and cost.
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 still adds value by explaining the interaction between proxy_country and gl (region-specific prices/merchants) and the v1 first-page constraint on max_results, going beyond the field-level text.
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 ('Runs the Google Shopping vertical (udm=28)') and enumerates the returned fields, which cleanly separates it from google_search, amazon_search, walmart_search and ebay_search siblings. An agent can identify what this tool does 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?
The description explains how to target a market (proxy_country/gl) and filter by price, and warns to keep max_results modest due to per-page billing, which implies usage context. However, it never states when to prefer this tool over its many shopping/search siblings (amazon_search, ebay_search, google_search) or any exclusions, leaving routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
indeed_jobsScrape Indeed job listingsARead-onlyInspect
Searches Indeed for query in location and returns the job listings as JSON: title, company, location, salary (with parsed min/max), jobTypes, companyRating, a snippet, datePosted (YYYY-MM-DD), sponsored (Indeed's paid placement) and a clean job url. Filter with country, job_type, days (posting age), remote, sort with sort (date returns the collected jobs newest first, sponsored ones included), and collect up to max_results across pages. Indeed sits behind Cloudflare + PerimeterX - handled for you. Returns JSON. Billed like an API request; listing plugins bill one unit per result page they fetch, so keep max_results modest.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Max posting age in days: 1, 3, 7, 14. | |
| sort | No | Ordering: relevance, date. Default: relevance. | |
| query | Yes | What to search, e.g. 'software engineer' or 'nurse'. | |
| start | No | 0-based result offset to start from. Default: 0. | |
| radius | No | Search radius in miles/km around the location. | |
| remote | No | Only remote jobs. Default: false. | |
| country | No | Indeed country site: us, uk, ca, au, in, ie, de, fr, nl, es, it, at, ch, be, pl, se, sg, za, nz, mx. Default: us. | |
| job_type | No | Job type: fulltime, parttime, contract, internship, temporary. | |
| location | No | Where, e.g. 'Austin, TX' or 'London'. | |
| max_results | No | How many jobs to collect across pages. Default: 30. | |
| proxy_country | No | Proxy country the request is sent from (ISO-2, e.g. 'US', 'DE'). Defaults to the country's site. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover the safety profile (readOnly/openWorld/non-destructive), and the description adds substantially more: Cloudflare + PerimeterX anti-bot handling, that sponsored placements appear in results, and the billing model (per result page fetched, billed like an API request). The cost/cadence disclosure is exactly the kind of behavior annotations cannot express.
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?
A single dense, front-loaded paragraph with no filler sentences; outputs are listed before filter/sort guidance. The run-on style and stacked parentheticals make it slightly harder to scan than a bulleted alternative, but nothing 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 11 parameters and no output schema, the description carries the return-shape burden and does so by naming every returned field, plus discloses cost, anti-bot handling, and pagination behavior. Nothing an agent needs to call it correctly 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 coverage is 100%, so the schema already defines every parameter; baseline would be 3. The description still adds meaning beyond the schema by glossing `days` as posting age, explaining that sort='date' returns collected jobs newest-first with sponsored included, and noting max_results spans pages.
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?
Opens with a specific verb+resource ('Searches Indeed for `query` in `location`') and enumerates the returned fields, so the agent immediately knows what comes back. No sibling tool covers job listings, so it is unambiguously the right pick among the search 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?
Gives concrete guidance on how to narrow results (country, job_type, days, remote) and ordering (sort), plus a cost-motivated caution to keep max_results modest. It lacks explicit when-not-to-use or alternative-tool routing, but there is no competing sibling for this resource.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_elementsList interactive page elementsARead-onlyInspect
Fetch a page through the ScrapeUnblocker API (https://docs.scrapeunblocker.com) and return its interactive elements (buttons, inputs, selects, links, forms), each with a ready-to-use selector, as JSON {url, count, elements:[...]} instead of raw HTML. Use it to discover what to target, then drive the page with the steps param of fetch_html.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The absolute URL to load and inspect (http/https). | |
| wait_value | No | The selector/expression paired with wait_method. | |
| wait_method | No | Optional render-wait: 'css' selector or 'js' expression. | |
| proxy_country | No | Optional ISO country code to route through, e.g. 'US'. | |
| sleep_seconds | No | Extra seconds to wait after load before inspecting. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds concrete behavioral context: it fetches via ScrapeUnblocker API, returns a specific JSON structure {url, count, elements:[...]} with ready-to-use selectors, and that it replaces raw HTML. It doesn't cover error cases or rate limits, but the safety profile is already annotated, so a high score is warranted.
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 sentences, no wasted words. The purpose is front-loaded, followed by the output format and usage guidance. Every clause contributes to the agent's decision-making.
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?
No output schema exists, so the description compensates by specifying the return JSON shape ({url, count, elements:[...]}) and that selectors are ready-to-use. It covers the essential workflow (discover then drive). Minor omissions like pagination or error behavior are acceptable for a read-only inspection tool.
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 fully documents all 5 parameters. The description does not add parameter-level detail beyond the schema, but it does mention the `steps` param of fetch_html as a follow-up, which is tangential. Baseline 3 is appropriate given the schema's thoroughness.
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?
The description states a specific verb ('Fetch a page... return its interactive elements') and resource (ScrapeUnblocker API). It explicitly contrasts with raw HTML and names the sibling fetch_html, making it clear this tool is for element discovery rather than general page fetching.
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 explicit usage direction: 'Use it to discover what to target, then drive the page with the `steps` param of fetch_html.' This tells the agent when to use this tool and points to the alternative for subsequent actions, leaving no ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_pluginsList site pluginsARead-onlyInspect
List ScrapeUnblocker's ready-made site plugins: scrapers for specific sites that return clean structured JSON (Amazon, Walmart, Target, eBay, Zillow, Redfin, Booking.com, Airbnb, Indeed, Glassdoor, Google Trends / Shopping / Maps, YouTube, Spotify, App Store, Google Play, Trustpilot, Yelp, Ahrefs, Semrush and 100+ more). Check here before scraping a known site with fetch_html - a plugin returns the data already parsed. Without arguments it lists every plugin with its parameters (* = required); category or search narrow the list; name returns one plugin's full parameter docs. Free - it calls nothing.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | A plugin name, for its full parameter docs. | |
| search | No | Only plugins whose name or description mentions this, e.g. 'zillow' or 'reviews'. | |
| category | No | Only plugins in this category. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint=false and openWorldHint, so safety is covered. The description adds genuinely new behavioral context: 'Free - it calls nothing', which tells the agent there is no network cost or side effect, plus the no-argument default behavior.
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 purpose and routing guidance before the long enumeration of supported sites. The site list is somewhat bloated but serves real discovery value for an agent judging coverage. Every sentence carries information.
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?
There is no output schema, so the description must convey returns; it does, describing the listing format, the required-parameter marker, and the single-plugin docs mode. Combined with full schema coverage, an agent has enough to call it correctly, though the handoff to run_plugin is not spelled out.
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. The description goes further by explaining the interaction of the three optional params: no arguments lists all plugins, `category`/`search` narrow the list, and `name` returns one plugin's full parameter docs, plus the '* = required' convention used in the output.
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 ('List ScrapeUnblocker's ready-made site plugins') and immediately clarifies what a plugin is ('scrapers for specific sites that return clean structured JSON'). It also differentiates from the sibling fetch_html by noting a plugin returns data already parsed.
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?
Explicitly routes the agent: 'Check here before scraping a known site with fetch_html'. That is a clear when-to-use with a named alternative. It does not, however, mention run_plugin, which is the sibling that actually executes a discovered plugin, leaving the discovery-to-execution step implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
maps_place_detailsScrape Google Maps place detailsARead-onlyInspect
Returns the full data for one Google Maps place as JSON: name, address (+ addressLines), phone, website, rating, categories, latitude/longitude, plusCode, hours + openNow, description, photo, cid, featureId, googleMapsUrl and relatedPlaces. Identify the place with place_id (ChIJ...), a Maps url, or a raw feature_id (0xHEX:0xHEX). Location-neutral - the feature id resolves the place directly; proxy_country defaults to a US proxy to clear Google's consent wall. Returns JSON. Billed like an API request; listing plugins bill one unit per result page they fetch, so keep max_results modest.
| Name | Required | Description | Default |
|---|---|---|---|
| gl | No | Google country, ISO-2 lowercase, e.g. 'us'. Default: us. | |
| hl | No | Google UI language, e.g. 'en', 'de', 'fr'. Default: en. | |
| raw | No | Include the decoded place core array under `raw`. Default: false. | |
| url | No | A Google Maps place URL (share link or /maps/place/... URL). The feature id or place_id is read out of it. | |
| place_id | No | A Google place_id, e.g. 'ChIJN1t_tDeuEmsRUsoyG83frY4'. | |
| feature_id | No | A Maps feature id '0xHEX:0xHEX', e.g. '0x47e66e2964e34e2d:0x8ddca9ee380ef7e0'. Fastest - no resolve step. | |
| proxy_country | No | Proxy country the request is sent from (ISO-2, e.g. 'US', 'DE'). Defaults to US - an EU country hits Google's consent wall. Default: us. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/openWorld/destructive, so the description is free to add operational context - the billing model ('billed like an API request', one unit per result page) and the consent-wall proxy behavior. These are genuinely beyond the annotations. The stray 'keep max_results modest' advice references a parameter this tool doesn't expose, which slightly muddies the picture.
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-loads the payoff (the field list) and is dense with no filler, so the long enumeration earns its place given there is no output schema. Minor redundancy in stating 'as JSON' then 'Returns JSON', and the max_results sentence refers to something outside this tool's schema.
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 no output schema, the description correctly compensates by enumerating return fields, and it covers identification methods, proxy/consent behavior, and billing. The only gap is the irrelevant max_results note, but nothing needed to call the tool correctly 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 schema already documents gl, hl, raw, url, place_id, feature_id, and proxy_country. The description mostly restates the identification parameters (place_id 'ChIJ...', feature_id '0xHEX:0xHEX') rather than adding syntax or constraints beyond the schema, 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 action and resource: 'Returns the full data for one Google Maps place as JSON', and enumerates the returned fields. The 'one place' scope cleanly distinguishes it from the search-oriented siblings (google_local, google_search) without needing to name them.
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 three ways to identify a place (place_id, url, feature_id) and notes feature_id is fastest, which is useful invocation context, but never states when to reach for this tool versus a sibling like google_local or when-not to use it. Usage is implied rather than routed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_pluginRun a site pluginARead-onlyInspect
Run one ScrapeUnblocker site plugin and return its JSON - e.g. a Target or Walmart search, a Zillow listing search, Google Trends for some keywords, an app's App Store reviews. Find the plugin and its parameters with list_plugins first. params uses the parameter names list_plugins shows (snake_case); a list value is fine where a parameter takes several. Each run is billed like an API request; listing plugins bill one unit per result page they fetch, so keep max_results modest.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The plugin to run, as list_plugins names it. | |
| params | No | The plugin's parameters, e.g. {"query": "coffee maker", "max_results": 20}. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint=false and openWorldHint, so the safety profile is covered. The description adds genuinely useful context beyond that: each run is billed like an API request and listing plugins bills per result page, plus the advice to keep max_results modest.
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-loads the purpose, then usage, then billing in a tight sequence with no filler. Slightly dense in the middle with the example list, but every clause (examples, list_plugins pointer, billing) carries navigational or cost value.
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 no output schema, the description states it returns the plugin's JSON, and it covers the two hard parts of calling this tool: discovering the plugin name/params and anticipating cost. For an open-world, enum-heavy dispatcher this is nearly complete; only a note on error or rate-limit behavior is absent.
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 would be 3, but the description adds real semantics: params must use the snake_case parameter names that list_plugins exposes, and a list value is acceptable wherever a parameter takes several. That is meaning beyond the schema's generic anyOf array definition.
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 ('Run one ScrapeUnblocker site plugin and return its JSON') and then anchors it with concrete examples (Target/Walmart search, Zillow listing search, Google Trends, App Store reviews). An agent can immediately tell this is the generic plugin executor, distinct from list_plugins, fetch_html and google_search.
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?
Explicitly directs the agent to 'Find the plugin and its parameters with list_plugins first', which is a real prerequisite and names the sibling. It lacks an explicit contrast against fetch_html/fetch_parsed/google_search for when a dedicated fetch or search tool is preferable, so it stops short of full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
trustpilot_reviewsScrape Trustpilot company reviewsARead-onlyInspect
Returns a company's Trustpilot profile and reviews as JSON. company is the reviewed domain (e.g. www.nike.com). The response has a company summary (trustScore, totalReviews, ratingDistribution 1-5, categories, contact) and a reviews array - each with rating, title, text, verified, author (name, country, review count), reply (the company's response) and dates. Page with page/pages (20 reviews per page), and filter with stars, sort (recency/relevancy), language, date, search, verified or replies. Returns JSON. Billed like an API request; listing plugins bill one unit per result page they fetch, so keep max_results modest.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Only reviews from a recent window: last30days, last3months, last6months, last12months. Omit for all time. | |
| page | No | 1-based page to start from (20 reviews/page). Default: 1. | |
| sort | No | Ordering: recency, relevancy. Default 'recency' (newest first). Default: recency. | |
| pages | No | How many consecutive pages to fetch from `page` onward (20 reviews each). Stops early at the last page. Default: 1. | |
| stars | No | Only reviews with these star ratings (1, 2, 3, 4, 5). Repeatable, e.g. stars=4&stars=5. | |
| search | No | Keyword to search within the company's reviews. | |
| company | Yes | The reviewed company's domain, e.g. 'www.nike.com' or 'nike.com'. A full site URL or a pasted Trustpilot review URL is also accepted. | |
| replies | No | Only reviews the company has replied to. Default: false. | |
| language | No | Review language ISO-2 code (e.g. 'en', 'de') or 'all'. Default 'all'. Default: all. | |
| verified | No | Only verified reviews (Trustpilot's verified badge). Default: false. | |
| proxy_country | No | Proxy country the request is sent from (ISO-2, e.g. 'US', 'DE'). Defaults to a country chosen for the site. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly and openWorld, so safety is covered. The description adds meaningful behavioral detail beyond that: the billing model ('billed like an API request'), that listing plugins bill per result page fetched, and how pagination interacts with cost. It does not mention rate limits or auth, but the cost/pagination behavior is a genuine value-add.
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 purpose and response shape, which is good, but the middle sentence is a dense run-on packing pagination and seven filters into one line. It is informative but not tightly structured, and the filter list partly duplicates the schema.
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 11 params, no output schema, and no annotations for return shape, the description appropriately documents the response structure (company summary fields, reviews array fields) and pagination mechanics. The billing note covers a real concern for a scraping tool. It could mention rate limits or failure modes, but it is largely 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 coverage is 100%, so parameters are already documented. The description reinforces the key semantics - page/pages with 20 reviews per page, stars/sort/language/date/search/verified/replies as filters - but adds little syntax beyond the schema. Baseline 3 is appropriate.
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 (scrape/returns) and resource (a company's Trustpilot profile and reviews) and names the required identifier. Clearly distinct from siblings like amazon_reviews, which target a different source.
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?
Implied usage is scraping Trustpilot reviews for a domain, but the description never says when to prefer this over alternatives or when not to use it. It does add the billing note about keeping max_results modest, which offers practical guidance on volume rather than tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
walmart_searchScrape Walmart product searchARead-onlyInspect
Searches Walmart for query and returns the products as JSON: name, price and wasPrice, rating, reviewCount, brand, seller, availability, image and a product url. Sort with sort, filter with min_price/max_price, and collect up to max_results across pages. Returns JSON. Billed like an API request; listing plugins bill one unit per result page they fetch, so keep max_results modest.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | 1-based page to start from (~40 per page). Default: 1. | |
| sort | No | Ordering: best_match, price_low, price_high, best_seller, rating_high, new. Default: best_match. | |
| query | Yes | What to search, e.g. 'laptop' or 'coffee maker'. | |
| max_price | No | Highest price to include (USD). | |
| min_price | No | Lowest price to include (USD). | |
| max_results | No | How many products to collect across pages. Default: 40. | |
| proxy_country | No | Proxy country the request is sent from (ISO-2, e.g. 'US', 'DE'). Defaults to US. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so safety is covered. The description adds genuinely non-obvious behavior: API-style billing where listing plugins charge one unit per result page fetched, which materially affects how an agent should size max_results.
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, front-loaded with the verb and resource, then return shape, then controls, then cost. No filler and nothing repeated unnecessarily.
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?
No output schema exists, but the description compensates by enumerating the returned product fields and the JSON format. Combined with full schema coverage of all 7 params and the billing note, an agent has what it needs; only cross-sibling selection guidance is absent.
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 per-parameter descriptions including defaults and enum-like sort values, so the schema carries the burden. The description only restates sort/min_price/max_price/max_results at a high level and adds no format or edge-case 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+resource ('Searches Walmart for `query`') and enumerates the exact return fields (name, price, wasPrice, rating, reviewCount, brand, seller, availability, image, url), which immediately distinguishes it from amazon_search/ebay_search/google_shopping siblings on the same platform-search axis.
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 concrete usage context: sort with `sort`, narrow with `min_price`/`max_price`, and gather up to `max_results` across pages, plus a cost-driven caveat to 'keep max_results modest'. It does not, however, say when to prefer this over the sibling marketplace searches.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
youtube_searchSearch YouTubeARead-onlyInspect
Searches YouTube for query and returns the results as JSON. For each video: videoId, title, url, channel (name/id/url), publishedText, viewCount (+ text), lengthSeconds (+ text), thumbnails, descriptionSnippet, badges, verified and isLive. Filter with type (video / channel / playlist / all) and sort (relevance / date / views / rating), and collect up to max_results across pages. Returns JSON. Billed like an API request; listing plugins bill one unit per result page they fetch, so keep max_results modest.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | Ordering: relevance, rating, date, views. Default: relevance. | |
| type | No | Result type: video, channel, playlist, movie, all. Default: video. | |
| query | Yes | Search terms. | |
| max_results | No | How many results to collect across pages (~20 per page). Default: 20. | |
| proxy_country | No | Proxy country the request is sent from (ISO-2, e.g. 'US', 'DE'). Defaults to US. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly/openWorld/non-destructive, so the bar is lower, and the description adds real value beyond them: it discloses billing behavior ('billed like an API request; one unit per result page') and advises keeping max_results modest. It stops short of stating pagination mechanics or rate limits.
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 purpose, then return shape, then filtering and billing. The field enumeration is long but each item is informational; the billing sentence earns its place. Minor verbosity in the field list.
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 no output schema, the description admirably enumerates the returned fields, and it covers filtering, pagination, and cost. The only notable gap is the unexplained `proxy_country` parameter, which an agent cannot infer.
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. The description restates the `type` and `sort` option sets and notes pagination behavior for `max_results`, but adds no syntax or semantics beyond the schema and says nothing about `proxy_country`.
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?
Opens with a specific verb+resource: 'Searches YouTube for `query` and returns the results as JSON.' It also enumerates the returned fields, clearly separating it from the sibling youtube_transcript (search results vs. transcript).
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 rather than stated: it explains how to filter with `type`/`sort` and how to control volume with `max_results` and a billing caution. There is no explicit guidance on when to pick this over siblings like youtube_transcript or google_search, nor any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
youtube_transcriptGet a YouTube video transcriptARead-onlyInspect
Returns a YouTube video's captions as JSON: timestamped segments (start, dur, text) and a joined text, plus availableLanguages, the picked language, isAutoGenerated, and the video's title, author and lengthSeconds. Pass a video id or any YouTube video URL; choose a caption language with lang. Ideal for LLM/RAG pipelines, subtitles and content analysis. Returns JSON. Billed like an API request; listing plugins bill one unit per result page they fetch, so keep max_results modest.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Preferred caption language code, e.g. 'en'. Omit for the default/first track. A prefix like 'en' matches 'en-US'. | |
| video | Yes | Video id (dQw4w9WgXcQ) or any YouTube video URL. | |
| format | No | Output shape: segments, text. 'segments' returns timestamps; 'text' returns only the joined plaintext. Default: segments. | |
| proxy_country | No | Proxy country the request is sent from (ISO-2, e.g. 'US', 'DE') for the watch page. Defaults to US. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/openWorldHint/destructiveHint=false, and the description adds real context: the exact return shape, auto-generated caption flag, availableLanguages, and the billing model (one unit per API request). The trailing note about 'listing plugins bill one unit per result page they fetch, so keep max_results modest' references a parameter this tool does not have, which is stray noise rather than contradiction.
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?
One dense, well front-loaded paragraph that leads with the return contract before inputs and cost. It is efficient overall, but the billing sentence about listing plugins and max_results is irrelevant to this tool and costs it a point.
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 no output schema, the description carries the full burden of describing return values and does so completely (segments with start/dur/text, joined text, language metadata, video metadata). Combined with full parameter coverage, an agent has everything needed to call it correctly.
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 schema already documents lang, video, format and proxy_country; the description only re-summarizes video (id or URL) and lang. Baseline 3 is appropriate since it adds minimal meaning beyond structured fields.
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 (returns a YouTube video's captions) and enumerates the exact return fields, so it is unmistakable against youtube_search or fetch_html. An agent knows precisely what this produces 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?
Gives clear intake guidance ('Pass a video id or any YouTube video URL') and named use cases (LLM/RAG pipelines, subtitles, content analysis), plus a language-selection condition. It never names an alternative tool or states when not to use it, so it stops short of the top band.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zillow_searchScrape Zillow real-estate listingsARead-onlyInspect
Searches Zillow for location (a city/state or ZIP) and returns the listings as JSON: price, beds, baths, area, address, homeType, zestimate, rentZestimate, daysOnZillow, coordinates, broker and a clean url. Filter with status (for_sale / for_rent / sold), min_price/max_price, beds, baths and home_type, sort with sort, and collect up to max_results across pages. Rental results can include apartment buildings (isBuilding: true): they have no zpid and carry lotId, buildingName, a rent range (price to maxPrice), units and availableUnits instead. Returns JSON. Billed like an API request; listing plugins bill one unit per result page they fetch, so keep max_results modest.
| Name | Required | Description | Default |
|---|---|---|---|
| beds | No | Minimum bedrooms. | |
| page | No | 1-based results page to start from. Default: 1. | |
| sort | No | Ordering: newest, price_asc, price_desc, relevant, beds, sqft, lot. Default: newest. | |
| baths | No | Minimum bathrooms. | |
| status | No | Listing status: for_sale, for_rent, sold. Default: for_sale. | |
| location | Yes | City/state or ZIP to search, e.g. 'Austin, TX' or '78704'. | |
| home_type | No | Property type filter: houses, condos, townhomes, multi_family, apartments, manufactured, lots_land. Omit for all. | |
| max_price | No | Maximum price (or monthly rent). | |
| min_price | No | Minimum price (or monthly rent). | |
| max_results | No | How many listings to collect across pages (~41 per page). Default: 41. | |
| proxy_country | No | Proxy country the request is sent from (ISO-2, e.g. 'US', 'DE'). Defaults to US. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnly, openWorld, non-destructive), and the description adds genuinely useful behavior: the per-page billing model, the advice to keep max_results modest, and a detailed handling of apartment-building rental results (isBuilding, no zpid, lotId, rent range, units/availableUnits). That is well beyond what the structured fields convey.
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-loads the core action and return shape before moving to filters, sorting and the rental edge case, with no filler sentences. It is dense and slightly long, but each clause (billing, building results) carries information an agent would otherwise miss.
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 no output schema, the description takes on the burden of describing return fields and does so thoroughly, including the anomalous isBuilding result shape. Combined with the billing note, an agent has everything needed to call this correctly and cheaply.
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 is already documented in the schema; the description mostly restates the same filter names without new syntax or format detail. Baseline 3 is appropriate for a fully-covered schema where the description only echoes the fields.
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?
Opens with a specific verb+resource (searches Zillow for a location) and enumerates the exact fields returned, so an agent knows precisely what it gets back. It is the only Zillow-family tool among the siblings, and the listing/scraping scope is unmistakable.
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 in-tool guidance: which parameters filter (status, price range, beds/baths, home_type), which sorts, and how max_results collects across pages. It does not, however, say when to prefer this over neighbouring tools such as booking_hotels or google_search, so the routing guidance stops short of exclusions.
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.
15 tool updates
- Added
amazon_product - Added
amazon_reviews - Added
amazon_search - Added
booking_hotels - Added
ebay_search - Added
google_images - Added
google_local - Added
google_shopping - Added
indeed_jobs - Added
maps_place_details - Added
trustpilot_reviews - Added
walmart_search - Added
youtube_search - Added
youtube_transcript - Added
zillow_search
1 tool update
- Changed
run_plugin1 field changed- changed
Input schema / properties / name / enumPrevious value: -[ - "skyscanner_flights", - "skyscanner_hotels", - "skyscanner_carhire", - "booking_hotels", - "booking_reviews", - "airbnb_search", - "airbnb_room", - "airbnb_reviews", - "tripadvisor_list", - "tripadvisor_reviews", - "google_local", - "google_images", - "maps_place_details", - "google_trends", - "google_shopping", - "google_jobs", - "bing_search", - "bing_images", - "duckduckgo_search", - "yahoo_search", - "yahoo_images", - "brave_search", - "brave_images", - "amazon_product", - "amazon_search", - "amazon_bestsellers", - "amazon_reviews", - "walmart_search", - "target_search", - "bestbuy_search", - "homedepot_search", - "etsy_search", - "temu_search", - "temu_product", - "shein_search", - "zalando_search", - "aliexpress_search", - "alibaba_search", - "alibaba_product", - "alibaba1688_search", - "alibaba1688_product", - "tiktok_shop_search", - "tiktok_shop_product", - "tiktok_shop_store", - "oopbuy_search", - "ebay_search", - "vinted_search", - "leboncoin_search", - "woolworths_search", - "woolworths_category", - "woolworths_specials", - "woolworths_product", - "coles_search", - "coles_category", - "coles_specials", - "coles_product", - "aldi_au_search", - "aldi_au_category", - "aldi_au_specials", - "aldi_au_product", - "zillow_search", - "zillow_detail", - "redfin_search", - "redfin_detail", - "rightmove_search", - "idealista_search", - "idealista_detail", - "immobilienscout24_search", - "mobile_de", - "autoscout24_search", - "indeed_jobs", - "glassdoor_jobs", - "glassdoor_reviews", - "glassdoor_salaries", - "naukri_jobs", - "wellfound_jobs", - "wellfound_job", - "wellfound_company", - "wellfound_company_search", - "career_site_jobs", - "trustpilot_reviews", - "g2_reviews", - "g2_search", - "capterra_reviews", - "capterra_search", - "product_hunt", - "crunchbase_company", - "crunchbase_search", - "yelp_search", - "yelp_business", - "yelp_reviews", - "naver_place_search", - "naver_place_details", - "google_play_app", - "google_play_search", - "app_store_app", - "app_store_search", - "app_store_reviews", - "youtube_channel", - "youtube_search", - "youtube_transcript", - "spotify_search", - "spotify_artist", - "spotify_album", - "spotify_track", - "spotify_playlist", - "similarweb_overview", - "ahrefs", - "semrush_overview", - "meta_ad_library" -]New value: +[ + "skyscanner_flights", + "skyscanner_hotels", + "skyscanner_carhire", + "booking_hotels", + "booking_reviews", + "airbnb_search", + "airbnb_room", + "airbnb_reviews", + "tripadvisor_list", + "tripadvisor_reviews", + "google_local", + "google_images", + "maps_place_details", + "google_trends", + "google_shopping", + "google_jobs", + "bing_search", + "bing_images", + "duckduckgo_search", + "yahoo_search", + "yahoo_images", + "brave_search", + "brave_images", + "amazon_product", + "amazon_search", + "amazon_bestsellers", + "amazon_reviews", + "walmart_search", + "target_search", + "bestbuy_search", + "homedepot_search", + "etsy_search", + "shein_search", + "zalando_search", + "aliexpress_search", + "alibaba_search", + "alibaba_product", + "alibaba1688_search", + "alibaba1688_product", + "tiktok_shop_search", + "tiktok_shop_product", + "tiktok_shop_store", + "oopbuy_search", + "ebay_search", + "vinted_search", + "leboncoin_search", + "woolworths_search", + "woolworths_category", + "woolworths_specials", + "woolworths_product", + "coles_search", + "coles_category", + "coles_specials", + "coles_product", + "aldi_au_search", + "aldi_au_category", + "aldi_au_specials", + "aldi_au_product", + "zillow_search", + "zillow_detail", + "redfin_search", + "redfin_detail", + "rightmove_search", + "idealista_search", + "idealista_detail", + "immobilienscout24_search", + "mobile_de", + "autoscout24_search", + "indeed_jobs", + "glassdoor_jobs", + "glassdoor_reviews", + "glassdoor_salaries", + "naukri_jobs", + "wellfound_jobs", + "wellfound_job", + "wellfound_company", + "wellfound_company_search", + "career_site_jobs", + "trustpilot_reviews", + "g2_reviews", + "g2_search", + "capterra_reviews", + "capterra_search", + "product_hunt", + "crunchbase_company", + "crunchbase_search", + "yelp_search", + "yelp_business", + "yelp_reviews", + "naver_place_search", + "naver_place_details", + "google_play_app", + "google_play_search", + "app_store_app", + "app_store_search", + "app_store_reviews", + "youtube_channel", + "youtube_search", + "youtube_transcript", + "spotify_search", + "spotify_artist", + "spotify_album", + "spotify_track", + "spotify_playlist", + "similarweb_overview", + "ahrefs", + "semrush_overview", + "meta_ad_library" +]
2 tool updates
- Changed
list_plugins1 field changed- changed
Input schema / properties / category / enumPrevious value: -[ - "Travel", - "Google", - "Search engines", - "E-commerce", - "Classifieds & Resale", - "Groceries", - "Real estate", - "Vehicles", - "Jobs", - "Reviews & Companies", - "Local & Maps", - "Apps", - "Video, Music & Communities", - "SEO & Ads" -]New value: +[ + "Travel", + "Google", + "Search engines", + "E-commerce", + "Classifieds & Resale", + "Groceries", + "Real estate", + "Vehicles", + "Jobs", + "Reviews & Companies", + "Local & Maps", + "Apps", + "Video & Music", + "SEO & Ads" +]
- Changed
run_plugin1 field changed- changed
Input schema / properties / name / enumPrevious value: -[ - "skyscanner_flights", - "skyscanner_hotels", - "skyscanner_carhire", - "booking_hotels", - "booking_reviews", - "airbnb_search", - "airbnb_room", - "airbnb_reviews", - "tripadvisor_list", - "tripadvisor_reviews", - "google_local", - "google_images", - "maps_place_details", - "google_trends", - "google_shopping", - "google_jobs", - "bing_search", - "bing_images", - "duckduckgo_search", - "yahoo_search", - "yahoo_images", - "brave_search", - "brave_images", - "amazon_product", - "amazon_search", - "amazon_bestsellers", - "amazon_reviews", - "walmart_search", - "target_search", - "bestbuy_search", - "homedepot_search", - "etsy_search", - "temu_search", - "temu_product", - "shein_search", - "zalando_search", - "aliexpress_search", - "alibaba_search", - "alibaba_product", - "alibaba1688_search", - "alibaba1688_product", - "tiktok_shop_search", - "tiktok_shop_product", - "tiktok_shop_store", - "oopbuy_search", - "ebay_search", - "vinted_search", - "leboncoin_search", - "woolworths_search", - "woolworths_category", - "woolworths_specials", - "woolworths_product", - "coles_search", - "coles_category", - "coles_specials", - "coles_product", - "aldi_au_search", - "aldi_au_category", - "aldi_au_specials", - "aldi_au_product", - "zillow_search", - "zillow_detail", - "redfin_search", - "redfin_detail", - "rightmove_search", - "idealista_search", - "idealista_detail", - "immobilienscout24_search", - "mobile_de", - "autoscout24_search", - "indeed_jobs", - "glassdoor_jobs", - "glassdoor_reviews", - "glassdoor_salaries", - "naukri_jobs", - "wellfound_jobs", - "wellfound_job", - "wellfound_company", - "wellfound_company_search", - "career_site_jobs", - "trustpilot_reviews", - "g2_reviews", - "g2_search", - "capterra_reviews", - "capterra_search", - "product_hunt", - "crunchbase_company", - "crunchbase_search", - "yelp_search", - "yelp_business", - "yelp_reviews", - "naver_place_search", - "naver_place_details", - "google_play_app", - "google_play_search", - "app_store_app", - "app_store_search", - "app_store_reviews", - "youtube_channel", - "youtube_search", - "youtube_comments", - "youtube_transcript", - "spotify_search", - "spotify_artist", - "spotify_album", - "spotify_track", - "spotify_playlist", - "telegram_channel", - "quora_question", - "quora_profile", - "similarweb_overview", - "ahrefs", - "semrush_overview", - "meta_ad_library" -]New value: +[ + "skyscanner_flights", + "skyscanner_hotels", + "skyscanner_carhire", + "booking_hotels", + "booking_reviews", + "airbnb_search", + "airbnb_room", + "airbnb_reviews", + "tripadvisor_list", + "tripadvisor_reviews", + "google_local", + "google_images", + "maps_place_details", + "google_trends", + "google_shopping", + "google_jobs", + "bing_search", + "bing_images", + "duckduckgo_search", + "yahoo_search", + "yahoo_images", + "brave_search", + "brave_images", + "amazon_product", + "amazon_search", + "amazon_bestsellers", + "amazon_reviews", + "walmart_search", + "target_search", + "bestbuy_search", + "homedepot_search", + "etsy_search", + "temu_search", + "temu_product", + "shein_search", + "zalando_search", + "aliexpress_search", + "alibaba_search", + "alibaba_product", + "alibaba1688_search", + "alibaba1688_product", + "tiktok_shop_search", + "tiktok_shop_product", + "tiktok_shop_store", + "oopbuy_search", + "ebay_search", + "vinted_search", + "leboncoin_search", + "woolworths_search", + "woolworths_category", + "woolworths_specials", + "woolworths_product", + "coles_search", + "coles_category", + "coles_specials", + "coles_product", + "aldi_au_search", + "aldi_au_category", + "aldi_au_specials", + "aldi_au_product", + "zillow_search", + "zillow_detail", + "redfin_search", + "redfin_detail", + "rightmove_search", + "idealista_search", + "idealista_detail", + "immobilienscout24_search", + "mobile_de", + "autoscout24_search", + "indeed_jobs", + "glassdoor_jobs", + "glassdoor_reviews", + "glassdoor_salaries", + "naukri_jobs", + "wellfound_jobs", + "wellfound_job", + "wellfound_company", + "wellfound_company_search", + "career_site_jobs", + "trustpilot_reviews", + "g2_reviews", + "g2_search", + "capterra_reviews", + "capterra_search", + "product_hunt", + "crunchbase_company", + "crunchbase_search", + "yelp_search", + "yelp_business", + "yelp_reviews", + "naver_place_search", + "naver_place_details", + "google_play_app", + "google_play_search", + "app_store_app", + "app_store_search", + "app_store_reviews", + "youtube_channel", + "youtube_search", + "youtube_transcript", + "spotify_search", + "spotify_artist", + "spotify_album", + "spotify_track", + "spotify_playlist", + "similarweb_overview", + "ahrefs", + "semrush_overview", + "meta_ad_library" +]
2 tool updates
- Added
list_plugins - Added
run_plugin
2 tool updates
- Changed
fetch_html1 field changed- added
Input schema / properties / stepsAdded value: +{ + "description": "Ordered browser actions to run in a real browser after the page loads (wait_for, wait_for_text, wait, click, type [human-like], select, press_key, scroll), then return the resulting HTML. NON-IDEMPOTENT: it runs once and is not retried. A failed step returns a 422 naming the offending step plus the page HTML at that point. Discover selectors with list_elements first.", + "items": { + "additionalProperties": false, + "properties": { + "action": { + "description": "The action to perform.", + "enum": [ + "wait_for", + "wait_for_text", + "wait", + "click", + "type", + "select", + "press_key", + "scroll" + ], + "type": "string" + }, + "clear": { + "description": "For 'type': clear the field first.", + "type": "boolean" + }, + "selector": { + "description": "CSS selector the action targets (required for wait_for/click/type/select).", + "type": "string" + }, + "selector_type": { + "description": "How to interpret `selector` (default 'css').", + "enum": [ + "css", + "xPath", + "className", + "tagName" + ], + "type": "string" + }, + "timeout_ms": { + "description": "Per-step timeout override in ms.", + "exclusiveMinimum": 0, + "type": "integer" + }, + "value": { + "description": "Action payload: text to type/select, text for wait_for_text, a key name for press_key (e.g. 'Enter'), milliseconds for wait, or 'bottom'/pixels for scroll.", + "type": [ + "string", + "number" + ] + } + }, + "required": [ + "action" + ], + "type": "object" + }, + "type": "array" +}
- Added
list_elements
3 tool updates
- First observed
fetch_html - First observed
fetch_parsed - First observed
google_search
Related MCP Servers
- AlicenseNot gradedqualityBmaintenancePerplexity for social: ask what competitors are running across social and get answers grounded in real ad and creative data, not guesses.2Apache 2.0
- AlicenseCqualityBmaintenanceCompetitor Monitor AI - MCP server providing AI-powered tools and automation by MEOK AI Labs119 npm54 PyPIMIT
- AlicenseAqualityCmaintenanceEnables brand visibility monitoring across major AI platforms like ChatGPT, Claude, Gemini, and Perplexity. It allows users to track visibility scores, analyze competitor data, and receive actionable insights to improve AI-generated brand recommendations.1611 npm1MIT

industrylens-mcpofficial
AlicenseNot gradedqualityBmaintenanceBrowse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.