Skip to main content
Glama
outscraper

Outscraper MCP

Official
by outscraper

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 with businesses_get

  • search 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_get

  • extract 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_scraper

  • async 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-mcp

For MCP clients, configure:

  • command: npx

  • args: ["-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

  • ping

  • businesses_search

  • businesses_get

  • ai_scraper

  • google_maps_search

  • google_maps_reviews

  • company_insights

  • emails_and_contacts

  • emails_validator

  • google_maps_photos

  • chain_info

  • yellowpages_search

  • booking_reviews

  • phones_enricher

  • tp_data (legacy alias for trustpilot_data)

  • trustpilot_data

  • tp_reviews (legacy alias for trustpilot_reviews)

  • trustpilot_reviews

  • yelp_reviews

  • tripadvisor_search

  • tripadvisor_reviews

  • google_search

  • google_search_images

  • indeed_search

  • balance_get

  • requests_get

  • requests_list

  • requests_delete

These tools are aligned to the current documented Outscraper API shapes, including:

  • POST /businesses

  • POST /ai-scraper

  • GET /businesses/{business_id}

  • GET /google-maps-search

  • GET /google-maps-photos

  • GET /google-search

  • GET /google-search-images

  • GET /yellowpages-search

  • GET /booking-reviews

  • GET /phones-enricher

  • GET /trustpilot

  • GET /trustpilot-reviews

  • GET /yelp-reviews

  • GET /tripadvisor-search

  • GET /tripadvisor-reviews

  • GET /indeed-search

  • GET /google-maps-reviews

  • GET /company-insights

  • GET /emails-and-contacts

  • GET /email-validator

  • documented ai_chain_info enrichment via google-maps-search

  • GET /profile/balance

  • GET /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 async

  • sync: force direct response mode

  • async: 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-mcp

Provide 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_KEY environment 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-KEY

  • X-API-KEY

  • Authorization: Bearer <api-key>

  • /v1/mcp/<api-key> path auth

Transport:

  • HTTP POST /mcp

  • HTTP 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 /mcp

  • GET /mcp

  • DELETE /mcp

  • and 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_KEY

Recommended setup:

  1. Deploy the server over HTTPS behind a real domain or reverse proxy.

  2. Enable hosted mode with CLOUD_SERVICE=true.

  3. Use the URL-auth route if the connector cannot attach custom auth headers.

  4. Prefer header auth for server-to-server clients when custom headers are available.

Typical connector values:

  • Name: Outscraper MCP

  • Description: Business discovery, Google Maps data, enrichment, search, and AI scraping

  • MCP Server URL: https://your-domain.example/v1/mcp/YOUR_API_KEY

  • Authentication: 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=true

Then 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_KEY

This 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-mcp

MCP endpoint:

http://localhost:3000/mcp

Hosted URL auth endpoint:

http://localhost:3000/v1/mcp/YOUR_API_KEY

Health endpoint:

http://localhost:3000/health

Run with Docker Compose

This repository also includes a docker-compose.yml for hosted/container deployments:

docker compose up --build -d

Default container behavior:

  • binds 3000:3000

  • enables CLOUD_SERVICE=true

  • enables stateless Streamable HTTP

  • listens on 0.0.0.0

  • uses https://api.outscraper.com as the upstream API base URL

Endpoints:

http://localhost:3000/mcp
http://localhost:3000/v1/mcp/YOUR_API_KEY
http://localhost:3000/health

Important 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-mcp

You can also enable the same mode with:

set HTTP_STATEFUL_SERVER=true
set HOST=localhost
set PORT=3000
npx -y outscraper-mcp

In this mode the server accepts:

  • POST /mcp for initialize and subsequent requests

  • GET /mcp for the session stream

  • DELETE /mcp for 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_KEY

Client 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-mcp

Add 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-mcp

Then use:

http://localhost:3000/mcp

Tool 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_search works reliably with structured filters, but free-form query values on /businesses may fail with Could not parse query into a valid request format. This behavior was reproduced against the live API, not only inside the MCP layer.

  • ai_scraper works best through POST with a JSON body. In live validation, POST accepted prompt and schema reliably, while GET variants around schema and query_schema did 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_search is intentionally exposed here as a synchronous MCP tool because the current /businesses OpenAPI 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 use sync or async.

  • HTTP hosted mode requires correct auth headers when CLOUD_SERVICE=true; stdio mode still expects OUTSCRAPER_API_KEY in the process environment.

  • chain_info is implemented from the documented ai_chain_info enrichment on google-maps-search, because Outscraper currently does not describe a standalone chain info endpoint.

  • builtwith is not currently exposed as a tool because Outscraper currently does not document a dedicated BuiltWith endpoint.

Tool Selection Notes

  • Use businesses_search for structured business discovery with filters and cursor pagination.

  • Use businesses_get once you already have a concrete business id.

  • Use google_maps_search for Google Maps-style place discovery from human search queries.

  • Use google_maps_reviews when the user specifically needs review data rather than place discovery.

  • Use company_insights for firmographics and company profile enrichment.

  • Use emails_and_contacts for contact discovery from known domains.

  • Use requests_get, requests_list, and requests_delete only for async lifecycle management.

  • Use balance_get for account and billing checks, not business data retrieval.

Notes

  • The server supports stdio, stateless Streamable HTTP, and stateful local HTTP/SSE mode.

  • CLOUD_SERVICE=true enables 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 tools
ai_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

ParametersJSON Schema
NameRequiredDescriptionDefault
asyncNoDeprecated compatibility flag. Prefer execution_mode.
queryYesOne URL to scrape, for example https://outscraper.com.
promptNoNatural-language extraction instructions, for example what to summarize or pull from the page.
schemaNoExtraction schema describing the shape of the result. This is typically a JSON-schema-like object with type, properties, and optional required fields.
execution_modeNoExecution strategy. Use auto to let the MCP server choose between sync and async.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
metaYes
asyncNo

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
metaYes
asyncNo

TDQS

A4.3/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
skipNoSkip reviews.
sortNoBooking sort parameter.
asyncNoDeprecated compatibility flag. Prefer execution_mode.
queryYesOne or more Booking URLs.
cutoffNoCutoff value accepted by Outscraper.
fieldsNoSpecific fields to return.
regionNoRegion code.
webhookNoOptional webhook URL for async completion.
languageNoLanguage code.
reviews_limitNoMaximum reviews per query.
execution_modeNoExecution strategy. Use auto to let the MCP server choose between sync and async.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
metaYes
asyncNo

TDQS

C2.8/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldsNoSpecific fields to return.
business_idYesOutscraper business id returned by /businesses search.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
metaYes
asyncNo

TDQS

A4.2/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
asyncNoDeprecated compatibility flag. Prefer execution_mode.
limitNoOrganizations per query limit.
queryYesOne or more Google Maps-style business queries.
regionNoRegion code.
webhookNoOptional webhook URL for async completion.
languageNoLanguage code.
execution_modeNoExecution strategy. Use auto to let the MCP server choose between sync and async.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
metaYes
asyncNo

TDQS

A3.9/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
asyncNoDeprecated compatibility flag. Prefer execution_mode.
queryYesOne or more company domains, company names, or URLs supported by Outscraper.
fieldsNoSpecific company insight fields to return. Leave empty to receive the default payload.
webhookNoOptional webhook URL for async completion.
enrichmentsNoOptional enrichments supported by Outscraper for company insights.
execution_modeNoExecution strategy. Use auto to let the MCP server choose between sync and async.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
metaYes
asyncNo

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
asyncNoDeprecated compatibility flag. Prefer execution_mode.
queryYesOne or more domains or URLs, for example outscraper.com.
webhookNoOptional webhook URL for async completion.
execution_modeNoExecution strategy. Use auto to let the MCP server choose between sync and async.
preferred_contactsNoOptional contact-role prioritization.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
metaYes
asyncNo

TDQS

A4.7/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
asyncNoDeprecated compatibility flag. Prefer execution_mode.
queryYesOne or more email addresses to validate.
webhookNoOptional webhook URL for async completion.
execution_modeNoExecution strategy. Use auto to let the MCP server choose between sync and async.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
metaYes
asyncNo

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
tagNoOptional photo filter tag.
asyncNoDeprecated compatibility flag. Prefer execution_mode.
limitNoMaximum places to process.
queryYesOne or more Google Maps place queries or ids.
fieldsNoSpecific fields to return.
regionNoRegion code.
webhookNoOptional webhook URL for async completion.
languageNoLanguage code.
photos_limitNoMaximum photos per place.
execution_modeNoExecution strategy. Use auto to let the MCP server choose between sync and async.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
metaYes
asyncNo

TDQS

A3.5/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNoReview sorting mode.
asyncNoDeprecated compatibility flag. Prefer execution_mode.
limitNoMaximum number of places to process.
queryYesOne or more place ids or Google Maps business queries.
startNoStart date or offset accepted by Outscraper.
cutoffNoCutoff date/timestamp accepted by Outscraper.
fieldsNoSpecific review fields to return.
regionNoRegion code, for example us.
sourceNoReview source.
webhookNoOptional webhook URL for async completion.
languageNoLanguage code, for example en.
ignore_emptyNoSkip places without reviews.
cutoff_ratingNoMinimum rating cutoff.
reviews_limitNoMaximum reviews per place.
reviews_queryNoOptional keyword filter inside reviews.
execution_modeNoExecution strategy. Use auto to let the MCP server choose between sync and async.
last_pagination_idNoResume token from previous page.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
metaYes
asyncNo

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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_search_imagesGoogle Search ImagesCInspect

Search Google Images with the documented /google-search-images endpoint.

ParametersJSON Schema
NameRequiredDescriptionDefault
uuleNoOptional Google UULE location string.
asyncNoDeprecated compatibility flag. Prefer execution_mode.
limitNoItems per query limit.
queryYesOne or more Google image search queries.
fieldsNoSpecific fields to return.
regionNoRegion code.
webhookNoOptional webhook URL for async completion.
languageNoLanguage code.
execution_modeNoExecution strategy. Use auto to let the MCP server choose between sync and async.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
metaYes
asyncNo

TDQS

C2.7/5.0
Behavior2/5

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.

Conciseness2/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesOne or more phone numbers to enrich.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
metaYes
asyncNo

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
metaYes
asyncNo

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
request_idYesAsync request id to delete.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
metaYes
asyncNo

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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:

  1. call google_maps_reviews, company_insights, emails_and_contacts, or google_maps_search with execution_mode="async"

  2. capture the returned request id

  3. 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

ParametersJSON Schema
NameRequiredDescriptionDefault
request_idYesAsync request id.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
metaYes
asyncNo

TDQS

A4.1/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoOptional request bucket.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
metaYes
asyncNo

TDQS

A3.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
asyncNoDeprecated compatibility flag. Prefer execution_mode.
queryYesOne or more Trustpilot domains or review URLs.
fieldsNoSpecific fields to return.
webhookNoOptional webhook URL for async completion.
enrichmentNoOptional documented enrichments.
execution_modeNoExecution strategy. Use auto to let the MCP server choose between sync and async.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
metaYes
asyncNo

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose3/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
skipNoSkip reviews.
asyncNoDeprecated compatibility flag. Prefer execution_mode.
queryYesOne or more Trustpilot domains or review URLs.
fieldsNoSpecific fields to return.
webhookNoOptional webhook URL for async completion.
languagesNoLanguage filters.
reviews_limitNoMaximum reviews per query.
execution_modeNoExecution strategy. Use auto to let the MCP server choose between sync and async.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
metaYes
asyncNo

TDQS

B3/5.0
Behavior1/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose3/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
asyncNoDeprecated compatibility flag. Prefer execution_mode.
queryYesOne or more Tripadvisor URLs.
cutoffNoCutoff value accepted by Outscraper.
fieldsNoSpecific fields to return.
webhookNoOptional webhook URL for async completion.
languageNoLanguage code.
reviews_limitNoMaximum reviews per query.
execution_modeNoExecution strategy. Use auto to let the MCP server choose between sync and async.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
metaYes
asyncNo

TDQS

C2.8/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

trustpilot_dataTrustpilot DataCInspect

Fetch Trustpilot business data with the documented /trustpilot endpoint.

ParametersJSON Schema
NameRequiredDescriptionDefault
asyncNoDeprecated compatibility flag. Prefer execution_mode.
queryYesOne or more Trustpilot domains or review URLs.
fieldsNoSpecific fields to return.
webhookNoOptional webhook URL for async completion.
enrichmentNoOptional documented enrichments.
execution_modeNoExecution strategy. Use auto to let the MCP server choose between sync and async.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
metaYes
asyncNo

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
skipNoSkip reviews.
asyncNoDeprecated compatibility flag. Prefer execution_mode.
queryYesOne or more Trustpilot domains or review URLs.
fieldsNoSpecific fields to return.
webhookNoOptional webhook URL for async completion.
languagesNoLanguage filters.
reviews_limitNoMaximum reviews per query.
execution_modeNoExecution strategy. Use auto to let the MCP server choose between sync and async.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
metaYes
asyncNo

TDQS

D1.9/5.0
Behavior1/5

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.

Conciseness2/5

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.

Completeness1/5

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.

Parameters3/5

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.

Purpose3/5

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.

Usage Guidelines1/5

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.

yelp_reviewsYelp ReviewsCInspect

Fetch Yelp reviews with the documented /yelp-reviews endpoint.

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNoYelp sort parameter.
asyncNoDeprecated compatibility flag. Prefer execution_mode.
queryYesOne or more Yelp business URLs.
cursorNoPagination cursor.
cutoffNoCutoff value accepted by Outscraper.
fieldsNoSpecific fields to return.
webhookNoOptional webhook URL for async completion.
reviews_limitNoMaximum reviews per query.
execution_modeNoExecution strategy. Use auto to let the MCP server choose between sync and async.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
metaYes
asyncNo

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

  1. 28 tool updatesv0.2.5
    • Changedai_scraper2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedbalance_get2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedbooking_reviews2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedbusinesses_get2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedbusinesses_search2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedchain_info2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompany_insights2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedemails_and_contacts2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedemails_validator2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedgoogle_maps_photos2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedgoogle_maps_reviews2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedgoogle_maps_search2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedgoogle_search2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedgoogle_search_images2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedindeed_search2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedphones_enricher2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedping2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedrequests_delete2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedrequests_get2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedrequests_list2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedtp_data2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedtp_reviews2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedtripadvisor_reviews2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedtripadvisor_search2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedtrustpilot_data2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedtrustpilot_reviews2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedyellowpages_search2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedyelp_reviews2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
  2. 28 tool updatesv0.2.3
    • First observedai_scraper
    • First observedbalance_get
    • First observedbooking_reviews
    • First observedbusinesses_get
    • First observedbusinesses_search
    • First observedchain_info
    • First observedcompany_insights
    • First observedemails_and_contacts
    • First observedemails_validator
    • First observedgoogle_maps_photos
    • First observedgoogle_maps_reviews
    • First observedgoogle_maps_search
    • First observedgoogle_search
    • First observedgoogle_search_images
    • First observedindeed_search
    • First observedphones_enricher
    • First observedping
    • First observedrequests_delete
    • First observedrequests_get
    • First observedrequests_list
    • First observedtp_data
    • First observedtp_reviews
    • First observedtripadvisor_reviews
    • First observedtripadvisor_search
    • First observedtrustpilot_data
    • First observedtrustpilot_reviews
    • First observedyellowpages_search
    • First observedyelp_reviews

TDQS

B3/5.0

Scored across 28 tools

Disambiguation3/5

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.

Naming Consistency4/5

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.

Tool Count2/5

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.

Completeness4/5

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

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Provides 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.
    7
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Direct 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.
    6
    63
    6
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Connects AI agents to AgentData's company intelligence platform, enabling natural language queries for structured company data like tech stacks, emails, people, and signals.
    6
    6 npm
    MIT
  • A
    license
    B
    quality
    B
    maintenance
    Enables 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.
    84
    10 npm
    MIT