Skip to main content
Glama
scraperapi

scraperapi-mcp-server

Official
by scraperapi

ScraperAPI MCP server

The ScraperAPI MCP server enables LLM clients to retrieve and process web scraping requests using the ScraperAPI services.

This is the self-hosted (local) server. A hosted (remote) version is also available.

pypi package License

scraperapi-mcp-server MCP server

Table of Contents

Related MCP server: ma-browser

Features

  • Full implementation of the Model Context Protocol specification

  • Seamless integration with ScraperAPI for web scraping

  • Simple setup with Python or Docker

Architecture

          ┌───────────────┐     ┌───────────────────────┐     ┌───────────────┐
          │  LLM Client   │────▶│  Scraper MCP Server   │────▶│    AI Model   │
          └───────────────┘     └───────────────────────┘     └───────────────┘
                                            │
                                            ▼
                                  ┌──────────────────┐
                                  │  ScraperAPI API  │
                                  └──────────────────┘

Installation

The ScraperAPI MCP Server is designed to run as a local server on your machine, your LLM client will launch it automatically when configured.

Prerequisites

  • Python 3.11+

  • Docker (optional)

Using Python

Install the package:

pip install scraperapi-mcp-server

Add this to your client configuration file:

{
  "mcpServers": {
    "ScraperAPI": {
      "command": "python",
      "args": ["-m", "scraperapi_mcp_server"],
      "env": {
        "API_KEY": "<YOUR_SCRAPERAPI_API_KEY>"
      }
    }
  }
}

Using Docker

Add this to your client configuration file:

{
  "mcpServers": {
    "ScraperAPI": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "-e",
        "API_KEY=${API_KEY}",
        "--rm",
        "scraperapi-mcp-server"]
    }
  }
}
TIP

If your command is not working (for example, you see a package not found error when trying to start the server), double-check the path you are using. To find the correct path, activate your virtual environment first, then run:

which <YOUR_COMMAND>

Available tools

API

Retrieve the content of a web page, or download an image, from a URL.

Parameter

Type

Description

Required

url

string

Target URL to scrape

Yes

render

boolean

Enable JavaScript rendering for dynamic pages (default: false)

No

country_code

string

ISO 2-letter country code for geo-targeting

No

premium

boolean

Use premium residential/mobile proxies (default: false)

No

ultra_premium

boolean

Advanced anti-bot bypass; incompatible with premium (default: false)

No

device_type

string

mobile or desktop user agent

No

output_format

string

markdown (default), text, csv, or json

No

autoparse

boolean

Auto-parse supported sites into structured data (default: false)

No

Returns: the scraped content as a string, or image data for image URLs.

SDEs

Structured Data Endpoints (SDEs) return pre-parsed JSON (or CSV) instead of raw HTML. Every SDE tool also accepts output_format (json by default, or csv), tld, and country_code, shown in each tool's table.

Google

Parameter

Type

Description

Required

query

string

Search query, as typed into Google

Yes

num

integer

Number of results to return on the page

No

start

integer

Zero-based result offset for pagination

No

hl

string

Interface/host language code (e.g. en, es)

No

gl

string

Country edition to search (2-letter code)

No

uule

string

Google uule geolocation string (advanced)

No

date_range_start

string

Start of a custom date range, MM/DD/YYYY

No

date_range_end

string

End of a custom date range, MM/DD/YYYY

No

time_period

string

Recent window: 1H, 1D, 1W, 1M, or 1Y

No

include_html

boolean

Include raw HTML alongside parsed data (default: false)

No

tbs

string

Raw Google tbs filter parameter (advanced)

No

output_format

string

json (default) or csv

No

tld

string

Top-level domain (e.g. com, co.uk)

No

country_code

string

ISO 2-letter country code for geo-targeting

No

Parameter

Type

Description

Required

query

string

Search query

Yes

num

integer

Number of results to return on the page

No

start

integer

Zero-based result offset for pagination

No

hl

string

Interface/host language code

No

gl

string

Country edition to search (2-letter code)

No

uule

string

Google uule geolocation string (advanced)

No

date_range_start

string

Start of a custom date range, MM/DD/YYYY

No

date_range_end

string

End of a custom date range, MM/DD/YYYY

No

time_period

string

Recent window: 1H, 1D, 1W, 1M, or 1Y

No

output_format

string

json (default) or csv

No

tld

string

Top-level domain (e.g. com, co.uk)

No

country_code

string

ISO 2-letter country code for geo-targeting

No

Parameter

Type

Description

Required

query

string

Search query

Yes

num

integer

Number of results to return on the page

No

start

integer

Zero-based result offset for pagination

No

hl

string

Interface/host language code

No

gl

string

Country edition to search (2-letter code)

No

uule

string

Google uule geolocation string (advanced)

No

output_format

string

json (default) or csv

No

tld

string

Top-level domain (e.g. com, co.uk)

No

country_code

string

ISO 2-letter country code for geo-targeting

No

Parameter

Type

Description

Required

query

string

Search query

Yes

num

integer

Number of results to return on the page

No

start

integer

Zero-based result offset for pagination

No

hl

string

Interface/host language code

No

gl

string

Country edition to search (2-letter code)

No

uule

string

Google uule geolocation string (advanced)

No

include_html

boolean

Include raw HTML alongside parsed data (default: false)

No

output_format

string

json (default) or csv

No

tld

string

Top-level domain (e.g. com, co.uk)

No

country_code

string

ISO 2-letter country code for geo-targeting

No

Parameter

Type

Description

Required

query

string

Search query (e.g. coffee shops in Austin)

Yes

latitude

number

Latitude of the map center, in decimal degrees

Yes

longitude

number

Longitude of the map center, in decimal degrees

Yes

zoom

integer

Map zoom level (roughly 3=country, 10=city, 15=street)

No

include_html

boolean

Include raw HTML alongside parsed data (default: false)

No

output_format

string

json (default) or csv

No

tld

string

Top-level domain (e.g. com, co.uk)

No

country_code

string

ISO 2-letter country code for geo-targeting

No

Amazon

Parameter

Type

Description

Required

asin

string

10-character Amazon product identifier (e.g. B08N5WRWNW)

Yes

language

string

Language code for localized content (e.g. en_US)

No

include_html

boolean

Include raw HTML alongside parsed data (default: false)

No

output_format

string

json (default) or csv

No

tld

string

Amazon TLD (e.g. com, co.uk, de)

No

country_code

string

ISO 2-letter country code for geo-targeting

No

Parameter

Type

Description

Required

query

string

Search query, as typed into Amazon

Yes

page

integer

1-based results page number

No

sort_by

string

Sort order (e.g. price-asc-rank, review-rank)

No

department

string

Restrict search to a department/category (e.g. electronics)

No

ref

string

Amazon ref referral/context token (advanced)

No

language

string

Language code for localized content

No

output_format

string

json (default) or csv

No

tld

string

Amazon TLD (e.g. com, co.uk, de)

No

country_code

string

ISO 2-letter country code for geo-targeting

No

Parameter

Type

Description

Required

asin

string

10-character Amazon product identifier

Yes

condition

string

Comma-separated condition filters (e.g. f_new,f_usedlikenew,f_usedverygood,f_usedgood,f_usedacceptable)

No

f_new

boolean

Include only New-condition offers

No

f_used_like_new

boolean

Include Used - Like New offers

No

f_used_very_good

boolean

Include Used - Very Good offers

No

f_used_good

boolean

Include Used - Good offers

No

f_used_acceptable

boolean

Include Used - Acceptable offers

No

language

string

Language code for localized content

No

output_format

string

json (default) or csv

No

tld

string

Amazon TLD (e.g. com, co.uk, de)

No

country_code

string

ISO 2-letter country code for geo-targeting

No

Walmart

Parameter

Type

Description

Required

query

string

Product search query, as typed into Walmart

Yes

page

integer

1-based results page number

No

output_format

string

json (default) or csv

No

tld

string

Walmart TLD (e.g. com, ca, com.mx)

No

country_code

string

ISO 2-letter country code for geo-targeting

No

Parameter

Type

Description

Required

product_id

string

Walmart product ID

Yes

output_format

string

json (default) or csv

No

tld

string

Walmart TLD (e.g. com, ca, com.mx)

No

country_code

string

ISO 2-letter country code for geo-targeting

No

Parameter

Type

Description

Required

category

string

Walmart category ID

Yes

page

integer

1-based results page number

No

output_format

string

json (default) or csv

No

tld

string

Walmart TLD (e.g. com, ca, com.mx)

No

country_code

string

ISO 2-letter country code for geo-targeting

No

Parameter

Type

Description

Required

product_id

string

Walmart product ID

Yes

page

integer

1-based results page number

No

sort

string

Sort order (e.g. helpful, recent)

No

ratings

string

Comma-separated star ratings to filter by (e.g. 4,5)

No

verified_purchase

boolean

Include only reviews with a "Verified Purchase" badge (default: false)

No

output_format

string

json (default) or csv

No

tld

string

Walmart TLD (e.g. com, ca, com.mx)

No

country_code

string

ISO 2-letter country code for geo-targeting

No

eBay

Parameter

Type

Description

Required

query

string

Search keywords

Yes

page

integer

1-based results page number

No

items_per_page

integer

Number of items per page

No

seller_id

string

Restrict results to a specific seller

No

condition

string

Comma-separated: new, used, open_box, refurbished, for_parts, not_working

No

buying_format

string

buy_it_now, auction, or accepts_offers

No

show_only

string

Comma-separated: returns_accepted, authorized_seller, completed_items, sold_items, sale_items, listed_as_lots, search_in_description, benefits_charity, authenticity_guarantee

No

sort_by

string

best_match, ending_soonest, newly_listed, price_lowest, price_highest, or distance_nearest

No

output_format

string

json (default) or csv

No

tld

string

eBay TLD (e.g. com, co.uk, de)

No

country_code

string

ISO 2-letter country code for geo-targeting

No

Parameter

Type

Description

Required

product_id

string

eBay item ID

Yes

output_format

string

json (default) or csv

No

tld

string

eBay TLD (e.g. com, co.uk, de)

No

country_code

string

ISO 2-letter country code for geo-targeting

No

Redfin

Every Redfin tool takes a full Redfin URL matching the tool (property, search, or agent page).

Parameter

Type

Description

Required

url

string

Full Redfin for-sale property URL

Yes

raw

boolean

Return raw extracted JSON instead of parsed data (default: false)

No

output_format

string

json (default) or csv

No

tld

string

Redfin TLD (com, ca)

No

country_code

string

ISO 2-letter country code for geo-targeting

No

Parameter

Type

Description

Required

url

string

Full Redfin rental property URL

Yes

raw

boolean

Return raw extracted JSON instead of parsed data (default: false)

No

output_format

string

json (default) or csv

No

tld

string

Redfin TLD (com, ca)

No

country_code

string

ISO 2-letter country code for geo-targeting

No

Parameter

Type

Description

Required

url

string

Full Redfin search-results URL (with filters)

Yes

output_format

string

json (default) or csv

No

tld

string

Redfin TLD (com, ca)

No

country_code

string

ISO 2-letter country code for geo-targeting

No

Parameter

Type

Description

Required

url

string

Full Redfin agent profile URL

Yes

output_format

string

json (default) or csv

No

tld

string

Redfin TLD (com, ca)

No

country_code

string

ISO 2-letter country code for geo-targeting

No

Crawler

The crawler is asynchronous: crawler_job_start returns a job id immediately, then you poll crawler_job_status until the crawl finishes. Per-page results can also be pushed to a callback_url webhook.

Parameter

Type

Description

Required

start_url

string

The URL where crawling begins (depth 0)

Yes

url_regexp_include

string

Regex selecting which links to follow. Use .* to crawl all links. Advanced: named groups (?<full_url>...) / (?<relative_url>...) target absolute vs relative URLs

Yes

max_depth

integer

Maximum crawl depth (start URL is depth 0). Provide max_depth or crawl_budget

No*

crawl_budget

integer

Maximum ScraperAPI credits the crawl may consume. Provide max_depth or crawl_budget

No*

url_regexp_exclude

string

Regex for URLs to exclude from crawling

No

api_params

object

Per-scrape controls applied to each page (e.g. render, country_code, premium, device_type, output_format)

No

callback_url

string

Webhook URL to receive per-page results and the final summary

No

additional_data

object

Arbitrary metadata to attach to the job

No

schedule

object

Recurring schedule: { name, interval (once/hourly/daily/weekly/monthly), cron }

No

enabled

boolean

For scheduled projects, whether the schedule is enabled (default: true)

No

* Provide either max_depth or crawl_budget.

Returns: JSON with the job id and initial status (e.g. {"status": "initiated", "jobId": "..."}).

Parameter

Type

Description

Required

job_id

string

The job id returned by crawler_job_start

Yes

Returns: JSON with the job's page counts (done/failed/active).

Parameter

Type

Description

Required

job_id

string

The job id returned by crawler_job_start

Yes

AI Parser

Build a reusable parser from a few example URLs, then apply it to any similar page for structured extraction. Two-phase: ai_parser_create returns a parser id immediately and generation runs in the background — poll ai_parser_get_details until its status is FINISHED, then call ai_parser_parse_url.

Parameter

Type

Description

Required

name

string

A name for the parser

Yes

urls

array&lt;string&gt;

1–3 example URLs of the same page type (same structure)

Yes

scraper_params

object

ScraperAPI fetch options for the example pages: render, country_code, premium, session_number, keep_headers, device_type, ultra_premium, follow_redirect, retry_404

No

fields

array

Pre-declared fields to extract: [{ name, description, type?, selector? }] (type is string/number/array). If omitted, fields are inferred

No

Returns: JSON with the new parser's id and version. Generation is asynchronous — poll ai_parser_get_details until status is FINISHED.

Parameter

Type

Description

Required

parser_id

string

The parser id returned by ai_parser_create

Yes

version

integer

Specific parser version (default: latest)

No

Returns: JSON with the parser's status (GENERATING/FINISHED/FAILED), fields, and example results.

Parameter

Type

Description

Required

parser_id

string

The parser id to run

Yes

url

string

The URL to scrape and parse

Yes

version

integer

Specific parser version (default: latest)

No

Returns: JSON {"parser": ..., "version": ..., "result": {...}}. Costs 1 credit per call.

No parameters. Returns a JSON array of parser summaries (id, name, status, version, generation time).

Parameter

Type

Description

Required

parser_id

string

The parser id to delete

Yes

Parameter

Type

Description

Required

parser_id

string

The parser id to update

Yes

version

integer

Version to base the update on (default: latest)

No

add_fields

array

Fields to add: [{ name, description, type?, selector? }] (triggers async regeneration)

No

modify_fields

array

Fields to modify (triggers async regeneration)

No

rename_fields

array

Renames: [{ name, new_name }] (applied immediately)

No

remove_fields

array&lt;string&gt;

Field names to remove (applied immediately)

No

Prompt templates

  • Please scrape this URL <URL>. If you receive a 500 server error identify the website's geo-targeting and add the corresponding country_code to overcome geo-restrictions. If errors continues, upgrade the request to use premium proxies by adding premium=true. For persistent failures, activate ultra_premium=true to use enhanced anti-blocking measures.

  • Can you scrape URL <URL> to extract <SPECIFIC_DATA>? If the request returns missing/incomplete <SPECIFIC_DATA>, set render=true to enable JS Rendering.

Configuration

Settings

Configure the server through environment variables. Only API_KEY is required.

Variable

Default

Description

API_KEY

Required. Your ScraperAPI API key.

API_TIMEOUT_SECONDS

70

Per-request timeout, in seconds.

RATE_LIMIT_MAX_CALLS

10

Maximum tool calls allowed per rate-limit window.

RATE_LIMIT_WINDOW_SECONDS

60

Length of the rate-limit window, in seconds.

IMAGE_SIZE_LIMIT_BYTES

700000

Maximum size of an image the scrape tool returns inline.

Client Setup

Use the JSON configuration file from the Installation section. Below are steps for common clients.

Claude Desktop:

  1. Open Claude Desktop and click the settings icon

  2. Select the "Developer" tab

  3. Click "Edit Config" and paste the JSON configuration file

Claude Code:

  1. Add the server manually to your .claude/settings.json with the JSON configuration file, or run:

    claude mcp add scraperapi -e API_KEY=<YOUR_SCRAPERAPI_API_KEY> -- python -m scraperapi_mcp_server
  1. Open Cursor

  2. Access the Settings Menu

  3. Open Cursor Settings

  4. Go to Tools & Integrations section

  5. Click '+ Add MCP Server'

  6. Choose Manual and paste the JSON configuration file

More here

  1. Open Windsurf

  2. Access the Settings Menu

  3. Click on the Cascade settings

  4. Click on the MCP server section

  5. Click on the gear icon, the mcp_config.json file will open

  6. Paste the JSON configuration file

More here

  1. Open VS Code and click the Cline icon in the activity bar to open the Cline panel

  2. Click the MCP Servers icon in the top navigation bar of the Cline pane

  3. Select the "Configure" tab

  4. Click "Configure MCP Servers" at the bottom of the pane — this opens cline_mcp_settings.json

  5. Paste the JSON configuration file

More here

Development

Local setup

  1. Clone the repository:

    git clone https://github.com/scraperapi/scraperapi-mcp
    cd scraperapi-mcp
  2. Install dependencies:

    • Using Poetry:

      poetry install
    • Using pip:

      # Create virtual environment and activate it
      python -m venv .venv
      source .venv/bin/activate # MacOS/Linux
      # OR
      .venv/Scripts/activate # Windows
      
      # Install the local package in editable mode
      pip install -e .
    • Using Docker:

      # Build the Docker image locally
      docker build -t scraperapi-mcp-server .

Run the server

  • Using Python:

    python -m scraperapi_mcp_server
  • Using Docker:

    # Run the Docker container with your API key
    docker run -e API_KEY=<YOUR_SCRAPERAPI_API_KEY> scraperapi-mcp-server

Debug

python3 -m scraperapi_mcp_server --debug

Testing

This project uses pytest for testing.

Install Test Dependencies

  • Using Poetry:

    poetry install --with dev
  • Using pip:

    pip install -e .
    pip install pytest pytest-mock pytest-asyncio

Running Tests

# Run All Tests
pytest

# Run Specific Test
pytest <TEST_FILE_PATH>

Available Tools

27 tools
ai_parser_createA

Create a reusable AI parser from example URLs.

    Generates a parser that extracts structured data from pages sharing a
    layout. Generation is ASYNCHRONOUS: this returns a parser id and version
    immediately (e.g. {"id": "...", "version": 0}); poll 'ai_parser_get_details' until
    its status is 'FINISHED' before calling 'ai_parser_parse_url'.

    When to use:
    - You want repeatable structured extraction across many similar pages
      (e.g. product pages of one site) and there's no dedicated SDE for it
    - You can provide 1–3 example URLs of the same page type

    When NOT to use:
    - A one-off fetch (use 'scrape') or a supported marketplace/SERP (use the SDE)

    Args:
        params (AiParserCreateParams): name and urls (1–3) are required;
            optional scraper_params (fetch options) and fields (pre-declared
            output schema).

    Returns:
        str: JSON with the new parser's id and version.

    Raises:
        ToolError: If the API key is missing, the rate limit is exceeded, the
            inputs are invalid, or the request fails.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Description explicitly discloses async behavior, polling requirements (status 'FINISHED' before using ai_parser_parse_url), and potential ToolError conditions. Annotations (readOnlyHint=false, destructiveHint=false) align with a creation tool, and the description adds valuable behavioral context beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured with clear sections (when to use, when not, args, returns, raises). The first sentence is effective. Minor redundancy with schema (Args section) but overall efficient.

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?

Covers all aspects: purpose, async workflow, polling, error types, prerequisites (example URLs), and return format. Given the tool's complexity, the description is comprehensive and leaves no critical gaps.

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?

Despite schema description coverage being 0%, the description summarizes the required params (name and urls) and optional ones (scraper_params, fields) with their purposes. This compensates for the schema gap, though the description could include more param-specific details found in 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?

Description opens with a clear verb and resource: 'Create a reusable AI parser from example URLs.' It further distinguishes from siblings by contrasting with 'scrape' (one-off) and SDE (supported sites). The async nature is highlighted.

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 'When to use' and 'When NOT to use' sections provide concrete guidance, including alternatives (scrape, SDE) and required polling pattern. Leaves no ambiguity about when to choose this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ai_parser_deleteA
DestructiveIdempotent

Delete an AI parser.

    Permanently removes the parser (and all its versions) from your account.

    When to use:
    - Removing a parser you no longer need (e.g. to stay under plan limits)

    When NOT to use:
    - Changing a parser's fields (use 'ai_parser_update'); deletion is permanent

    Args:
        params (AiParserDeleteParams): parser_id (required).

    Returns:
        str: Empty on success (HTTP 204).

    Raises:
        ToolError: If the API key is missing, the rate limit is exceeded, or
            the request fails.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true. Description adds context that deletion is permanent and removes all versions, and explains return value (empty string on 204). Does not contradict 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?

Concise with front-loaded purpose and structured sections (when to use, args, returns, raises). Could be slightly shorter but no wasted sentences.

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?

Given simple tool (1 param, clear annotations, output schema empty), description covers purpose, usage, side effects, return value, and errors. No gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% per context, yet description merely repeats 'parser_id (required)' without adding meaning beyond schema's own description ('The parser id to delete. Required.'). Minimal value added.

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 'Delete an AI parser' and specifies it permanently removes the parser and all its versions. It distinguishes from sibling tools like 'ai_parser_update' for modifying fields.

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 'When to use' and 'When NOT to use' sections guide agent: use for removing unwanted parsers, avoid for field changes (use ai_parser_update).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ai_parser_get_detailsA
Read-onlyIdempotent

Get an AI parser's details and generation status.

    Returns the parser's status ('GENERATING', 'FINISHED', or 'FAILED'), its
    fields, example results, and any error. Poll this after 'ai_parser_create'
    (or after a field-editing 'ai_parser_update') until status is 'FINISHED'.

    When to use:
    - Polling a parser's status after create/update until it is 'FINISHED'
    - Inspecting a parser's fields before parsing with it

    When NOT to use:
    - Extracting data from a page (use 'ai_parser_parse_url')

    Args:
        params (AiParserGetParams): parser_id (required) and optional version.

    Returns:
        str: JSON with the parser details and status.

    Raises:
        ToolError: If the API key is missing, the rate limit is exceeded, or
            the request fails.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds context: returns status values (GENERATING, FINISHED, FAILED), fields, example results, errors, and the need to poll until FINISHED. It also mentions potential ToolError conditions (missing API key, rate limit, failure). This aligns with and enriches the annotations, no contradictions.

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 clear summary, separate sections for usage, args, returns, and raises. Every sentence adds value without redundancy. It is front-loaded with the primary purpose and polls status information, making it easy to scan.

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?

Given the simple parameter set (1 required param), comprehensive annotations (readOnly, idempotent), and presence of an output schema (though not detailed in description), the description covers all necessary aspects: purpose, usage, behavior, errors, and return value type. It is complete for the tool's complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Context indicates schema description coverage is 0%, meaning the schema lacks parameter descriptions. The description only briefly mentions 'parser_id (required) and optional version' without adding further meaning (e.g., format, constraints, or usage nuances). It does not compensate adequately for the missing schema descriptions, leaving the agent underinformed.

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 gets an AI parser's details and generation status. It explicitly distinguishes from siblings by mentioning polling after create/update and inspecting fields before parsing, and by saying not to use for extracting data (use ai_parser_parse_url). The verb 'Get' and resource are clear.

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 has dedicated 'When to use' and 'When NOT to use' sections. It specifies polling after create/update, inspecting fields before parsing, and explicitly warns against using for data extraction, pointing to ai_parser_parse_url as the alternative. This provides excellent guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ai_parser_listA
Read-onlyIdempotent

List the AI parsers on your account.

    Returns each parser's id, name, status, version, and generation time.

    When to use:
    - Discovering existing parsers and their ids/status before reusing one

    When NOT to use:
    - Getting one parser's full fields/details (use 'ai_parser_get_details')

    Returns:
        str: JSON array of parser summaries.

    Raises:
        ToolError: If the API key is missing, the rate limit is exceeded, or
            the request fails.
    
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint=true, destructiveHint=false, idempotentHint=true. Description adds transparency about error conditions (missing API key, rate limit, request failure) and return type (JSON array). No contradictions.

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?

Description is well-structured with clear sections, no redundant sentences. Every sentence serves a purpose (what it does, when to use, returns, raises).

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?

Given zero parameters, rich annotations, and an output schema, the description is complete: it covers purpose, usage, return format, and errors. No gaps.

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?

Tool has no parameters; schema description coverage is 100% trivially. Description adds value by explaining the return format and behavior, meeting the baseline of 4 for zero-parameter tools.

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 that the tool lists AI parsers on the account and specifies the returned fields (id, name, status, version, generation time). It explicitly distinguishes from the sibling tool 'ai_parser_get_details' which retrieves full details of one parser.

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?

Provides explicit 'When to use' (discovering parsers before reuse) and 'When NOT to use' (getting one parser's full details) with a specific alternative named ('ai_parser_get_details').

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ai_parser_parse_urlA
Read-onlyIdempotent

Parse a URL with an existing AI parser and return structured data.

    Scrapes the given URL and applies the parser, returning the extracted data
    as structured JSON keyed by the parser's fields. The parser must already be
    'FINISHED' (see 'ai_parser_create' / 'ai_parser_get_details'). Costs 1 credit per call.

    When to use:
    - Extracting structured data from a page using a FINISHED parser
    - Applying one parser across many similarly structured pages

    When NOT to use:
    - The parser isn't ready yet (create it, then poll 'ai_parser_get_details')
    - A one-off fetch (use 'scrape') or a supported marketplace/SERP (use the SDE)

    Args:
        params (AiParseParams): parser_id and url are required; optional version.

    Returns:
        str: JSON of the form {"parser": ..., "version": ..., "result": {...}}.

    Raises:
        ToolError: If the API key is missing, the rate limit is exceeded, or
            the request fails.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, destructiveHint. The description adds beyond these: cost (1 credit per call) and specific error conditions (missing API key, rate limit, request failure). This extra context is valuable and consistent with annotations.

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-organized into clear sections: main purpose, usage guidelines, arguments, returns, and raises. It is concise with no redundant sentences and front-loads the essential information.

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?

Given the tool's complexity and the presence of an output schema, the description covers all necessary context: prerequisites (parser must be FINISHED), cost, error conditions, and return format ('parser', 'version', 'result'). It leaves no critical gaps for an agent to misuse 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?

The schema already describes each parameter (parser_id, url, version). The description's 'Args' section restates the required fields but adds no new semantic information beyond the schema. Since schema coverage is effectively high and the description doesn't compensate further, a baseline of 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 verb 'Parse a URL' with an existing AI parser, returning structured data. It distinguishes from sibling tools by explicitly mentioning alternatives for not-ready parsers ('ai_parser_create', 'ai_parser_get_details') and one-off fetches ('scrape'), making it distinct from other scraping/parser tools.

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' and 'When NOT to use' sections, including specific alternatives and conditions. It tells the agent to use this tool only when the parser is 'FINISHED' and directs other cases to appropriate siblings, offering clear decision guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ai_parser_updateA

Edit an AI parser's fields, creating a new version.

    Add, modify, rename, or remove fields. Adding or modifying fields triggers
    asynchronous regeneration (poll 'ai_parser_get_details' until 'FINISHED'); renaming
    or removing fields is applied immediately.

    When to use:
    - Adjusting an existing parser's fields (add/modify/rename/remove) rather
      than recreating it

    When NOT to use:
    - Creating a brand-new parser (use 'ai_parser_create')

    Args:
        params (AiParserUpdateParams): parser_id (required) and optional version,
            plus any of add_fields, modify_fields, rename_fields, remove_fields.

    Returns:
        str: JSON with the parser id and (new) version.

    Raises:
        ToolError: If the API key is missing, the rate limit is exceeded, the
            inputs are invalid, or the request fails.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses that add/modify fields trigger asynchronous regeneration (poll 'ai_parser_get_details') while rename/remove apply immediately. No contradiction with annotations (readOnlyHint=false, destructiveHint=false). This adds crucial context beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured with clear sections (description, when to use/not, args, returns, raises). Every sentence serves a purpose; no fluff. Front-loaded with the core action.

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?

Covers all essential aspects: purpose, usage context, parameter summary, return value, and error conditions. Output schema exists, so return details are not required. Raises section addresses common failures. Complete for a moderately complex tool.

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?

Despite the input schema containing detailed descriptions for each parameter, the tool's description summarizes the parameters in a concise 'Args' section. It adds value by grouping parameters and clarifying optionality, though the schema already covers individual semantics well.

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?

Description explicitly states 'Edit an AI parser's fields, creating a new version.' It distinguishes from sibling 'ai_parser_create' by specifying when to use each. Additionally, it enumerates specific operations (add, modify, rename, remove), leaving no ambiguity.

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?

Includes a dedicated 'When to use' and 'When NOT to use' section, directing agents to use 'ai_parser_create' for new parsers. This clearly defines the tool's domain and prevents misuse.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

amazon_offersA
Read-onlyIdempotent

Retrieve the parsed list of seller offers for an Amazon product.

    Returns structured offer listings for one ASIN — listing/shipping price,
    condition, seller name and rating, Prime/FBA flags, and delivery info —
    across the sellers offering that product.

    When to use:
    - Comparing sellers, prices, and conditions (new/used) for a known ASIN
    - Buy-box / third-party seller and repricing analysis

    When NOT to use:
    - You want the product's own details (use 'amazon_product')
    - You only have a search term (use 'amazon_search' to get the ASIN first)

    Args:
        params (AmazonOffersParams): asin (required) plus optional condition
            filters (condition, f_new, f_used_like_new, f_used_very_good,
            f_used_good, f_used_acceptable), tld, country_code, language, and
            output_format.

    Returns:
        str: JSON (default) or CSV containing the structured offers.

    Raises:
        ToolError: If the API key is missing, the rate limit is exceeded, or
            the request fails.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint. Description adds details about return format (JSON/CSV) and error conditions (API key, rate limit, request failure), enhancing transparency.

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?

Well-structured with sections for purpose, usage, arguments, returns, and raises. No redundant sentences. Front-loaded.

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?

Covers usage context, alternatives, and error handling. With an output schema, return details are sufficient. Some aspects like pagination or offer count are absent but not critical.

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?

Description lists the parameters but relies on schema descriptions (which are present) for details. It adds minimal value beyond summarizing optional filters.

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 seller offers for an Amazon ASIN, listing specific fields. It distinguishes from siblings amazon_product and amazon_search.

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 'When to use' and 'When NOT to use' sections with named alternative tools for product details and search.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

amazon_productA
Read-onlyIdempotent

Retrieve parsed details for a single Amazon product by ASIN.

    Returns structured product data — name, brand, pricing, images, feature
    bullets, product information, review summary, category, coupon flags — for
    one Amazon listing, already parsed from the product page.

    When to use:
    - You have a specific ASIN and want its full structured details
    - Product monitoring, catalog enrichment, price/spec extraction

    When NOT to use:
    - You only have a search term, not an ASIN (use 'amazon_search' first)
    - You need the list of sellers/offers for the product (use 'amazon_offers')

    Args:
        params (AmazonProductParams): asin (required) plus optional tld,
            country_code, language, output_format, and include_html.

    Returns:
        str: JSON (default) or CSV containing the structured product data.

    Raises:
        ToolError: If the API key is missing, the rate limit is exceeded, or
            the request fails.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate a safe, read-only operation. The description adds behavioral context such as the parsed nature of the output, error conditions (ToolError for rate limits, missing API key), and the output format, without contradicting annotations.

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 concise, well-organized into sections, and front-loads the core action. Every sentence serves a purpose, with no wasted words.

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?

Given the tool has a comprehensive output schema and nested parameters, the description provides full context: use cases, alternatives, error handling, and supported formats, leaving no significant gaps.

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 description lists parameter names but does not add substantial meaning beyond the detailed input schema, which already describes each field. Schema coverage is effectively high, warranting a baseline of 3.

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 parsed details for a single Amazon product by ASIN, listing specific data fields. It distinguishes itself from siblings like 'amazon_search' and 'amazon_offers' with explicit usage guidance.

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 includes 'When to use' and 'When NOT to use' sections with concrete scenarios and alternative tool recommendations, providing strong decision support for the agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

crawler_job_deleteA
DestructiveIdempotent

Cancel and delete a ScraperAPI crawl job.

    Irreversibly cancels a running crawl job and removes it. Use this to stop a
    crawl you no longer need.

    When to use:
    - Stopping a running crawl you started and no longer want

    When NOT to use:
    - Pausing temporarily — this permanently cancels the job (there is no resume)

    Args:
        params (CrawlerJobRefParams): job_id (required) — the id returned by
            crawler_job_start.

    Returns:
        str: JSON confirming the job was cancelled.

    Raises:
        ToolError: If the API key is missing, the rate limit is exceeded, or
            the request fails.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark destructiveHint and idempotentHint as true. The description adds important context: 'Irreversibly cancels', 'removes it', and 'there is no resume', which goes beyond the annotations and informs the agent of the permanent nature of the action.

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-organized with clear sections (overview, when to use, when not to use, args, returns, raises). It is concise, with no unnecessary words, and every sentence serves a purpose.

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?

Given the tool's simplicity, the description covers the purpose, usage conditions, parameters, return type, and possible errors. With annotations and schema, it provides complete context for an agent to use the tool correctly.

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?

The only parameter, job_id, is described as 'the id returned by crawler_job_start', which adds meaning beyond the schema's description. The description also mentions it is required, and the parameter structure is clear.

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 cancels and deletes a ScraperAPI crawl job. It specifies the verb 'Cancel and delete' and the resource 'crawl job', and distinguishes it from sibling tools like crawler_job_start and crawler_job_status.

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 explicitly includes 'When to use' and 'When NOT to use' sections, advising to use it for stopping a crawl and not to use it for pausing because the action is irreversible. This provides clear guidance on when to choose this tool over alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

crawler_job_startA

Start a ScraperAPI crawl job from a starting URL.

    Submits an asynchronous crawl that follows links matching a regex outward
    from start_url and scrapes each page. Returns immediately with a job id and
    status (e.g. {"status": "initiated", "jobId": "..."}); the crawl runs in the
    background. Poll 'crawler_job_status' with the returned job id to track
    progress, and/or provide a callback_url webhook to receive results.

    When to use:
    - Crawling multiple linked pages of a site (not a single known URL)
    - Building a dataset by following links to a depth or credit budget

    When NOT to use:
    - Fetching one known URL (use the 'scrape' tool)
    - A structured marketplace/SERP lookup (use the relevant SDE tool)

    Args:
        params (CrawlerJobStartParams): start_url and url_regexp_include are
            required; provide either max_depth or crawl_budget to bound the
            crawl. Optional: url_regexp_exclude, api_params, callback_url,
            additional_data, schedule, enabled.

    Returns:
        str: JSON with the job id and initial status.

    Raises:
        ToolError: If the API key is missing, the rate limit is exceeded, the
            inputs are invalid, or the request fails.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds substantial behavioral context beyond annotations: asynchronous execution, immediate return with job id, background crawl, progress tracking methods, bounds via max_depth or crawl_budget, and error conditions (ToolError). No contradictions with annotations.

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?

Well-organized with paragraphs, bullet points, and clear sections. Every sentence adds value without redundancy.

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?

The description covers all necessary aspects: purpose, async behavior, tracking, parameters, error handling, and return format. With an output schema existing, the description doesn't need to detail return values further.

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?

While the schema has detailed descriptions for parameters, the tool description provides high-level guidance on required and optional parameters (e.g., start_url and url_regexp_include required, bounds alternatives).

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 starts a ScraperAPI crawl job from a starting URL, explaining it submits an asynchronous crawl that follows links matching a regex. It distinguishes from siblings like 'scrape' and SDE tools.

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 'When to use' and 'When NOT to use' sections are provided, naming alternative tools ('scrape' for single URLs, SDE tools for structured lookups) and explaining how to track progress via polling or webhook.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

crawler_job_statusA
Read-onlyIdempotent

Get the status of a ScraperAPI crawl job.

    Returns counts of pages that are done, failed, and active for the job,
    letting you track progress and detect completion. Poll this after
    'crawler_job_start' until the job is finished.

    When to use:
    - Tracking progress or detecting completion of a job from 'crawler_job_start'

    When NOT to use:
    - Retrieving the crawled page contents (those are delivered to the job's
      callback_url webhook, not returned here)

    Args:
        params (CrawlerJobRefParams): job_id (required) — the id returned by
            crawler_job_start.

    Returns:
        str: JSON with the job's page counts (done/failed/active).

    Raises:
        ToolError: If the API key is missing, the rate limit is exceeded, or
            the request fails.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint, idempotentHint, openWorldHint, no destructiveHint. The description adds concrete details: returns JSON with counts, raises ToolError for missing API key, rate limit, or request failure. Does not contradict 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?

Well-structured with clear sections (main, when to use, when not, args, returns, raises). Slightly verbose but all sentences add value. Front-loaded with purpose.

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?

Given the simple parameter set and rich annotations, the description covers return format, error conditions, relationship to other tools, and expected usage pattern. No gaps.

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?

Only one parameter (params.job_id) whose description in the description reinforces the schema: 'job_id (required) — the id returned by crawler_job_start.' The schema itself has a description, but the description adds context by linking to the previous tool.

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 'Get the status of a ScraperAPI crawl job' and specifies it returns counts of pages (done, failed, active). It distinguishes from siblings like crawler_job_start and crawler_job_delete by its polling purpose.

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 'When to use' and 'When NOT to use' sections: use for tracking progress/detecting completion, not for retrieving page contents (which go to callback_url). Mentions polling after crawler_job_start.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ebay_productA
Read-onlyIdempotent

Retrieve parsed details for a single eBay listing by item ID.

    Returns structured listing data — title, price, condition, seller info,
    description, shipping, and item specifics — for one eBay item.

    When to use:
    - You have an eBay item ID and want its full structured details
    - Listing monitoring, price/spec extraction

    When NOT to use:
    - You only have search keywords (use 'ebay_search' first)

    Args:
        params (EbayProductParams): product_id (required) plus optional tld,
            country_code, and output_format.

    Returns:
        str: JSON (default) or CSV containing the structured listing data.

    Raises:
        ToolError: If the API key is missing, the rate limit is exceeded, or
            the request fails.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (which already indicate read-only, idempotent behavior), the description adds that the tool returns JSON or CSV output, mentions possible error conditions (missing API key, rate limit), and outlines the return structure. No contradiction with annotations.

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 clear opening sentence, bulleted usage guidelines, and organized Args/Returns/Raises sections. Every sentence adds value, and the most critical information 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?

Given the annotations (readOnly, idempotent, etc.) and the presence of an output schema, the description fully covers return format, error cases, and usage scenarios. No gaps identified.

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 description summarizes the parameters (required product_id, optional tld, country_code, output_format), but the input schema already provides detailed descriptions for each property. The description adds marginal additional meaning 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 explicitly states the action ('Retrieve parsed details') and the resource ('single eBay listing by item ID'). It clearly distinguishes from sibling 'ebay_search' by specifying that this tool requires an item ID, not keywords.

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?

Includes dedicated 'When to use' and 'When NOT to use' sections, explicitly directing agents to use 'ebay_search' for keyword-only queries. This provides clear decision guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

google_jobsA
Read-onlyIdempotent

Retrieve parsed Google Jobs listings for a query.

    Returns structured job postings (title, company, location, posting age,
    source) from the Google Jobs widget for a query.

    When to use:
    - Aggregating job listings for a role, company, or location
    - Labor-market or hiring research

    When NOT to use:
    - General web or news results (use 'google_search' / 'google_news')

    Args:
        params (GoogleJobsParams): query (required) plus optional localization
            (country_code, gl, hl, uule), pagination (num, start), tld, and
            output_format.

    Returns:
        str: JSON (default) or CSV containing the structured job listings.

    Raises:
        ToolError: If the API key is missing, the rate limit is exceeded, or
            the request fails.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds value by detailing return content, error conditions (ToolError for missing key, rate limit, request failure), and output formats. It is fully transparent and consistent with annotations.

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 sections and front-loaded purpose. Every sentence adds value, there is no fluff, and it is appropriately sized for 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?

Given the tool has one parameter (nested object), comprehensive annotations, and an output schema, the description is complete. It covers usage context, return values, and error handling, leaving no gaps.

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 provides detailed descriptions for all parameters, so baseline is 3. The description lists the parameter groups but adds minimal extra meaning beyond what the schema already offers.

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 parsed Google Jobs listings for a query. It specifies the verb (Retrieve) and resource (parsed Google Jobs listings). It distinguishes from siblings like google_search and google_news by explicitly stating when NOT to use this tool and suggesting alternatives.

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 has explicit 'When to use' and 'When NOT to use' sections, providing clear context for usage. It guides the agent to use this tool for job aggregations and labor-market research, and to avoid it for general web results, directing to alternative tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

google_newsA
Read-onlyIdempotent

Retrieve parsed Google News results for a query.

    Returns structured news articles (title, source, link, timestamp, snippet)
    for a query from Google News.

    When to use:
    - Monitoring news coverage or headlines for a topic, brand, or entity
    - Time-bounded news scans (last hour/day/week or a custom date range)

    When NOT to use:
    - General web results (use 'google_search')
    - Reading the full text of a specific article (use 'scrape' on its URL)

    Args:
        params (GoogleNewsParams): query (required) plus optional localization,
            pagination, date filters (date_range_start/end, time_period), tld,
            and output_format.

    Returns:
        str: JSON (default) or CSV containing the structured news results.

    Raises:
        ToolError: If the API key is missing, the rate limit is exceeded, or
            the request fails.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false. The description adds behavioral context: returns structured news, raises ToolError on API/rate-limit issues. No contradictions. Adds value beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with sections (when to use, args, returns, raises) and front-loads purpose. A bit verbose but acceptable; every section earns its place.

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?

Given the moderate complexity (many parameters, output schema exists), the description covers purpose, usage, parameters, return format (JSON/CSV), and error conditions. Output schema covers return values, so description is complete.

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 high (each parameter in GoogleNewsParams has a description). The tool description summarizes parameters briefly but does not add significant new meaning. 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 'Retrieve parsed Google News results for a query' and specifies the returned fields (title, source, link, timestamp, snippet). It distinguishes from sibling tools like 'google_search' and 'scrape'.

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 explicitly lists when to use (monitoring news, time-bounded scans) and when NOT to use (general web, reading full articles) with alternatives named. This provides excellent guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

google_shoppingA
Read-onlyIdempotent

Retrieve parsed Google Shopping product results for a query.

    Returns structured shopping listings (product title, price, merchant,
    rating, link) from Google Shopping for a query.

    When to use:
    - Price comparison and product discovery across merchants
    - Market/pricing research for a product keyword

    When NOT to use:
    - A specific marketplace's own data — use the Amazon/Walmart/eBay SDE tools
    - General web results (use 'google_search')

    Args:
        params (GoogleShoppingParams): query (required) plus optional
            localization, pagination, tld, output_format, and include_html.

    Returns:
        str: JSON (default) or CSV containing the structured shopping results.

    Raises:
        ToolError: If the API key is missing, the rate limit is exceeded, or
            the request fails.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint, covering safety and behavior. The description adds context about error conditions (missing API key, rate limit, request failure) and the output format (JSON/CSV). It does not fully detail pagination behavior beyond param hints, but overall it supplements the annotations well without contradiction.

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 concise with three paragraphs, a returns clause, and a raises clause. It is front-loaded with the core purpose and structured with clear sections (when to use, when not to use, args, returns). No extraneous information.

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?

Given the tool's complexity (shopping search with multiple siblings), the description fully covers its role, distinguishes it from alternatives, explains typical use cases, and notes error conditions. It references an output schema, so no further detail on return values is needed. The description is self-contained for an AI agent to decide when and how to invoke it.

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 0% (the description does not repeat parameter details), but the schema itself has detailed descriptions for each parameter. The tool description refers to params by category (localization, pagination, etc.), which adds organizational value. Since the schema already provides full parameter semantics, the description's summary is sufficient and adds clarity.

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 ('Retrieve parsed Google Shopping product results') and clearly identifies the resource ('for a query'). It lists the structured fields returned (product title, price, merchant, rating, link) and explicitly distinguishes from sibling marketplace tools (Amazon, Walmart, eBay) and general web search, making the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description includes explicit 'When to use' (price comparison, market research) and 'When NOT to use' sections, naming specific alternatives like amazon_search, walmart_search, and google_search. This provides clear decision criteria for the agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

redfin_agentA
Read-onlyIdempotent

Retrieve parsed Redfin real-estate agent profile data.

    Returns structured agent data — name, contact, brokerage, ratings, and
    recent transactions/listings — from a Redfin agent profile page.

    When to use:
    - Extracting an agent's profile and activity from their Redfin URL
    - Agent research or lead building

    When NOT to use:
    - Property or search data (use the other Redfin tools)

    Args:
        params (RedfinAgentParams): url (required, full Redfin agent profile
            URL) plus optional tld, country_code, and output_format.

    Returns:
        str: JSON (default) or CSV containing the structured agent data.

    Raises:
        ToolError: If the API key is missing, the rate limit is exceeded, or
            the request fails.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=true. The description adds context about return format (JSON/CSV) and error conditions (missing API key, rate limit, request failure), which complements annotations without contradiction.

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 sections, concise sentences, and no redundant information. Every sentence serves a purpose, making it easy for an AI agent to parse quickly.

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?

Given the tool's complexity (1 parameter with sub-properties), rich annotations, and presence of an output schema, the description is complete. It covers purpose, usage, parameters, return type, and error cases, leaving no gaps for the AI agent.

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?

Despite 'Schema description coverage: 0%' in context, the actual schema input shows descriptions for each parameter. The description adds value by summarizing the required URL and optional parameters (tld, country_code, output_format) and explaining their purposes, going beyond the schema's individual 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 clearly states 'Retrieve parsed Redfin real-estate agent profile data' and lists the specific data returned (name, contact, brokerage, ratings, transactions). It also explicitly distinguishes from property/search tools in the 'When NOT to use' section, differentiating it from sibling tools like redfin_for_sale and redfin_search.

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' (extracting agent profile, lead building) and 'When NOT to use' (property or search data, with reference to other Redfin tools). This gives clear guidance to the AI agent on when to select this tool versus alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

redfin_for_rentA
Read-onlyIdempotent

Retrieve parsed Redfin listing data for a rental property.

    Returns structured rental data — rent, beds/baths, square footage, address,
    description, photos, and availability — from a Redfin rental property page.

    When to use:
    - Extracting details for a specific rental from its Redfin URL
    - Rental-market data collection or listing monitoring

    When NOT to use:
    - A for-sale listing (use 'redfin_for_sale')
    - A search-results page (use 'redfin_search') or agent profile ('redfin_agent')

    Args:
        params (RedfinForRentParams): url (required, full Redfin rental URL)
            plus optional raw, tld, country_code, and output_format.

    Returns:
        str: JSON (default) or CSV containing the structured rental data.

    Raises:
        ToolError: If the API key is missing, the rate limit is exceeded, or
            the request fails.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint. Description adds error conditions (ToolError for missing API key, rate limit exceeded, request failure). Does not contradict annotations. No further behavioral context needed.

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?

Description is well-structured with clear sections (purpose, when to use/not use, args, returns, raises). Front-loaded with main action. Every sentence adds value without redundancy.

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?

Tool is a data retrieval endpoint with output schema and annotations. Description covers use cases, parameter summary, and error raising. Minor gap: rate limit details could be more explicit, but overall complete.

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 descriptions cover all parameters (100% coverage), so baseline is 3. Description merely summarizes the parameters (url required, others optional) without adding new meaning 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?

Description clearly states 'Retrieve parsed Redfin listing data for a rental property' with specific verb and resource. Lists returned fields and distinguishes from siblings by explicitly naming redfin_for_sale, redfin_search, and redfin_agent.

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?

Includes explicit 'When to use' and 'When NOT to use' sections with specific use cases and alternative tool names, providing excellent guidance for selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

redfin_for_saleA
Read-onlyIdempotent

Retrieve parsed Redfin listing data for a home for sale.

    Returns structured property data — price, beds/baths, square footage,
    address, description, photos, price history, and listing details — from a
    Redfin for-sale property page.

    When to use:
    - Extracting details for a specific for-sale property from its Redfin URL
    - Real-estate data collection, comps, or listing monitoring

    When NOT to use:
    - A rental listing (use 'redfin_for_rent')
    - A search-results page (use 'redfin_search') or agent profile ('redfin_agent')

    Args:
        params (RedfinForSaleParams): url (required, full Redfin property URL)
            plus optional raw, tld, country_code, and output_format.

    Returns:
        str: JSON (default) or CSV containing the structured property data.

    Raises:
        ToolError: If the API key is missing, the rate limit is exceeded, or
            the request fails.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true. The description adds value by noting error conditions (missing API key, rate limit, request failure) and the output format, but does not mention caching or internal state changes, which are already covered by idempotency.

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 concise, structured with clear sections (When to use, When NOT to use, Args, Returns, Raises). Every sentence adds value, and there is no redundancy or fluff.

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?

Given the existence of an output schema, the description adequately covers the return value. The tool is simple (one required param) and annotations cover safety. The description provides all necessary behavioral context beyond structured fields.

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?

All parameters are well-described in the input schema (100% coverage). The description only lists the parameters without adding new meaning, so it meets the baseline of 3. It does not provide extra context 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 uses a specific verb 'Retrieve' and identifies the resource as 'parsed Redfin listing data for a home for sale'. It also lists the data fields (price, beds/baths, etc.) and distinguishes from siblings redfin_for_rent, redfin_search, and redfin_agent.

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 'When to use' and 'When NOT to use' sections provide clear guidance, naming alternative tools for rentals, search results, and agent profiles. The description helps the agent decide when to invoke this tool over siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

walmart_categoryA
Read-onlyIdempotent

Browse parsed products within a Walmart category by category ID.

    Returns a structured list of products in a Walmart category, with
    pagination.

    When to use:
    - Exploring products within a specific Walmart department/category
    - Building category-level catalogs or monitoring a category

    When NOT to use:
    - Free-text product discovery (use 'walmart_search')

    Args:
        params (WalmartCategoryParams): category (required) plus optional
            page, tld, country_code, and output_format.

    Returns:
        str: JSON (default) or CSV containing the category product list.

    Raises:
        ToolError: If the API key is missing, the rate limit is exceeded, or
            the request fails.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds context about pagination, error conditions (ToolError), and output format options beyond the annotations which already indicate idempotent and non-destructive behavior. Does not contradict annotations.

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?

Well-structured with headings, concise yet informative. Every sentence adds 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?

Output schema exists; description mentions return formats and errors. With rich annotations and sibling distinctions, coverage is good. Missing details on pagination behavior (e.g., max pages) but overall complete.

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 coverage is 0%, so description must compensate. It lists the parameters but only briefly repeats the schema's own descriptions without adding significant detail. Adequate but not exceptional.

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?

Description clearly states it browses parsed products within a Walmart category by ID, with pagination. Distinguishes from 'walmart_search' for free-text discovery.

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 'When to use' and 'When NOT to use' sections, clearly pointing to walmart_search as alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

walmart_productA
Read-onlyIdempotent

Retrieve parsed details for a single Walmart product by product ID.

    Returns structured product data — name, brand, pricing, availability,
    specifications, images, and review summary — for one Walmart listing.

    When to use:
    - You have a Walmart product ID and want its full structured details
    - Product monitoring, catalog enrichment, price/spec extraction

    When NOT to use:
    - You only have a search term (use 'walmart_search' first)
    - You want the product's reviews (use 'walmart_review')

    Args:
        params (WalmartProductParams): product_id (required) plus optional
            tld, country_code, and output_format.

    Returns:
        str: JSON (default) or CSV containing the structured product data.

    Raises:
        ToolError: If the API key is missing, the rate limit is exceeded, or
            the request fails.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and openWorldHint. The description adds information on error conditions (API key, rate limit, request failure) and return format, but does not contradict annotations.

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?

Well-structured with clear sections, front-loaded purpose, and no wasted words. Every sentence adds 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?

Covers purpose, usage guidelines, parameters, return type, and error conditions. Lacks explicit output schema details, but the listed data fields provide adequate context for a simple lookup 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?

The description summarizes parameters (product_id required, optional tld, country_code, output_format) but the schema already contains full descriptions. The description adds little new meaning 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 clearly states the tool retrieves parsed details for a single Walmart product by ID, explicitly distinguishes from siblings like walmart_search and walmart_review, and lists the data fields returned.

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?

Includes explicit 'When to use' and 'When NOT to use' sections with specific alternative tools (walmart_search, walmart_review), providing clear guidance on 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.

walmart_reviewA
Read-onlyIdempotent

Retrieve parsed customer reviews for a Walmart product by product ID.

    Returns structured reviews — rating, title, text, author, date, verified
    purchase status — for one Walmart product, with pagination, sorting, and
    rating/verified filters.

    When to use:
    - Sentiment analysis or review mining for a known Walmart product
    - Tracking new reviews or filtering by star rating

    When NOT to use:
    - You want the product's own details (use 'walmart_product')
    - You only have a search term (use 'walmart_search' to get the ID first)

    Args:
        params (WalmartReviewParams): product_id (required) plus optional page,
            sort, ratings, verified_purchase, tld, country_code, and
            output_format.

    Returns:
        str: JSON (default) or CSV containing the structured reviews.

    Raises:
        ToolError: If the API key is missing, the rate limit is exceeded, or
            the request fails.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint, so the safety profile is clear. The description adds valuable context: returns structured reviews with specific fields, supports pagination and filters, and raises ToolError for API/rate-limit issues. No contradictions with 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?

Well-structured with sections, bullet points, and front-loaded purpose. Every sentence contributes value, though the 'Args:' section partly duplicates schema info. Overall efficient and readable.

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 annotations and schema richness, the description adequately covers return format (JSON/CSV with fields), use cases, and error handling. No output schema is provided, but the description explains return structure sufficiently for an agent to understand what to expect.

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 has detailed descriptions for all parameters (100% coverage), so baseline is 3. The description lists the parameters but doesn't add much meaning beyond what the schema already provides; it does clarify that product_id is required and that optional params enable pagination/sorting/filters.

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 parsed customer reviews for a Walmart product by product ID. It specifies the verb (retrieve), resource (reviews), and unique identifier. The 'When NOT to use' section distinguishes it from siblings like walmart_product and walmart_search.

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 'When to use' and 'When NOT to use' sections are provided, with clear context for sentiment analysis or review mining and alternatives for product details or search. This gives direct guidance on tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A4.4/5.0
Disambiguation5/5

Each tool targets a distinct domain and action: AI parser management, Amazon, eBay, Google services, Redfin, Walmart, and crawling. No two tools have overlapping purposes, and descriptions clearly specify when to use each.

Naming Consistency5/5

All tool names follow a consistent snake_case pattern of domain_specific_action (e.g., amazon_product, google_search, crawler_job_start). No mixing of styles or vague verbs.

Tool Count4/5

27 tools is slightly high but appropriate given the broad scope covering general scraping, AI parsing, crawling, and multiple marketplaces/real estate. Each tool has a clear purpose, though the count could be trimmed.

Completeness2/5

Despite covering many domains, the server lacks a basic 'scrape' tool for arbitrary URLs, which is a core function implied by the name. This omission forces reliance on platform-specific tools for simple fetching, creating a notable gap.

Maintenance

ActivitySlowing
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    A local web scraping MCP server with RAG capabilities that provides intelligent web search, content extraction, and screenshot tools without requiring API keys.
    4
    16
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    MCP server that lets AI agents use your real browser as an API, accessing any website with your login state, no keys or scrapers needed.
    1
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that gives AI tools a reliable way to fetch content from the web, handling anti-bot protection and JavaScript-rendered pages.
    885
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Open-source web scraping MCP server with anti-bot bypass, enabling AI models to scrape, crawl, search, and extract data from any website without API keys or limits.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/scraperapi/scraperapi-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server