Outscraper MCP
OfficialProvides tools for performing Google Search and Google Images search.
Provides tools for searching places, fetching reviews, photos, and chain information from Google Maps.
Provides tools for searching job listings on Indeed.
Provides tools for searching and fetching reviews from Tripadvisor.
Provides tools for fetching Trustpilot data and reviews.
Provides tools for fetching Yelp reviews.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Outscraper MCPFind coffee shops in downtown Boston"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Outscraper MCP
Official MCP server for Outscraper.
Connect AI agents to Outscraper for business discovery, Google Maps intelligence, company and contact enrichment, review analysis, search, and structured web extraction.
Best For
local business prospecting and lead generation
Google Maps place, photo, and review intelligence
company and contact enrichment from known domains
async data collection workflows with polling
extracting structured information from a single page
Related MCP server: HasData MCP Server
Not Ideal For
browser automation or multi-step UI interaction
generic OAuth-based SaaS integrations
arbitrary document search outside the Outscraper data surface
website crawling sessions that require a persistent browser
Common Workflows
find businesses with
businesses_search, then enrich a chosen record withbusinesses_getsearch Google Maps places, then fetch reviews or photos for reputation analysis
enrich a company domain, validate emails, and check contact coverage
submit async jobs, then poll them with
requests_getextract structured data from a page with
ai_scraper
It exposes production-ready MCP tools for:
business discovery and enrichment
Google Maps places, reviews, photos, and chain detection
company insights, emails, email validation, and phone enrichment
Google Search and Google Images search
Yellow Pages, Booking, Yelp, Tripadvisor, Trustpilot, and Indeed data
account balance checks and async request lifecycle management
The server supports stdio and HTTP transports, npm-based installation, hosted header or URL auth, and a normalized structuredContent result shape for MCP clients and agents.
What It Does
This MCP server exposes Outscraper data sources and enrichment workflows to MCP-compatible clients.
It is designed for:
business and place discovery
Google Maps review and photo retrieval
contact and company enrichment
AI-assisted structured extraction from a single page with
ai_scraperasync request submission and polling through
requests_get
In practice, the server acts as a thin MCP layer over the Outscraper API:
MCP clients call tools on this server
the server authenticates with an Outscraper API key
requests are forwarded to Outscraper endpoints
results are returned in a normalized MCP tool envelope
Quick Start
set OUTSCRAPER_API_KEY=YOUR_API_KEY
npx -y outscraper-mcpFor MCP clients, configure:
command:
npxargs:
["-y", "outscraper-mcp"]env:
OUTSCRAPER_API_KEY=YOUR_API_KEY
For task-oriented workflows, copy-paste examples, and example agent skills, see the examples folder.
Current Tools
pingbusinesses_searchbusinesses_getai_scrapergoogle_maps_searchgoogle_maps_reviewscompany_insightsemails_and_contactsemails_validatorgoogle_maps_photoschain_infoyellowpages_searchbooking_reviewsphones_enrichertp_data(legacy alias fortrustpilot_data)trustpilot_datatp_reviews(legacy alias fortrustpilot_reviews)trustpilot_reviewsyelp_reviewstripadvisor_searchtripadvisor_reviewsgoogle_searchgoogle_search_imagesindeed_searchbalance_getrequests_getrequests_listrequests_delete
These tools are aligned to the current documented Outscraper API shapes, including:
POST /businessesPOST /ai-scraperGET /businesses/{business_id}GET /google-maps-searchGET /google-maps-photosGET /google-searchGET /google-search-imagesGET /yellowpages-searchGET /booking-reviewsGET /phones-enricherGET /trustpilotGET /trustpilot-reviewsGET /yelp-reviewsGET /tripadvisor-searchGET /tripadvisor-reviewsGET /indeed-searchGET /google-maps-reviewsGET /company-insightsGET /emails-and-contactsGET /email-validatordocumented
ai_chain_infoenrichment viagoogle-maps-searchGET /profile/balanceGET /requests/{requestId}DELETE /requests/{requestId}GET /requests
Unified Tool Result Shape
Every tool now returns the same structured envelope:
{
"data": {},
"meta": {
"service": "company_insights",
"operation": "get"
},
"async": {
"id": "request-id",
"status": "Pending",
"results_location": "https://api.outscraper.com/requests/request-id",
"is_async_submission": true,
"next_step": "Call requests_get with request_id=\"request-id\" to check progress."
}
}async is present when the response is an async submission or exposes async request metadata.
Execution Mode
Async-capable tools now accept:
{
"execution_mode": "auto"
}Available values:
auto: let the MCP server choose sync or asyncsync: force direct response modeasync: force async submission mode
The old boolean async is still accepted for compatibility, but execution_mode now has priority.
Install
The recommended way to use this MCP server is from npm.
Run from npm
npx -y outscraper-mcpProvide OUTSCRAPER_API_KEY through your MCP client config or shell environment.
The server auto-loads .env on startup via dotenv.
On Windows, if a client cannot find npx, use the full Node.js path instead, for example:
{
"command": "C:\\Program Files\\nodejs\\npx.cmd",
"args": ["-y", "outscraper-mcp"]
}Security
Security-sensitive issues should be reported according to SECURITY.md.
Connection Modes
The server currently supports these connection patterns:
1. Local stdio MCP
Best for:
Claude Desktop
Claude Code
Cursor
VS Code
Windsurf
local MCP development
Auth source:
OUTSCRAPER_API_KEYenvironment variable
Transport:
local process over stdio
2. Remote stateless Streamable HTTP
Best for:
hosted MCP endpoints
n8n
reverse proxy or domain-based deployment
containerized remote usage
Auth source when CLOUD_SERVICE=true:
X-OUTSCRAPER-API-KEYX-API-KEYAuthorization: Bearer <api-key>/v1/mcp/<api-key>path auth
Transport:
HTTP
POST /mcpHTTP
POST /v1/mcp/<api-key>
3. Remote stateful HTTP/SSE
Best for:
session-based MCP usage
clients that rely on stateful HTTP transport semantics
Auth source when CLOUD_SERVICE=true:
the same header or URL-based auth options as stateless HTTP
Transport:
POST /mcpGET /mcpDELETE /mcpand the same
/v1/mcp/<api-key>route pattern
Note:
stateful mode stores sessions in process memory, so it is better suited to a single instance or sticky-session deployment than horizontal scaling
ChatGPT Connector
If you want to connect this server to ChatGPT as a remote MCP connector, the simplest hosted form is:
https://your-domain.example/v1/mcp/YOUR_API_KEYRecommended setup:
Deploy the server over HTTPS behind a real domain or reverse proxy.
Enable hosted mode with
CLOUD_SERVICE=true.Use the URL-auth route if the connector cannot attach custom auth headers.
Prefer header auth for server-to-server clients when custom headers are available.
Typical connector values:
Name:
Outscraper MCPDescription:
Business discovery, Google Maps data, enrichment, search, and AI scrapingMCP Server URL:
https://your-domain.example/v1/mcp/YOUR_API_KEYAuthentication:
None
Notes:
URL-auth is the most convenient option for connector-style setup, but it is less private than header auth because URLs are more likely to appear in logs.
Avoid temporary tunnels that inject browser warning pages unless your connector can bypass them cleanly.
Hosted Header Auth Mode
If you want hosted behavior, enable:
set CLOUD_SERVICE=trueThen the HTTP caller can send the Outscraper API key in one of these headers:
Authorization: Bearer <api-key>X-API-KEY: <api-key>X-OUTSCRAPER-API-KEY: <api-key>
In CLOUD_SERVICE=true HTTP mode, request headers are used as the API key source. In local stdio mode, OUTSCRAPER_API_KEY is still required.
HTTP requests without one of these auth forms are rejected before MCP processing begins.
Hosted URL Auth Mode
For ChatGPT-style connectors or other hosted setups that cannot send custom headers, you can also pass the API key in the path:
http://localhost:3000/v1/mcp/YOUR_API_KEYThis route supports the same MCP behavior as /mcp, but authenticates from the URL path when CLOUD_SERVICE=true.
For server-to-server integrations, header auth is still preferred because URL-based API keys are more likely to appear in logs.
Run with Streamable HTTP
set HTTP_STREAMABLE_SERVER=true
set HOST=localhost
set PORT=3000
npx -y outscraper-mcpMCP endpoint:
http://localhost:3000/mcpHosted URL auth endpoint:
http://localhost:3000/v1/mcp/YOUR_API_KEYHealth endpoint:
http://localhost:3000/healthRun with Docker Compose
This repository also includes a docker-compose.yml for hosted/container deployments:
docker compose up --build -dDefault container behavior:
binds
3000:3000enables
CLOUD_SERVICE=trueenables stateless Streamable HTTP
listens on
0.0.0.0uses
https://api.outscraper.comas the upstream API base URL
Endpoints:
http://localhost:3000/mcp
http://localhost:3000/v1/mcp/YOUR_API_KEY
http://localhost:3000/healthImportant notes for Docker usage:
this compose file is intended for hosted remote access, not local stdio clients
by default it expects callers to authenticate per request, not through a single server-wide API key
if you put the service behind a domain or reverse proxy, prefer header auth for server-to-server usage
URL auth is available mainly for connector flows that cannot attach custom headers
Run with Stateful HTTP/SSE Mode
This mode uses local session management:
set SSE_LOCAL=true
set HOST=localhost
set PORT=3000
npx -y outscraper-mcpYou can also enable the same mode with:
set HTTP_STATEFUL_SERVER=true
set HOST=localhost
set PORT=3000
npx -y outscraper-mcpIn this mode the server accepts:
POST /mcpfor initialize and subsequent requestsGET /mcpfor the session streamDELETE /mcpfor session termination
The session is tracked through the mcp-session-id header.
Hosted URL auth also works in stateful mode through:
http://localhost:3000/v1/mcp/YOUR_API_KEYClient Setup
Add this to your Claude Desktop MCP config:
{
"mcpServers": {
"outscraper": {
"command": "npx",
"args": ["-y", "outscraper-mcp"],
"env": {
"OUTSCRAPER_API_KEY": "YOUR_API_KEY"
}
}
}
}Add the server with the Claude Code CLI:
claude mcp add outscraper -e OUTSCRAPER_API_KEY=YOUR_API_KEY -- npx -y outscraper-mcpAdd this to your global MCP configuration:
{
"mcpServers": {
"outscraper": {
"command": "npx",
"args": ["-y", "outscraper-mcp"],
"env": {
"OUTSCRAPER_API_KEY": "YOUR_API_KEY"
}
}
}
}Add this to your MCP config:
{
"mcpServers": {
"outscraper": {
"command": "npx",
"args": ["-y", "outscraper-mcp"],
"env": {
"OUTSCRAPER_API_KEY": "YOUR_API_KEY"
}
}
}
}For settings.json:
{
"mcp": {
"inputs": [
{
"type": "promptString",
"id": "outscraperApiKey",
"description": "Outscraper API Key",
"password": true
}
],
"servers": {
"outscraper": {
"command": "npx",
"args": ["-y", "outscraper-mcp"],
"env": {
"OUTSCRAPER_API_KEY": "${input:outscraperApiKey}"
}
}
}
}
}Use the standard stdio command form:
{
"mcpServers": {
"outscraper": {
"command": "npx",
"args": ["-y", "outscraper-mcp"],
"env": {
"OUTSCRAPER_API_KEY": "YOUR_API_KEY"
}
}
}
}For n8n or other HTTP MCP clients, run the server in Streamable HTTP mode:
set HTTP_STREAMABLE_SERVER=true
set HOST=localhost
set PORT=3000
set OUTSCRAPER_API_KEY=YOUR_API_KEY
npx -y outscraper-mcpThen use:
http://localhost:3000/mcpTool Examples
Search businesses with structured filters
{
"filters": {
"country_code": "US",
"states": ["NY"],
"cities": ["New York"],
"types": ["restaurant", "cafe"]
},
"fields": ["name", "phone", "website", "address", "rating", "reviews"],
"limit": 25
}Natural-language query support on /businesses currently depends on Outscraper's own parser behavior. In live testing, structured filters were reliable while free-form query values often returned Could not parse query into a valid request format.
Extract structured data with AI Scraper
{
"query": "https://outscraper.com",
"prompt": "Extract company name, company description, and people mentioned on the page.",
"schema": {
"type": "object",
"required": [],
"properties": {
"company_name": { "type": "string" },
"company_description": { "type": "string" },
"people": {
"type": "array",
"items": { "type": "string" }
}
}
},
"execution_mode": "sync"
}Use execution_mode: "async" if you want a request id and plan to poll later with requests_get.
Get one business
{
"business_id": "YOUR_BUSINESS_ID",
"fields": ["name", "phone", "website", "address", "rating", "reviews"]
}Search Google Maps
{
"query": ["restaurants brooklyn usa"],
"limit": 20,
"language": "en",
"region": "us"
}Fetch Google Maps reviews
{
"query": ["ChIJrc9T9fpYwokRdvjYRHT8nI4"],
"reviews_limit": 20,
"sort": "newest",
"language": "en"
}Get company insights
{
"query": ["outscraper.com"],
"fields": ["name", "description", "industry"],
"execution_mode": "async"
}Find emails and contacts
{
"query": ["outscraper.com"],
"preferred_contacts": ["technical", "decision makers"],
"execution_mode": "sync"
}Validate email addresses
{
"query": ["support@outscraper.com"],
"execution_mode": "sync"
}Fetch Google Maps photos
{
"query": ["NoMad Restaurant, NY, USA"],
"photos_limit": 5,
"limit": 1,
"execution_mode": "sync"
}Get chain info
{
"query": ["Starbucks, New York, NY, USA"],
"limit": 1,
"execution_mode": "sync"
}Get Trustpilot business data
{
"query": ["outscraper.com"],
"execution_mode": "sync"
}Search Google
{
"query": ["outscraper"],
"pages_per_query": 1,
"execution_mode": "sync"
}Search Google Images
{
"query": ["outscraper"],
"limit": 5,
"execution_mode": "sync"
}Search Indeed
{
"query": ["https://www.indeed.com/jobs?q=software+engineer&l=New+York%2C+NY"],
"limit": 10,
"execution_mode": "sync"
}Check account balance
{}Delete async request
{
"request_id": "YOUR_REQUEST_ID"
}Known Limitations
businesses_searchworks reliably with structuredfilters, but free-formqueryvalues on/businessesmay fail withCould not parse query into a valid request format.This behavior was reproduced against the live API, not only inside the MCP layer.ai_scraperworks best throughPOSTwith a JSON body. In live validation,POSTacceptedpromptandschemareliably, whileGETvariants aroundschemaandquery_schemadid not match the same behavior consistently.When Outscraper OpenAPI examples and live API behavior differ, live endpoint behavior should be treated as the source of truth.
businesses_searchis intentionally exposed here as a synchronous MCP tool because the current/businessesOpenAPI shape is request-body-based and did not prove to be a stable async-style workflow during live validation.execution_mode="auto"is heuristic-driven. It is designed to choose a practical default, but callers that need deterministic behavior should explicitly usesyncorasync.HTTP hosted mode requires correct auth headers when
CLOUD_SERVICE=true; stdio mode still expectsOUTSCRAPER_API_KEYin the process environment.chain_infois implemented from the documentedai_chain_infoenrichment ongoogle-maps-search, because Outscraper currently does not describe a standalonechain infoendpoint.builtwithis not currently exposed as a tool because Outscraper currently does not document a dedicated BuiltWith endpoint.
Tool Selection Notes
Use
businesses_searchfor structured business discovery with filters and cursor pagination.Use
businesses_getonce you already have a concrete business id.Use
google_maps_searchfor Google Maps-style place discovery from human search queries.Use
google_maps_reviewswhen the user specifically needs review data rather than place discovery.Use
company_insightsfor firmographics and company profile enrichment.Use
emails_and_contactsfor contact discovery from known domains.Use
requests_get,requests_list, andrequests_deleteonly for async lifecycle management.Use
balance_getfor account and billing checks, not business data retrieval.
Notes
The server supports stdio, stateless Streamable HTTP, and stateful local HTTP/SSE mode.
CLOUD_SERVICE=trueenables header-based API key resolution for HTTP requests.For npm publication, package contents are intentionally limited to runtime artifacts and docs.
Client-specific config snippets in this README are meant as practical templates; the exact settings UI and config key names may vary slightly between MCP clients and versions.
Available Tools
28 toolsai_scraperAI ScraperAInspect
Extract structured information from a web page with Outscraper AI Scraper.
Best for:
scraping one page and turning it into structured JSON
extracting company, people, product, or document metadata from a site
guiding extraction with both a prompt and a JSON-schema-like shape
This tool is best for extracting structured data from a single page.
How schema works:
schema describes the shape of the output you want back
use type="object" with properties for named fields
use type="array" with items when a field should be a list
add required when some fields must be present
Example schema: { "type": "object", "required": [], "properties": { "company_name": { "type": "string" }, "company_description": { "type": "string" }, "people": { "type": "array", "items": { "type": "string" } } } }
Execution notes:
execution_mode="sync" requests a direct response
execution_mode="async" returns a request id for polling with requests_get
if both prompt and schema are provided, prompt guides the extraction and schema shapes the output
| Name | Required | Description | Default |
|---|---|---|---|
| async | No | Deprecated compatibility flag. Prefer execution_mode. | |
| query | Yes | One URL to scrape, for example https://outscraper.com. | |
| prompt | No | Natural-language extraction instructions, for example what to summarize or pull from the page. | |
| schema | No | Extraction schema describing the shape of the result. This is typically a JSON-schema-like object with type, properties, and optional required fields. | |
| execution_mode | No | Execution strategy. Use auto to let the MCP server choose between sync and async. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| meta | Yes | |
| async | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and largely delivers. It explains sync vs async behavior, that async returns a request id for polling via requests_get, and how prompt and schema jointly affect extraction. It stops short of disclosing costs, rate limits, or failure behavior, but what it does disclose is substantial and non-obvious.
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 longer than typical, but every section earns its place given the nested schema and mode selection. The use of 'Best for', 'How schema works', and 'Execution notes' improves scannability. A slight redundancy exists because 'best for structured data from a single page' is repeated after the earlier best-for 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?
For a tool with a nested schema, no annotations, and multiple execution modes, the description covers the key operational details: what the tool does, when to use it, how to write the schema, and how to handle sync vs async. It does not mention authentication, account balance, or failure/error handling, but the presence of an output schema lessens the need to describe return shapes.
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 adds significant meaning beyond the schema. The example schema clarifies how to shape output, and the execution notes explain the semantic difference between sync and async plus the combined effect of prompt and schema. This directly helps an agent construct correct parameters.
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 opens with a specific verb and resource: 'Extract structured information from a web page with Outscraper AI Scraper.' It further clarifies this is for turning a single page into structured JSON, which clearly distinguishes it from the many search/review/listing sibling tools.
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 'Best for' section gives concrete use cases and the description states it is best for structured data from a single page. It also explains how async execution connects to requests_get for polling. It does not explicitly name sibling tools to avoid, but the single-page scoping makes the intended usage clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
balance_getOutscraper BalanceAInspect
Fetch the current Outscraper account balance and billing summary for the active API key.
Best for:
checking whether the key is attached to a funded account
confirming account status before running larger jobs
reading upcoming invoice and usage billing details
Use this when:
you want a quick health check for the current API key/account
you need to confirm available balance before large async jobs
you are debugging whether billing or account status might explain API behavior
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| meta | Yes | |
| async | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are not provided, so the description bears the full burden of behavioral disclosure. It states it 'fetches' a balance, implying read-only, but does not explicitly confirm that it is side-effect-free, does not consume credits, or how it handles invalid keys. The reference to the active API key adds useful context, but the transparency is incomplete.
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 well-structured with a clear lead sentence and bullet-point lists. However, the 'Best for' and 'Use this when' sections overlap in content (e.g., 'checking whether the key is attached to a funded account' vs. 'quick health check'), introducing some redundancy. It is not verbose but could be tightened without losing 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?
For a simple tool with no parameters and an output schema likely documenting return fields, the description adequately covers the purpose, usage scenarios, and the reliance on the active API key. The only missing element is an explicit read-only confirmation, which is minor given the tool's nature.
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?
The tool has zero parameters, so the schema is empty and fully covered. The description correctly omits parameter explanations that are unnecessary. The mention of 'active API key' is contextual, not a parameter, and does not conflict with 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?
The first sentence clearly states the action (fetch), the resource (current Outscraper account balance and billing summary), and the scope (active API key). It is immediately distinct from all sibling tools, which are focused on data scraping, searching, and review retrieval. No ambiguity exists about what this 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?
Explicit 'Best for' and 'Use this when' sections provide concrete scenarios: checking funded status, confirming before large jobs, and debugging billing issues. Although no alternatives are mentioned, none exist among siblings, so the guidance is sufficiently directive. The usage contexts are practical and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
booking_reviewsBooking ReviewsCInspect
Fetch Booking reviews with the documented /booking-reviews endpoint.
| Name | Required | Description | Default |
|---|---|---|---|
| skip | No | Skip reviews. | |
| sort | No | Booking sort parameter. | |
| async | No | Deprecated compatibility flag. Prefer execution_mode. | |
| query | Yes | One or more Booking URLs. | |
| cutoff | No | Cutoff value accepted by Outscraper. | |
| fields | No | Specific fields to return. | |
| region | No | Region code. | |
| webhook | No | Optional webhook URL for async completion. | |
| language | No | Language code. | |
| reviews_limit | No | Maximum reviews per query. | |
| execution_mode | No | Execution strategy. Use auto to let the MCP server choose between sync and async. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| meta | Yes | |
| async | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It fails to mention that this is a read-only operation, whether it can be expensive or rate-limited, or that it supports async execution modes. The description mentions the endpoint but not the behavior around async/sync or webhook usage, which is critical for a potentially long-running operation.
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 concise, just one sentence, but it lacks useful information. It's not overly long, but it could be more informative without becoming bloated. It repeats the endpoint name which is somewhat redundant. Front-loading is fine, but the content is thin.
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?
Given the tool's complexity (11 parameters, async execution options, webhook), the description is grossly inadequate. It doesn't explain the business context (e.g., how to use 'query' for Booking URLs, what 'cutoff' means, when to use 'execution_mode'). The output schema exists, so return values are covered, but the description fails to provide enough context for an agent to call this tool effectively, especially with so many optional parameters.
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?
The schema has 100% description coverage for all parameters, but many descriptions are terse (e.g., 'Skip reviews', 'Booking sort parameter'). The description text adds no additional meaning beyond what's in the schema, so it doesn't compensate or clarify. Baseline 3 is appropriate as the schema covers the parameters, but the tool description adds no value in clarifying parameter usage.
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 fetches Booking reviews via a specific endpoint, but it's somewhat vague about the exact resource (reviews for what? Booking URLs?). It distinguishes from siblings like yelp_reviews and tripadvisor_reviews, though not explicitly. The verb 'Fetch' is specific and the resource is 'Booking reviews', making it clear enough.
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 provides minimal usage guidance, only mentioning the endpoint. It doesn't explain when to use this tool versus alternatives like tripadvisor_reviews or yelp_reviews. No context on prerequisites (e.g., need Booking URLs) or typical use cases. The agent is left to infer usage from the name and parameters.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
businesses_getOutscraper Business DetailsAInspect
Get one business by Outscraper business id.
Best for:
loading the full detail payload for a business found via businesses_search
fetching a smaller field-selected payload for one known business id
Use this after businesses_search when you already know the exact business id.
Do not use this for discovery:
use businesses_search to find records first
then call businesses_get for the exact item you want to enrich or inspect
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Specific fields to return. | |
| business_id | Yes | Outscraper business id returned by /businesses search. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| meta | Yes | |
| async | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It describes the operation as retrieving/fetching data, so behavior is clear. However, it doesn't disclose what 'full detail payload' includes or how fields selection works beyond the schema. It also doesn't mention whether it returns a single object or array. This is adequate but not rich.
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 compact, with key information front-loaded (what it does) followed by usage guidance. Every sentence adds value; no redundancy or fluff.
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 tool is simple (2 params, 1 required) and has an output schema, so the description doesn't need to explain return format. The description covers purpose and usage. The only minor gap is not explaining the 'full detail payload' vs field-selected payload, but that's arguably obvious from the fields parameter. Overall complete enough.
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?
The schema already documents both parameters with descriptions (business_id and fields), and coverage is 100%. The description adds context that business_id comes from businesses_search, which is helpful. No additional parameter semantics are added beyond that, so a 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?
The description clearly states the tool retrieves a single business by Outscraper business id and explains the difference from businesses_search, which is for discovery. It specifies the resource (business details) and the verb (get), making it unambiguous and distinct from 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?
Explicitly instructs when to use this tool (after businesses_search, when business_id is known) and when not to use it (for discovery), referencing the sibling tool businesses_search. This provides clear routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
businesses_searchOutscraper Businesses SearchAInspect
Search Outscraper businesses using structured filters, a natural-language query, or both.
Best for:
building lead lists from normalized business records
filtering by country, state, city, type, and other structured business fields
paginated browsing with cursor when you want repeatable result navigation
Prefer this tool when:
you already know the geography, categories, or other business filters you want
you want the normalized /businesses dataset rather than raw Google Maps search behavior
you need stable field selection and cursor-based pagination
Use this instead of google_maps_search when:
you want the normalized /businesses API
you need field selection, filters, or cursor pagination
Note:
according to the current OpenAPI, /businesses is a synchronous endpoint in this MCP server
async-style execution controls are intentionally not exposed here
structured filters are the most reliable input mode
live Outscraper testing showed that free-form query parsing may fail with "Could not parse query into a valid request format."
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Result page size. | |
| query | No | Optional natural-language business search query parsed by Outscraper. | |
| cursor | No | Pagination cursor from the previous response. | |
| fields | No | Specific fields to return for each business. | |
| filters | No | Structured Outscraper /businesses filters JSON. | |
| include_total | No | Whether Outscraper should include total matching count. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| meta | Yes | |
| async | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that the endpoint is synchronous, that async-style execution controls are intentionally not exposed, and that free-form query parsing may fail with a specific error. It also notes that structured filters are the most reliable input mode. It doesn't mention pagination behavior beyond cursor support, but the schema already covers cursor. The description adds meaningful behavioral context beyond the 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?
The description is well-structured with clear sections and front-loaded purpose. It is somewhat longer than necessary, but every section earns its place: the 'Best for' and 'Prefer this tool' sections provide actionable guidance, and the notes about synchronous behavior and query parsing failures are valuable. The bullet-point format makes it scannable.
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 covers the tool's purpose, usage context, alternatives, and important behavioral caveats. With an output schema present, return values don't need to be explained. The only minor gap is that it doesn't describe the structure of the filters object in detail, but the schema's 'Structured Outscraper /businesses filters JSON' description plus the note about reliability is sufficient for an agent to proceed. Overall, it is complete for a tool with this complexity.
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 six parameters. The description adds context about the query parameter's reliability (may fail to parse) and emphasizes structured filters as the most reliable mode, which is useful. However, it doesn't add much detail about the filters object structure or fields parameter beyond what the schema provides. Baseline 3 is appropriate given full schema coverage.
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 searches Outscraper businesses using structured filters, natural-language query, or both. It explicitly distinguishes this from google_maps_search by noting it targets the normalized /businesses dataset rather than raw Google Maps search behavior. The verb 'search' plus the resource 'businesses' and the mention of structured filters makes the purpose 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?
The description provides explicit 'Best for' and 'Prefer this tool when' sections, and directly names the alternative google_maps_search with the condition for choosing this tool instead. It also includes a note about the synchronous endpoint and warns that free-form query parsing may fail, which helps the agent decide when to use structured filters. This is exemplary usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chain_infoChain InfoAInspect
Detect chain membership using the documented ai_chain_info enrichment.
This tool uses the documented enrichment on top of the Google Maps search pipeline. Use it when you want to know whether a business is part of a chain.
| Name | Required | Description | Default |
|---|---|---|---|
| async | No | Deprecated compatibility flag. Prefer execution_mode. | |
| limit | No | Organizations per query limit. | |
| query | Yes | One or more Google Maps-style business queries. | |
| region | No | Region code. | |
| webhook | No | Optional webhook URL for async completion. | |
| language | No | Language code. | |
| execution_mode | No | Execution strategy. Use auto to let the MCP server choose between sync and async. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| meta | Yes | |
| async | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the transparency burden. It discloses that the tool layers a documented enrichment on the Google Maps search pipeline, implying a read/enrichment operation. However, it doesn't address async behavior, rate limits, or any operational caveats beyond this.
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 short sentences, front-loaded with the core purpose. The phrase 'documented enrichment' appears twice and is slightly redundant, but there is no material 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?
For a 7-parameter enrichment tool, the description plus schema provide sufficient context: the query intent is explicit, the Google Maps pipeline is named, input parameters are fully described in the schema, and an output schema exists. It doesn't elaborate on execution modes, but the schema already covers those 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 description coverage is 100%, so all parameters already have semantic descriptions. The tool description adds no per-parameter detail, but the schema carries the weight; 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?
Uses a specific verb ('Detect') and a specific resource ('chain membership'), and names the underlying ai_chain_info enrichment. This clearly differentiates it from sibling search, review, and contact-enrichment tools.
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 states when to use it: 'Use it when you want to know whether a business is part of a chain.' It doesn't name an alternative sibling or provide a when-not, but the intended use case is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
company_insightsCompany InsightsAInspect
Get structured company-level insight data from Outscraper.
Best for:
enriching known companies or domains
pulling structured company metadata instead of raw search results
larger async enrichment jobs that can be tracked later with requests_get
Prefer this tool when:
the user already has domains or company URLs
the goal is firmographics, company profile data, size, revenue, industry, or founding details
you want structured company enrichment rather than contact extraction
Use async mode when:
you send many companies at once
the endpoint is expected to do expensive enrichment work
Use emails_and_contacts instead when:
the user mainly wants emails, phones, socials, or people/contact data
company profile enrichment is secondary to lead/contact discovery
Returns:
direct response payload in sync mode
async request metadata in async mode
| Name | Required | Description | Default |
|---|---|---|---|
| async | No | Deprecated compatibility flag. Prefer execution_mode. | |
| query | Yes | One or more company domains, company names, or URLs supported by Outscraper. | |
| fields | No | Specific company insight fields to return. Leave empty to receive the default payload. | |
| webhook | No | Optional webhook URL for async completion. | |
| enrichments | No | Optional enrichments supported by Outscraper for company insights. | |
| execution_mode | No | Execution strategy. Use auto to let the MCP server choose between sync and async. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| meta | Yes | |
| async | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It explains distinct sync vs async behaviors and the return payloads for each mode ('direct response payload' vs 'async request metadata'), and mentions the async tracking via requests_get. It does not disclose error handling, rate limits, or side effects, but for a read-oriented enrichment tool the description is reasonably transparent. It does not contradict any annotations (none exist).
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 organized with clear sections ('Best for', 'Prefer this tool when', 'Use async mode when', 'Use emails_and_contacts instead when', 'Returns'). It is longer than a one-liner but each bullet point adds decision-relevant information. The structure front-loads the core purpose and then drills into when/how to use it, making it efficient to scan.
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?
Given the tool's complexity (6 parameters, sync/async modes, multiple use scenarios) and the presence of an output schema (which obviates the need to describe return structure in full), the description covers the key decision points: use cases, alternatives, and mode selection. It omits details like error handling or rate limits, but those are often outside the scope of tool descriptions and the core info needed for correct invocation is present.
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 parameters are already documented. The description adds meaningful context beyond the schema: it explains when to prefer async mode, how execution_mode relates to sync/async, and how async jobs can be tracked with requests_get. This goes beyond simple repetition of the schema's fields and helps the agent make parameter choices.
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 exactly what the tool does: 'Get structured company-level insight data from Outscraper.' It clearly distinguishes itself from siblings by explicitly positioning it for company enrichment (firmographics, size, revenue, industry) versus contact extraction, which is a key differentiator from tools like emails_and_contacts. The purpose 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?
The description gives explicit 'Prefer this tool when...' conditions, contrasts with emails_and_contacts, and provides async mode guidance including when to use it and how results can be tracked with requests_get. It covers both positive and negative usage cases, leaving no ambiguity about when to invoke this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
emails_and_contactsEmails And ContactsAInspect
Find emails, phones, and social/contact data from one or more company domains.
Best for:
domain-based lead enrichment
finding reachable company contacts from a known website
quick contact discovery before running heavier enrichment flows
Prefer this tool when:
the user already knows the company website or domain
the main goal is contact discovery rather than company metadata
you want emails, phones, socials, and website-derived contact details
Use async mode when:
you send many domains at once
you expect the crawl/enrichment to take longer
you want to track progress later with requests_get
Use company_insights instead when:
the user wants firmographics, company profile, revenue, size, or founding details
contact data is not the main objective
| Name | Required | Description | Default |
|---|---|---|---|
| async | No | Deprecated compatibility flag. Prefer execution_mode. | |
| query | Yes | One or more domains or URLs, for example outscraper.com. | |
| webhook | No | Optional webhook URL for async completion. | |
| execution_mode | No | Execution strategy. Use auto to let the MCP server choose between sync and async. | |
| preferred_contacts | No | Optional contact-role prioritization. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| meta | Yes | |
| async | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It transparently exposes the existence of async mode, explains that long crawl/enrichment may occur, and points to requests_get for progress tracking. It also flags the async parameter as deprecated in favor of execution_mode. However, it does not explicitly state whether the operation is read-only or write-related, nor does it mention any potential costs or rate limits. These are minor gaps given the detailed mode guidance, so a 4 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?
The description is well-structured with a one-sentence purpose, bullet-point 'Best for', and clear decision sections. It is front-loaded with the core function, and every section serves a distinct purpose—usage, async guidance, and alternative routing. No filler or repetition. It is longer than average, but every sentence earns its place given the tool's complexity.
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 5 parameters (1 required), an output schema, and multiple execution modes, the description covers all necessary aspects: main use case, when to use this vs. the sibling, async behavior and tracking, and parameter guidance. The existence of an output schema relieves the need to describe return values. The description also anticipates common questions (e.g., many domains at once) making it complete for agent invocation.
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. The description goes beyond schema definitions by explaining parameter interplay: it defines query as 'domains or URLs' with an example, elaborates on execution_mode ('Use auto to let the MCP server choose between sync and async'), and clarifies async as a 'Deprecated compatibility flag'. It also adds context to preferred_contacts as 'contact-role prioritization.' This adds meaningful value over the schema's brief descriptions.
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 opens with a clear, specific action: 'Find emails, phones, and social/contact data from one or more company domains.' It names the exact resource types and the input (domains), and explicitly differentiates from sibling company_insights by stating what it does NOT do (firmographics, revenue, etc.). This is a textbook example of a specific verb+resource with sibling differentiation.
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 provides explicit when-to-use sections: 'Prefer this tool when...' and 'Use company_insights instead when...', directly addressing when to choose this tool over an alternative. It also gives concrete async usage guidance ('Use async mode when...') and references tracking with requests_get. Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
emails_validatorEmails ValidatorAInspect
Validate email addresses with the documented /email-validator endpoint.
Best for:
deliverability checks
validating outbound lead lists
filtering invalid email inputs before enrichment or outreach
| Name | Required | Description | Default |
|---|---|---|---|
| async | No | Deprecated compatibility flag. Prefer execution_mode. | |
| query | Yes | One or more email addresses to validate. | |
| webhook | No | Optional webhook URL for async completion. | |
| execution_mode | No | Execution strategy. Use auto to let the MCP server choose between sync and async. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| meta | Yes | |
| async | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. 'Validate' strongly implies a non-mutating check, which is helpful context, but the description doesn't explicitly explain the async/webhook execution behavior that the schema exposes. It also leans on 'documented endpoint' rather than stating important operational details inline.
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 compact and front-loaded: one lead sentence stating the action and endpoint, followed by a scannable three-item 'Best for' list. Every line earns its place, and no filler is present.
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 straightforward validator with a fully documented schema and an output schema present, the description covers the main use cases and purpose. It could be marginally more complete by noting rate/cost implications or the deprecated async flag, but nothing essential is missing for selecting and invoking 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?
Input schema coverage is 100%, and each parameter already has a meaningful description (query, async, webhook, execution_mode). The tool description doesn't need to restate parameter meanings; the baseline 3 applies because it adds no extra parameter-level insight 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?
The description opens with a specific verb-resource pair ('Validate email addresses') and names the exact endpoint, then reinforces the purpose with three concrete use cases. This clearly separates it from sibling tools like emails_and_contacts, which are about finding/collecting emails rather than checking validity.
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 'Best for' bullets give clear contexts (deliverability checks, lead-list validation, pre-enrichment filtering) that tell an agent when to choose this tool. It doesn't explicitly say when not to use it or name alternatives, so it stops one step 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.
google_maps_photosGoogle Maps PhotosAInspect
Fetch Google Maps photos with the documented /google-maps-photos endpoint.
Best for:
place photo extraction
menu photo retrieval
owner photo and latest photo analysis
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | Optional photo filter tag. | |
| async | No | Deprecated compatibility flag. Prefer execution_mode. | |
| limit | No | Maximum places to process. | |
| query | Yes | One or more Google Maps place queries or ids. | |
| fields | No | Specific fields to return. | |
| region | No | Region code. | |
| webhook | No | Optional webhook URL for async completion. | |
| language | No | Language code. | |
| photos_limit | No | Maximum photos per place. | |
| execution_mode | No | Execution strategy. Use auto to let the MCP server choose between sync and async. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| meta | Yes | |
| async | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry behavioral disclosure, but it only says 'Fetch'. It does not mention async/sync execution modes, webhook behavior, potential rate limits, or any side effects, despite having parameters that imply these behaviors.
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?
Compact, front-loaded, and easy to scan with a short summary and three bullets. No redundant filler, though it could be slightly more informative without losing conciseness.
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 schema is rich and an output schema exists, covering parameter and return details. However, with 10 parameters and no annotations, the description could more explicitly explain execution modes, tag semantics, and when to use async, so agents aren't left to infer operational behavior.
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 'Best for' bullets add meaning by mapping use cases to the tag enum (menu, by_owner, latest) and to query-based photo extraction. This goes beyond the bare parameter descriptions in 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?
Clearly states 'Fetch Google Maps photos' with a specific verb and resource. The 'Best for' bullets (place photo extraction, menu, owner, latest) help differentiate from siblings like google_maps_search and google_maps_reviews, though it doesn't explicitly say what the returned data contains.
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 clear context via 'Best for', telling an agent when to use it for photo-related needs. It does not name alternatives or exclusions, but the listed use cases are specific enough to guide selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_maps_reviewsGoogle Maps ReviewsAInspect
Fetch Google Maps reviews for place ids or place queries.
Best for:
review analysis
recent-review monitoring
targeted review extraction for specific places
Prefer this tool when:
the user needs review text, review counts, or review metadata
you already know the place or can identify it from a query
async polling is acceptable for heavier review jobs
Use async mode when:
review volume is large
you query many places in one request
you want to poll progress later with requests_get
Do not use this for basic place discovery:
use google_maps_search first
then use google_maps_reviews once you know the target place or query set
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | Review sorting mode. | |
| async | No | Deprecated compatibility flag. Prefer execution_mode. | |
| limit | No | Maximum number of places to process. | |
| query | Yes | One or more place ids or Google Maps business queries. | |
| start | No | Start date or offset accepted by Outscraper. | |
| cutoff | No | Cutoff date/timestamp accepted by Outscraper. | |
| fields | No | Specific review fields to return. | |
| region | No | Region code, for example us. | |
| source | No | Review source. | |
| webhook | No | Optional webhook URL for async completion. | |
| language | No | Language code, for example en. | |
| ignore_empty | No | Skip places without reviews. | |
| cutoff_rating | No | Minimum rating cutoff. | |
| reviews_limit | No | Maximum reviews per place. | |
| reviews_query | No | Optional keyword filter inside reviews. | |
| execution_mode | No | Execution strategy. Use auto to let the MCP server choose between sync and async. | |
| last_pagination_id | No | Resume token from previous page. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| meta | Yes | |
| async | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses async/sync execution modes, mentions webhook for async completion, and explains polling progress via requests_get. However, it does not explicitly state read-only behavior, rate limits, or error handling, though these are implied by the nature of a fetch tool. The guidance on async for heavy jobs adds meaningful context.
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 well-structured with clear section headers (Best for, Prefer this tool when, Use async mode when, Do not use) that front-load the core purpose and usage. Every sentence earns its place, and the bullet-point format makes it scannable without unnecessary prose. It is appropriately sized for a complex 17-parameter 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?
Despite 17 parameters and an output schema, the description is complete enough for an agent to call it correctly. It explains use cases, alternatives, async behavior, and even provides a workflow (use google_maps_search first). The output schema covers return values, and the parameter schema covers individual params, so nothing critical is missing from the description's standpoint.
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?
The schema covers 100% of parameters with descriptions, so the baseline is 3. The description repeats the query parameter's meaning ('place ids or place queries') but adds no new information about parameters beyond what the schema already provides. It doesn't elaborate on sort, limit, or other params, but the schema handles those adequately.
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 opens with a specific verb and resource: 'Fetch Google Maps reviews for place ids or place queries.' It clearly distinguishes from siblings by explicitly stating it is for reviews, not basic place discovery, and directly references google_maps_search as the alternative for that purpose. This makes the tool's scope 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?
The 'Prefer this tool when' and 'Do not use this' sections provide explicit conditions and name the alternative (google_maps_search). It also details when to use async mode and mentions polling with requests_get, giving clear decision guidance. No other tool in the sibling list is routed to as directly, making this exceptionally actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_maps_searchGoogle Maps SearchAInspect
Search Google Maps places through Outscraper.
Best for:
ad hoc place discovery from one or more Google Maps queries
cases where the user thinks in Google Maps terms rather than /businesses filters
retrieving place results directly from the Google Maps search pipeline
Prefer this tool when:
the user gives Google Maps-style queries such as "restaurants brooklyn usa"
you want place discovery without building structured business filters first
you want async submissions for larger query batches or enriched Google Maps searches
Use businesses_search instead when:
you want normalized businesses filters or cursor pagination
you want to combine strict filters with natural-language business search
Use execution_mode="auto" when:
there are multiple queries
the limit is high
enrichments are requested
| Name | Required | Description | Default |
|---|---|---|---|
| skip | No | Skip places count. | |
| async | No | Deprecated compatibility flag. Prefer execution_mode. | |
| limit | No | Organizations per query limit. | |
| query | Yes | One or more Google Maps queries or place ids. | |
| fields | No | Specific place fields to return. | |
| region | No | Region code, for example us. | |
| webhook | No | Optional webhook URL for async completion. | |
| language | No | Language code, for example en. | |
| enrichment | No | Optional enrichment names supported by Outscraper. | |
| coordinates | No | Optional latitude,longitude coordinates bias supported by Outscraper. | |
| execution_mode | No | Execution strategy. Use auto to let the MCP server choose between sync and async. | |
| drop_duplicates | No | Drop duplicate places across results. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| meta | Yes | |
| async | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since no annotations are provided, the description carries the full burden. It mentions async submissions, enrichments, execution_mode choice, and implicitly indicates read-only behavior by being a search. It also notes the absence of cursor pagination (in contrast to businesses_search). However, it does not explicitly state the return format or side effects, but the output schema covers return structure. Overall, it offers solid behavioral context.
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 moderately long but well-structured with bullet points, making it scannable and front-loaded with the primary purpose. Each bullet adds distinct guidance without repeating schema info. It earns its length by covering usage scenarios and alternatives.
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?
Given the tool's complexity (12 params, output schema present), the description comprehensively covers usage scenarios, alternatives, and execution mode guidance. It lacks authentication or error mention, but those are likely implicit in a search tool. The output schema handles return details, so the description is sufficiently complete for an agent to select and invoke 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 every parameter is already documented. The description adds usage context (e.g., 'Google Maps-style queries', execution_mode triggers) but does not provide parameter-specific details beyond the schema. Baseline of 3 is appropriate as 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?
The description clearly states 'Search Google Maps places through Outscraper' and differentiates from the sibling tool businesses_search by emphasizing direct Google Maps search pipeline vs normalized filters. It specifies use cases like 'ad hoc place discovery' and distinguishes itself from alternatives explicitly.
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 provides explicit 'Prefer this tool when' and 'Use businesses_search instead when' conditions, and further guides on execution_mode='auto' with specific triggers. This is excellent routing information that leaves no ambiguity about when to choose this tool over siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_searchGoogle SearchCInspect
Search Google with the documented /google-search endpoint.
| Name | Required | Description | Default |
|---|---|---|---|
| tbs | No | Optional Google search tbs parameter. | |
| skip | No | Skip results. | |
| uule | No | Optional Google UULE location string. | |
| async | No | Deprecated compatibility flag. Prefer execution_mode. | |
| query | Yes | One or more Google search queries. | |
| fields | No | Specific fields to return. | |
| region | No | Region code. | |
| webhook | No | Optional webhook URL for async completion. | |
| language | No | Language code. | |
| enrichment | No | Optional documented enrichments. | |
| execution_mode | No | Execution strategy. Use auto to let the MCP server choose between sync and async. | |
| pages_per_query | No | Pages to fetch per query. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| meta | Yes | |
| async | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure, but it only says 'Search Google.' It does not explain pagination behavior, whether async execution is possible, what happens with multiple queries, or any rate limiting or error conditions. The agent is left without critical operational context.
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 one-sentence description is perfectly concise and front-loaded with the action. However, for a tool with 12 parameters and 26 sibling tools, this brevity reads as under-specification rather than effective trimming. It contains no filler but omits valuable context.
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?
Given the tool's complexity (12 parameters, async/sync execution modes, webhook support, multiple sibling tools) and zero annotations, the description is inadequate. An agent cannot decide when to invoke it, how it behaves, or how to configure it beyond reading the schema. The output schema helps but does not compensate for missing usage context.
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 adds no parameter-specific meaning, but since every parameter already has a schema description, the tool definition meets the minimum viability threshold without needing additional prose.
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 and resource: 'Search Google with the documented /google-search endpoint.' It clearly identifies the core function. However, it does not differentiate from sibling tools like google_search_images or google_maps_search, so an agent may need to inspect other definitions to disambiguate.
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?
No guidance is provided on when to use this tool vs. the many sibling search tools (images, maps, businesses, etc.). There is no mention of exclusions, prerequisites, or alternative selection criteria. The agent must infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_search_imagesGoogle Search ImagesCInspect
Search Google Images with the documented /google-search-images endpoint.
| Name | Required | Description | Default |
|---|---|---|---|
| uule | No | Optional Google UULE location string. | |
| async | No | Deprecated compatibility flag. Prefer execution_mode. | |
| limit | No | Items per query limit. | |
| query | Yes | One or more Google image search queries. | |
| fields | No | Specific fields to return. | |
| region | No | Region code. | |
| webhook | No | Optional webhook URL for async completion. | |
| language | No | Language code. | |
| execution_mode | No | Execution strategy. Use auto to let the MCP server choose between sync and async. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| meta | Yes | |
| async | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It only says 'Search Google Images' and references an endpoint; it does not disclose async/webhook behavior, execution_mode semantics, pagination, or result characteristics. The verb 'Search' weakly signals a read-only operation, but little else is transparent.
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 short and front-loaded, but it is under-specified for a 9-parameter tool. The clause 'with the documented /google-search-images endpoint' is redundant and does not earn its place, leaving the description closer to a name restatement than useful specification.
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?
Although the schema and output schema cover parameter mechanics, the description leaves key contextual gaps: no differentiation from google_search, no guidance on sync vs async, and no mention of webhook or regional/language behavior. An agent can invoke the tool, but not with confidence about when or how it behaves.
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 adds no parameter semantics beyond the schema, but the schema already documents query, limit, fields, region, language, webhook, execution_mode, uule, and async adequately.
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 clear verb and resource: 'Search Google Images.' This distinguishes it from the sibling google_search tool at a basic level. However, it mostly restates the tool's name/title and adds no scope or filtering detail, so it stops short of top-tier clarity.
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?
There is no guidance on when to use this tool instead of google_search or other sibling search tools. No context, exclusions, or prerequisites are provided, so an agent must infer usage from the tool name and schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
indeed_searchIndeed SearchCInspect
Search Indeed with the documented /indeed-search endpoint.
| Name | Required | Description | Default |
|---|---|---|---|
| async | No | Deprecated compatibility flag. Prefer execution_mode. | |
| limit | No | Maximum results. | |
| query | Yes | One or more Indeed search queries. | |
| fields | No | Specific fields to return. | |
| webhook | No | Optional webhook URL for async completion. | |
| enrichment | No | Optional documented enrichments. | |
| execution_mode | No | Execution strategy. Use auto to let the MCP server choose between sync and async. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| meta | Yes | |
| async | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden. It only states that it searches via an endpoint, giving no information about execution modes, rate limits, data handling, or side effects. This is minimal and uninformative for a tool that has async capabilities and enrichment options.
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 extremely short (one sentence) but it's under-specification rather than effective conciseness. It repeats the tool name and adds no structural benefit or front-loaded key information. It fails to convey any actionable details.
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?
Given the tool has 7 parameters, an output schema, and many sibling alternatives, the description is severely incomplete. It doesn't explain return structure, execution behavior, or selection criteria. Even though output schema exists, an agent lacks enough context to know when to call this tool 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?
The schema provides 100% description coverage for all 7 parameters, so the baseline is 3. The description adds no parameter-specific meaning beyond what the schema already documents. It doesn't compensate or elaborate on any parameter semantics.
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 clear verb+resource: 'Search Indeed'. It clearly identifies the target platform, distinguishing it from other search tools like google_search or yellowpages_search. However, it doesn't mention any scope or specific capabilities beyond the generic search, so it's not fully differentiated from similar 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?
No guidance is provided on when to use this tool versus the many sibling search tools. It doesn't mention any prerequisites, context, or exclusions. An agent cannot infer when Indeed is the appropriate choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
phones_enricherPhones EnricherAInspect
Enrich phone numbers using the documented /phones-enricher endpoint.
Best for:
carrier lookup
phone validation
message deliverability checks
Note: this endpoint is synchronous only and does not support async execution or webhooks.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | One or more phone numbers to enrich. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| meta | Yes | |
| async | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the full burden. It clearly states the synchronous nature and the lack of async/webhook support, which is a key behavioral trait. Beyond this, it doesn't detail other behaviors like rate limits or data retention, but the explicit note on execution mode is a significant disclosure that goes beyond typical descriptions.
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 compact and front-loaded, leading with the core purpose and then listing use cases in a bullet-like format. The note on synchronous execution is appended at the end, preserving flow. Every sentence has a purpose, with no fluff or repetition.
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?
Given the tool's simplicity (single parameter, no nested objects) and the presence of an output schema, the description covers the essential aspects: purpose, use cases, and execution mode. It doesn't describe the return format, but since an output schema exists, that's not required. The lack of annotations is compensated by the synchronous note, and there are no missing pieces for an agent to make a correct call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter 'query', which is described as 'One or more phone numbers to enrich.' The description adds value by implying that the query is about phone numbers and the purpose is enrichment, complementing the schema. It doesn't add extra syntax details, but the schema is already clear, so this is sufficient.
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's purpose: to enrich phone numbers using a specific endpoint. It lists three concrete use cases (carrier lookup, phone validation, message deliverability checks), which are specific enough to differentiate from sibling tools like emails_validator or businesses_search, which deal with different data types.
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 provides clear use cases ('Best for:') without explicitly naming alternatives for when not to use it. However, the clear focus on phone-specific tasks implicitly distinguishes it from email or business tools. It also mentions the synchronous-only limitation, guiding the agent on execution expectations, which is valuable for usage decisions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pingOutscraper PingAInspect
Check whether the Outscraper MCP server is running and return basic server metadata.
Best for:
validating local or container startup
confirming the MCP server is reachable before making live API calls
lightweight health checks in demos, IDE setups, or registry validation
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| meta | Yes | |
| async | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It explicitly states observable behavior: a reachability check plus return of basic server metadata, which also implies a read-only, non-destructive operation. It does not enumerate every operational detail like auth or latency, but for a simple ping that is sufficient.
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 compact and front-loaded: one clear declarative sentence followed by three relevant use-case bullets. Every sentence earns its place, with no filler or repetition.
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 zero-parameter health check with an output schema, the description fully covers what the tool does and when to use it. An agent has everything needed to select and invoke the tool 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?
The tool has zero parameters and the schema is trivially complete at 100% coverage. Per the baseline for no-parameter tools, the description is not required to add parameter semantics; nothing is missing.
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 uses a specific verb-plus-resource construction: 'Check whether the Outscraper MCP server is running and return basic server metadata.' This clearly differentiates ping from all sibling tools, which focus on scraping, search, review, and request/balance 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 'Best for' section gives concrete, actionable scenarios: validating startup, confirming reachability before live API calls, and lightweight health checks in demos or registry validation. It does not list exclusions or alternatives, but no sibling tool serves the same health-check purpose, so the guidance is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
requests_deleteOutscraper Request DeleteAInspect
Delete or terminate an asynchronous Outscraper request by request id.
Best for:
cleaning up queued or no-longer-needed async jobs
stopping work you no longer want to keep polling
testing the full async request lifecycle from MCP
Use this carefully:
it is intended for cleanup or cancellation
only use it when you are sure the request is no longer needed
after deletion, the original async request should not be expected to complete normally
| Name | Required | Description | Default |
|---|---|---|---|
| request_id | Yes | Async request id to delete. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| meta | Yes | |
| async | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description correctly carries the burden of disclosing destructive behavior. It clearly states the request will be terminated and should not be expected to complete normally, which is the key behavioral risk an agent must know before invoking.
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 well-structured with a front-loaded action, a 'Best for' list, and a 'Use this carefully' section. Minor redundancy exists between 'cleaning up... no-longer-needed jobs' and 'only use it when you are sure the request is no longer needed', but overall it is efficiently organized.
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 simple one-parameter delete tool with an output schema, the description covers purpose, appropriate use cases, caution, and the destructive consequence. Nothing essential is missing for an agent to decide whether and how to invoke it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema fully documents request_id (type: string, minLength: 1, 'Async request id to delete'), so the schema already covers parameter meaning. The description adds only 'by request id', which does not materially extend the schema's semantics.
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 ('Delete or terminate'), a specific resource ('asynchronous Outscraper request'), and a required identifier ('by request id'). This clearly distinguishes it from reading tools like requests_get and requests_list.
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 'Best for' bullets give concrete scenarios: cleaning up queued jobs, stopping polling, and testing lifecycle. It also provides a caution that the tool should only be used when the request is no longer needed, though it does not name sibling tools for locating or inspecting request IDs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
requests_getOutscraper Request StatusAInspect
Check the status of an asynchronous Outscraper request.
Use this after calling any tool with execution_mode="async" or after an auto-selected async submission. Typical flow:
call google_maps_reviews, company_insights, emails_and_contacts, or google_maps_search with execution_mode="async"
capture the returned request id
poll requests_get until the job is completed or failed
Use this tool when:
a previous tool returned an async request id
you want to know whether the request is Pending, Success, or Failure
you need the completed data from a previously submitted async job
| Name | Required | Description | Default |
|---|---|---|---|
| request_id | Yes | Async request id. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| meta | Yes | |
| async | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden of behavioral disclosure. It reveals that callers must poll until completion or failure and mentions the Pending/Success/Failure statuses, which is useful. However, it does not state that this is a read-only operation, note rate-limit considerations, or clarify what happens if the request id is invalid.
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 well structured: a clear lead sentence, a short typical flow, and a bulleted when-to-use list. Every section earns its place and the most important starting point is front-loaded.
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 single-parameter status-polling tool with an output schema, the description covers the trigger, the flow, the parameter source, and termination conditions. Nothing essential is missing 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?
The schema already covers the only parameter with 'Async request id.' and has 100% coverage. The description reinforces this by explaining the id comes from a prior async submission and should be captured after calling an async tool, which adds modest context but no new format or syntax details.
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 opens with a crisp verb-resource pairing: 'Check the status of an asynchronous Outscraper request.' It clearly differentiates from sibling tools like requests_list and requests_delete by focusing specifically on status polling of an already-submitted request.
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 gives explicit when-to-use conditions: after an async call, when an async request id was returned, and when pending/success/failure status is needed. It also presents a typical flow. It does not name an alternative like requests_list for listing or cleaning requests, so the exclusions are implicit rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
requests_listOutscraper Request HistoryAInspect
List recent Outscraper requests by bucket.
Best for:
debugging async flows
seeing running, completed, or failed jobs
checking what was recently submitted through the current API key
Use this when:
you lost a request id and want to find recent jobs
you want a quick view of recent running or finished requests
you are debugging async submissions across tools
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Optional request bucket. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| meta | Yes | |
| async | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full behavioral burden. It implies a read-only listing operation but does not explicitly state lack of side effects, authentication requirements, or behavior on empty result sets. It also fails to mention any pagination or rate-limit implications. The description lacks the transparency expected of a tool with zero 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?
The description is well-organized with a concise opening sentence followed by clearly labeled 'Best for' and 'Use this when' sections. It avoids fluff and front-loads the core purpose, making it easy for an agent to scan and understand quickly.
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?
Given the simple optional parameter and the presence of an output schema (as indicated by context), the description covers the essential use cases: listing recent requests, debugging async flows, and checking status. It does not mention edge cases like pagination or error conditions, but for a straightforward list tool with an output schema, this is reasonably 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?
The schema describes the only parameter 'type' as 'Optional request bucket.' The tool description adds meaning by explaining the buckets as 'running, completed, or failed,' which maps directly to the enum values. This enriches the schema description without redundancy.
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 opens with a clear, specific verb and resource: 'List recent Outscraper requests by bucket.' This immediately distinguishes it from sibling tools like requests_get (specific request retrieval) and requests_delete (deletion). The 'Best for' and 'Use this when' sections reinforce the purpose without tautology.
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 provides explicit 'Best for' and 'Use this when' lists, giving concrete scenarios such as debugging async flows and recovering lost request IDs. It does not explicitly name alternatives, but the context makes the intended use clear enough relative to sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tp_dataTrustpilot Data (Legacy Alias)BInspect
Legacy alias for trustpilot_data. Prefer trustpilot_data for new integrations.
| Name | Required | Description | Default |
|---|---|---|---|
| async | No | Deprecated compatibility flag. Prefer execution_mode. | |
| query | Yes | One or more Trustpilot domains or review URLs. | |
| fields | No | Specific fields to return. | |
| webhook | No | Optional webhook URL for async completion. | |
| enrichment | No | Optional documented enrichments. | |
| execution_mode | No | Execution strategy. Use auto to let the MCP server choose between sync and async. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| meta | Yes | |
| async | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosuretons. It only states that the tool is a legacy alias and that the canonical tool should be preferred; it does not describe what the tool does, side effects, return behavior, async implications, or any operational constraints. The alias status is useful but not enough behavioral context.
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 two short sentences with no wasted words. The legacy-alias status is stated firstable, and the routing recommendation follows immediately. It earns its place as a compact deprecation notice.
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 tool is a simple alias with a well-covered schema and an output schema, so the structured data fills many gaps. However, the description does not independently state what the tool does or how its behavior relates to trustpilot_data beyond being an 'alias.' For a legacy alias, the deprecation guidance is communicated, but an agent would still need to consult the canonical tool's description for full context.
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 parameters are already well documented in the input schema, including query, execution_mode, async, fields, webhook, and enrichment. The description adds no additional parameter meaning and does not need to because the schema already carries the semantic weight.
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 identifies the tool as a legacy alias for trustpilot_data, which makes its relationship to the sibling clear, but it does not state the actual function with a verb and resource. The title 'Trustpilot Data' and the schema's query description imply it retrieves Trustpilot data, but the description itself only describes its alias/deprecation status.
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 explicitly names the preferred alternative and the condition: 'Prefer trustpilot_data for new integrations.' This clearly tells the agent when not to use this tool and directs it to the correct sibling able. It does not spell out 'use this only for legacy integrations,' but that is strongly implied by the word 'Legacy.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tp_reviewsTrustpilot Reviews (Legacy Alias)BInspect
Legacy alias for trustpilot_reviews. Prefer trustpilot_reviews for new integrations.
| Name | Required | Description | Default |
|---|---|---|---|
| skip | No | Skip reviews. | |
| async | No | Deprecated compatibility flag. Prefer execution_mode. | |
| query | Yes | One or more Trustpilot domains or review URLs. | |
| fields | No | Specific fields to return. | |
| webhook | No | Optional webhook URL for async completion. | |
| languages | No | Language filters. | |
| reviews_limit | No | Maximum reviews per query. | |
| execution_mode | No | Execution strategy. Use auto to let the MCP server choose between sync and async. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| meta | Yes | |
| async | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only mentions legacy alias status and says nothing about execution behavior, data returned, side effects, async handling, or rate limits. For a tool with execution_mode and async parameters, this is a significant gap.
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 two short sentences with no filler. It front-loads the alias status and immediately communicates the preferred alternative. Every word 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?
The definition is adequate for a legacy alias whose main job is to route agents to trustpilot_reviews, and the rich schema covers parameters and outputs. However, it lacks any operational description of what the tool does, leaving the agent to infer behavior from the title and schema alone.
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 parameters are already well documented in the schema. The description adds no additional parameter meaning, which matches the baseline of 3 for complete schema coverage.
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 identifies tp_reviews as a 'Legacy alias for trustpilot_reviews' but never states the actual action or resource, such as fetching Trustpilot reviews. The title and schema implicitly communicate the purpose, but the description itself remains vague and indirect.
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 explicitly instructs agents to 'Prefer trustpilot_reviews for new integrations', which gives clear routing guidance away from this alias. It does not elaborate on when legacy usage is acceptable, but the alias status plus preference statement is sufficient context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tripadvisor_reviewsTripadvisor ReviewsCInspect
Fetch Tripadvisor reviews with the documented /tripadvisor-reviews endpoint.
| Name | Required | Description | Default |
|---|---|---|---|
| async | No | Deprecated compatibility flag. Prefer execution_mode. | |
| query | Yes | One or more Tripadvisor URLs. | |
| cutoff | No | Cutoff value accepted by Outscraper. | |
| fields | No | Specific fields to return. | |
| webhook | No | Optional webhook URL for async completion. | |
| language | No | Language code. | |
| reviews_limit | No | Maximum reviews per query. | |
| execution_mode | No | Execution strategy. Use auto to let the MCP server choose between sync and async. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| meta | Yes | |
| async | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only says 'fetch,' without mentioning how the endpoint behaves regarding async execution, webhooks, cutoff handling, or response structure. This is minimal but not misleading.
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 short and front-loaded, but part of it is filler: 'with the documented /tripadvisor-reviews endpoint' adds little since the endpoint is implied by the tool name. It is concise but misses an opportunity to convey meaningful guidance.
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?
Despite having an output schema and well-documented parameters, this 8-parameter tool still needs usage context that the description does not provide. There is no indication of how to construct queries, what the output represents, or how async/webhook behavior should be handled.
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 parameters are already documented with descriptions like 'One or more Tripadvisor URLs' and 'Execution strategy.' The tool description adds no extra semantic value beyond what the schema provides, so the 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?
The description states a clear verb and resource: 'Fetch Tripadvisor reviews.' This distinguishes it from broad search tools like tripadvisor_search, though it does not explicitly differentiate it from other review-focused siblings such as booking_reviews or yelp_reviews.
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?
No guidance is given on when to choose this tool over alternatives. The description does not explain that Tripadvisor URLs are required, when async execution makes sense, or when to use another scraper or review tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tripadvisor_searchTripadvisor SearchCInspect
Search Tripadvisor with the documented /tripadvisor-search endpoint.
| Name | Required | Description | Default |
|---|---|---|---|
| skip | No | Skip results. | |
| async | No | Deprecated compatibility flag. Prefer execution_mode. | |
| limit | No | Maximum results. | |
| query | Yes | One or more Tripadvisor search queries or URLs. | |
| fields | No | Specific fields to return. | |
| webhook | No | Optional webhook URL for async completion. | |
| search_type | No | Tripadvisor SearchType parameter from the documented endpoint. | |
| execution_mode | No | Execution strategy. Use auto to let the MCP server choose between sync and async. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| meta | Yes | |
| async | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It mentions nothing about whether it is read-only, whether it can be async (though parameters suggest async support), pagination behavior, rate limits, or whether it might be slow. The phrase 'documented endpoint' implies an external API but does not explain side effects or operational 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?
The description is a single sentence, which is concise, but it is under-specified. It refers to 'documented' endpoint without offering any inline hint about the endpoint's purpose. For 8 parameters and complex sibling landscape, a few more sentences would improve usability without bloating.
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?
Given the tool's complexity (8 params, multiple siblings, output schema present), the description is insufficient. It does not explain what the output looks like, how to interpret results, how to choose between sync/async, or how this search differs from tripadvisor_reviews. Agents would likely struggle to select and call this correctly without external documentation.
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 each parameter has a description, but the descriptions are minimal (e.g., 'Skip results', 'Maximum results'). The overall description does not explain how parameters like 'query' (array of strings) are used, what 'search_type' values are valid, or how 'execution_mode' differs from 'async'. It adds little 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?
The description states 'Search Tripadvisor' which is a clear verb+resource, but it lacks scoping details such as what types of entities (businesses, reviews, etc.) are returned. It only references the 'documented /tripadvisor-search endpoint' without elaborating, which is somewhat vague. It does not distinguish itself from siblings like 'tripadvisor_reviews' or 'businesses_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?
No guidance is given on when to use this tool versus siblings such as tripadvisor_reviews or google_maps_search. The description does not state whether to use it for general searches vs. specific entities, nor does it provide context like 'use for broad searches; use tripadvisor_reviews for detailed review retrieval'. With 8 parameters and many siblings, more guidance is needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
trustpilot_dataTrustpilot DataCInspect
Fetch Trustpilot business data with the documented /trustpilot endpoint.
| Name | Required | Description | Default |
|---|---|---|---|
| async | No | Deprecated compatibility flag. Prefer execution_mode. | |
| query | Yes | One or more Trustpilot domains or review URLs. | |
| fields | No | Specific fields to return. | |
| webhook | No | Optional webhook URL for async completion. | |
| enrichment | No | Optional documented enrichments. | |
| execution_mode | No | Execution strategy. Use auto to let the MCP server choose between sync and async. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| meta | Yes | |
| async | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of disclosing behavior. It does not mention that the tool may execute asynchronously (despite execution_mode and webhook params), rate limits, data scoping limitations, or any side effects. 'Fetch' implies a read operation but does not address the async complexity present in the 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?
The description is a single concise sentence with no filler, and the core action and target are front-loaded. However, it is arguably under-specified for the tool's complexity, but the dimension rewards efficiency over completeness; there is zero 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?
Given the tool's 6 parameters, no annotations, several ambiguous sibling tools, and no usage guidance, the description is insufficient. The output schema exists so return values need not be described, but the description still lacks information about when to use it, what data is fetched, and how it relates to similar Trustpilot tools.
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?
The schema description coverage is 100%, and the description adds no extra parameter meaning. It does not clarify how 'enrichment' works, what 'fields' are valid, or how 'query' should be formatted beyond the schema. Baseline 3 applies because the schema already handles parameter documentation.
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 a specific verb ('Fetch') and resource ('Trustpilot business data'), so an agent knows what action is performed. However, it does not differentiate this tool from near-siblings like 'tp_data', 'trustpilot_reviews', or 'tp_reviews', and 'business data' is broad enough to overlap with other Trustpilot tools.
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 provides no guidance on when to use this tool versus alternatives, no exclusion criteria, and no mention of recommended use cases. It merely states what it does, leaving the agent to infer selection from the name and broad 'business data' phrase.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
trustpilot_reviewsTrustpilot ReviewsDInspect
Fetch Trustpilot reviews with the documented /trustpilot-reviews endpoint.
| Name | Required | Description | Default |
|---|---|---|---|
| skip | No | Skip reviews. | |
| async | No | Deprecated compatibility flag. Prefer execution_mode. | |
| query | Yes | One or more Trustpilot domains or review URLs. | |
| fields | No | Specific fields to return. | |
| webhook | No | Optional webhook URL for async completion. | |
| languages | No | Language filters. | |
| reviews_limit | No | Maximum reviews per query. | |
| execution_mode | No | Execution strategy. Use auto to let the MCP server choose between sync and async. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| meta | Yes | |
| async | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of disclosing behavioral traits. The single sentence mentions the endpoint but reveals nothing about execution modes (async/sync), rate limits, error behavior, pagination, or side effects. Even the existence of an execution_mode parameter is not hinted at. This is insufficient for an agent to understand how the tool behaves beyond 'fetching.'
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 one short sentence, which is concise but severely under-specified. It does not front-load any critical scoping info or behaviors. The phrase 'with the documented /trustpilot-reviews endpoint' is filler that adds no value. For a tool with eight parameters and an output schema, this is too brief to be useful; it reads like a stub rather than a considered description.
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?
Despite having an output schema and eight parameters (including execution_mode and async), the description explains none of the operational context. It does not mention how to choose between sync/async, what fields can be requested, how pagination works, or what the response structure is. An agent would need to rely entirely on the schema and output schema, which may not capture runtime behavior. The description is critically incomplete for a tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all eight parameters have descriptive text in the schema. The description adds no extra meaning to the parameters, but the schema already documents their roles. Per the rubric, with high schema coverage the baseline is 3, and the description does not lower that score. However, it also does not add any semantic clarity 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?
The description states a clear verb and resource ('Fetch Trustpilot reviews'), and mentions a specific endpoint. However, it does not differentiate this tool from several siblings with overlapping purposes (trustpilot_data, tp_reviews, tp_data), and the word 'documented' adds no distinguishing information. Without specifying scope or uniqueness, the purpose is clear but not well differentiated.
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 provides no guidance on when to use this tool versus alternatives. It neither states when to prefer it nor mentions any exclusions or prerequisites. There are many sibling review tools (e.g., yelp_reviews, tripadvisor_reviews) that could overlap, and the agent is left with no decision support. This is a complete absence of usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
yellowpages_searchYellowpages SearchCInspect
Search Yellowpages with the documented /yellowpages-search endpoint.
| Name | Required | Description | Default |
|---|---|---|---|
| async | No | Deprecated compatibility flag. Prefer execution_mode. | |
| limit | No | Maximum results. | |
| query | Yes | One or more Yellowpages search queries. | |
| fields | No | Specific fields to return. | |
| region | No | Region code. | |
| webhook | No | Optional webhook URL for async completion. | |
| location | No | Optional locations paired with the search query. | |
| enrichment | No | Optional documented enrichments. | |
| execution_mode | No | Execution strategy. Use auto to let the MCP server choose between sync and async. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| meta | Yes | |
| async | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility for disclosing behavior, but it reveals nothing beyond the endpoint name. It does not mention execution modes, async behavior, webhooks, result shape, pagination, rate limits, or what data is returned. The phrase 'documented endpoint' punts all useful context to an unspecified external reference.
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 text is short, but shortness here is under-specification, not conciseness. The single sentence earns no real informational value because it merely rephrases the title and references an endpoint. It is a placeholder-level description.
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?
Despite the output schema and fully documented parameters, the description leaves out critical context for a tool with 9 parameters, async/sync execution, deprecated flags, enrichment, and webhooks. The phrase 'documented endpoint' is not a substitute for telling an agent what the tool does, how it behaves, and when to reach for it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already documents all nine parameters and their purposes. The description adds zero param-level meaning, but because the schema carries the burden, the baseline score of 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?
The description restates the tool name and title almost verbatim: 'Search Yellowpages with the documented /yellowpages-search endpoint.' It names a verb and resource, but provides no semantic differentiation from sibling tools such as businesses_search, google_maps_search, or yelp_reviews. It reads as a tautology rather than a substantive definition.
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 offers no guidance on when to use this tool versus alternatives. It does not mention use cases, exclusions, prerequisites, or how it relates to the many sibling search and data tools. The only implicit signal is that it searches Yellowpages, which is too weak to support correct tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
yelp_reviewsYelp ReviewsCInspect
Fetch Yelp reviews with the documented /yelp-reviews endpoint.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | Yelp sort parameter. | |
| async | No | Deprecated compatibility flag. Prefer execution_mode. | |
| query | Yes | One or more Yelp business URLs. | |
| cursor | No | Pagination cursor. | |
| cutoff | No | Cutoff value accepted by Outscraper. | |
| fields | No | Specific fields to return. | |
| webhook | No | Optional webhook URL for async completion. | |
| reviews_limit | No | Maximum reviews per query. | |
| execution_mode | No | Execution strategy. Use auto to let the MCP server choose between sync and async. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| meta | Yes | |
| async | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden. 'Fetch' implies a read operation, but it does not disclose pagination behavior, async execution, webhook handling, rate limits, or side effects of parameters like execution_mode and async. This is a substantial gap for a non-trivial scraping tool.
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, front-loaded sentence with no wasted words. The phrase 'with the documented /yelp-reviews endpoint' adds little beyond the tool name, but overall the length is appropriate for the little content it conveys.
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?
Given the tool's complexity — nine parameters, async/sync execution modes, pagination cursor, webhook, and a cutoff parameter — a one-sentence description is not enough for an agent to select and invoke it correctly. The output schema may cover return values, but usage context and behavioral expectations remain largely unexplained.
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 nine parameters. The description adds no parameter-level meaning, but per the rubric the baseline is 3 when the schema covers the parameters; the description neither helps nor harms.
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 verb 'Fetch' and the resource 'Yelp reviews', and the endpoint reference reinforces the operation. It does not explicitly contrast itself with review tools for other platforms, but the resource name makes the core purpose 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?
The description gives no guidance on when to use this tool versus siblings like tripadvisor_reviews, google_maps_reviews, or trustpilot_reviews. There are no usage conditions, prerequisites, or exclusion criteria, so an agent must infer applicability solely from the tool name.
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.
28 tool updates
v0.2.5- Changed
ai_scraper2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
balance_get2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
booking_reviews2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
businesses_get2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
businesses_search2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
chain_info2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
company_insights2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
emails_and_contacts2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
emails_validator2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
google_maps_photos2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
google_maps_reviews2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
google_maps_search2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
google_search2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
google_search_images2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
indeed_search2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
phones_enricher2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
ping2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
requests_delete2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
requests_get2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
requests_list2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
tp_data2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
tp_reviews2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
tripadvisor_reviews2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
tripadvisor_search2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
trustpilot_data2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
trustpilot_reviews2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
yellowpages_search2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
yelp_reviews2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
28 tool updates
v0.2.3- First observed
ai_scraper - First observed
balance_get - First observed
booking_reviews - First observed
businesses_get - First observed
businesses_search - First observed
chain_info - First observed
company_insights - First observed
emails_and_contacts - First observed
emails_validator - First observed
google_maps_photos - First observed
google_maps_reviews - First observed
google_maps_search - First observed
google_search - First observed
google_search_images - First observed
indeed_search - First observed
phones_enricher - First observed
ping - First observed
requests_delete - First observed
requests_get - First observed
requests_list - First observed
tp_data - First observed
tp_reviews - First observed
tripadvisor_reviews - First observed
tripadvisor_search - First observed
trustpilot_data - First observed
trustpilot_reviews - First observed
yellowpages_search - First observed
yelp_reviews
TDQS
Scored across 28 tools
Most source-specific tools like yelp_reviews, indeed_search, and google_maps_photos are clearly distinct, but google_maps_search and businesses_search overlap for place/business discovery. The legacy aliases tp_data/trustpilot_data and tp_reviews/trustpilot_reviews are direct duplicates, and while descriptions help, an agent can still misselect between the search and enrichment tools.
The set is overwhelmingly consistent: lowercase snake_case object_action names like businesses_search, requests_list, and emails_validator dominate. Deviations like ping, chain_info, company_insights, and the tp_* legacy aliases break the pattern slightly, but the naming remains predictable overall.
At 28 tools, the server exceeds the reasonable range for an MCP surface, even for a broad scraping platform. Several tools are near-duplicates or legacy aliases, and the count adds cognitive load beyond what the core workflows require.
The surface covers the main Outscraper workflows well: place/business search, per-source reviews and photos, enrichment, email/phone validation, and async request lifecycle management. Minor gaps like a dedicated place-details endpoint are workable because businesses_get and the requests_* tools fill adjacent needs.
Maintenance
Related MCP Connectors
Direct access to 60+ scraping and search tools. Extract structured data from Google (Search, Maps, Trends), Amazon, Airbnb, Social Media, and any web page directly into your AI agent.
Search companies, enrich contacts, and reveal emails and phones from your AI agent.
Paid business, people, company, lead, and web intelligence for autonomous AI agents.
Give your agent live data from Twitter, Reddit, the web and GitHub. No API keys, no scraping stack.
Related MCP Servers
AlicenseNot gradedqualityCmaintenanceProvides access to Outscraper's data extraction services for business intelligence, location data, and reviews across platforms like Google Maps, Amazon, and Yelp. It enables AI assistants to perform comprehensive web scraping tasks including contact information retrieval and geolocation services.7MIT
HasData MCP Serverofficial
AlicenseAqualityAmaintenanceDirect access to 40+ scraping and search tools. Extract structured data from Google (Search, Maps, Trends), Amazon, Airbnb, Social Media, and any web page directly into your AI agent.6636MIT- AlicenseAqualityCmaintenanceConnects AI agents to AgentData's company intelligence platform, enabling natural language queries for structured company data like tech stacks, emails, people, and signals.66 npmMIT
- AlicenseBqualityBmaintenanceEnables AI assistants to access structured public web data (profiles, posts, videos, etc.) from social networks and directories via natural language, by forwarding tool calls to the scraper-api.com API.8410 npmMIT