Skip to main content
Glama
Decodo

Decodo MCP Server

by Decodo

Decodo MCP Server

Install MCP Server

Connect LLMs and AI agents to live web data using MCP (Model Context Protocol). The Decodo MCP Server lets you scrape websites, search engines, eCommerce platforms, and social media directly from AI tools like Claude, Cursor, and Windsurf, all without the need to build scraping infrastructure from scratch.

  • Structured outputs in JSON, Markdown, and screenshots

  • Server-side JavaScript rendering and anti-bot handling

  • 125M+ IPs across 195+ locations

What is Decodo MCP server?

The Decodo MCP Server is a web scraping layer for AI agents. It connects MCP-compatible clients to Decodo's Web Scraping API, enabling:

  • Web scraping for LLMs

  • Real-time data retrieval for RAG

  • AI agent browsing and research

  • Structured data extraction from dynamic websites

Instead of maintaining proxies, parsers, and retry logic, you get a single integration point for reliable web data access.

Related MCP server: FreeCrawl MCP Server

Why use MCP for web scraping?

Model Context Protocol (MCP) is the emerging standard for connecting AI agents to external tools and data sources. With MCP:

  • Agents can call tools dynamically

  • Integrations stay standardized

  • Workflows scale across environments

The Decodo MCP Server gives your agents reliable, production-ready web access through this standard.

Key features

Web scraping for AI agents, no infrastructure required. Scrape any website, including JavaScript-heavy pages, without handling proxy rotation, CAPTCHA solving, or anti-bot systems.

Structured outputs for LLM workflows. Markdown (LLM-ready), JSON (for structured pipelines), and screenshots (for visual context), built for RAG pipelines, AI research agents, and automation flows.

Built-in support for popular targets. Ready-made tools for Google and Bing (SERPs), Amazon, Walmart, and Target (eCommerce), TikTok and YouTube (social media), and ChatGPT and Perplexity (AI search).

Global proxy infrastructure. 115M+ residential IPs, 195+ geo-locations, and a 99.99% success rate on even the most protected targets.

Modular MCP toolsets. Enable only what you need: web, search, ecommerce, social_media, ai for cleaner tool selection and better agent performance.

Fast time to value. From API key to first scrape in minutes, no setup overhead.

Use cases

Use the Decodo MCP Server when you need web scraping for AI agents, structured data extraction at scale, reliable access to dynamic websites, real-time data for RAG, or an alternative to building scraping infrastructure from scratch. Common scenarios:

  • AI-powered web scraping – give LLMs the ability to collect fresh data instead of relying on static training data.

  • RAG with live data – pull real-time Google, Bing, and AI search results into retrieval pipelines.

  • eCommerce intelligence – track product prices, listings, and sellers across marketplaces without getting blocked.

  • Social media data collection – gather posts, channels, and engagement data from TikTok and YouTube.

  • Travel and price aggregation – build tools that collect live pricing and availability across websites.

Quick start

  1. Create a free account at dashboard.decodo.com – up to 10K free requests, no credit card required.

  2. Get your API key. Copy your Web Data API key from your Web Data API subscription on the dashboard. Older plans have a basic authentication token, which also works (see Authentication).

  3. Download Node.js 18+ from https://nodejs.org.

  4. Get MCP client like Claude Desktop, Cursor, Windsurf or other MCP-compatible tools.

  5. Configure the MCP server in your AI client (see configuration examples below).

Connecting to Decodo's MCP server

Open your preferred MCP client and add the following configuration (see examples for Claude Code, Cursor, Windsurf bellow):

{
  "mcpServers": {
    "Decodo": {
      "url": "https://mcp.decodo.com/mcp",
      "headers": {
        "Authorization": "Bearer <api_key>"
      }
    }
  }
}

Authentication

Credential

Where to get it

Hosted server header

Local server env

API key (recommended)

Web Data API subscription on the dashboard

Authorization: Bearer <api_key>

SCRAPER_API_TOKEN=<api_key>

Basic authentication token (older plans)

Web Scraping API page on the dashboard

Authorization: Basic <basic_auth_token>

SCRAPER_API_TOKEN=<basic_auth_token>

The local server reads either credential from SCRAPER_API_TOKEN and works out which one it got.

Claude Desktop

  1. Open Claude Desktop → Settings → Developer → Edit Config.

  2. Add to claude_desktop_config.json:

{
  "mcpServers": {
    "Decodo": {
      "command": "npx",
      "args": ["-y", "@decodo/mcp-server"],
      "env": {
        "SCRAPER_API_TOKEN": "<api_key>",
        "TOOLSETS": "web,ai"
      }
    }
  }
}
  1. Save and restart Claude Desktop.

Cursor

  1. Open Settings → MCP.

  2. Click Add a new global MCP server (opens mcp.json).

  3. Add the same configuration as above.

  4. Save — look for a green status indicator next to Decodo.

Windsurf

  1. Open Settings → Windsurf Settings.

  2. Scroll to Cascade → Add custom server + (opens mcp_config.json).

  3. Add the same configuration as above.

  4. Save and restart Windsurf.

Test your setup

Once connected, try this prompt in your client:

▎ "Scrape the titles of the top 5 articles from Hacker News"

You should get a structured list back within seconds. If you see an auth error, double-check your API key on the dashboard.

Local development

Only needed if you want to change the server code.

Prerequisites

Step-by-step guide

  1. Clone this repository:

git clone https://github.com/Decodo/mcp-server
  1. Run the following commands in the terminal:

cd mcp-server
npm install
npm run build
  1. Take note of your build location:

cd build/
pwd

Adding index.js to the end of this directory, your build file location should look something like this:

/Users/your.user/projects/mcp-server/build/index.js
  1. Update your MCP client with the server information:

{
  "mcpServers": {
    "decodo-mcp": {
      "command": "node",
      "args": ["/Users/your.user/projects/mcp-server/build/index.js"],
      "env": {
        "SCRAPER_API_TOKEN": "<api_key>"
      }
    }
  }
}

Toolsets

Tools are organized into toolsets. Which ones you get depends on how you connect.

Claude (official connector)

The Decodo connector in Claude's connector directory includes the Web Data API tools only:

Toolset

Tools

web

scrape_as_markdown, screenshot, map, crawl_start, crawl_status, crawl_results, crawl_cancel

search

search

Any MCP client

You can selectively enable specific toolsets by passing a comma-separated list via the toolsets query parameter:

    "Decodo MCP Server": {
      "url": "https://mcp.decodo.com/mcp?toolsets=web,ai",
      "headers": {
        "Authorization": "Bearer <api_key>"
      }
    }

When no toolsets are specified, all tools are registered.

Toolset

Tools

web

scrape_as_markdown, screenshot, map, crawl_start, crawl_status, crawl_results, crawl_cancel

search

search, google_search, google_ads, google_lens, google_travel_hotels, bing_search

ecommerce

amazon_search, amazon_product, amazon_pricing, amazon_sellers, amazon_bestsellers, walmart_search, walmart_product, target_search, target_product, tiktok_shop_search, tiktok_shop_product, tiktok_shop_url

social_media

tiktok_post, youtube_metadata, youtube_channel, youtube_subtitles, youtube_search

ai

chatgpt, perplexity, google_ai_mode

Tools

The server exposes the following tools:

Tool

Description

Example prompt

scrape_as_markdown

Scrapes any target URL, expects a URL to be given via prompt. Returns results in Markdown.

Scrape peacock.com from a US IP address and tell me the pricing.

screenshot

Captures a screenshot of any webpage and returns it as a PNG image.

Take a screenshot of github.com from a US IP address.

map

Lists the URLs on a website without fetching their content. API key only.

Map docs.decodo.com and list the pages under /scraping-api.

crawl_start

Starts crawling a website and returns the crawl id without waiting. API key only.

Crawl the first 10 pages of decodo.com/blog.

crawl_status

Reports a crawl's progress: pages discovered, completed and failed. API key only.

Is my crawl finished yet?

crawl_results

Returns crawled pages as Markdown, a few at a time with a cursor. API key only.

Show me the pages my crawl found.

crawl_cancel

Stops a running crawl; pages crawled so far stay readable. API key only.

Cancel my crawl.

search

Searches the web and returns ranked results. API key only.

Search the web for MCP server hosting options.

google_search

Scrapes Google Search for a given query, and returns parsed results.

Scrape Google Search for shoes and tell me the top position.

google_ads

Scrapes Google Ads search results.

Scrape Google Ads for laptop and show me the top ads.

google_lens

Scrapes Google Lens image search results.

Search Google Lens for this image: https://example.com/image.jpg

google_ai_mode

Scrapes Google AI Mode (Search with AI) results.

Ask Google AI Mode: What are the top three dog breeds?

google_travel_hotels

Scrapes Google Travel Hotels search results.

Search Google Travel Hotels for hotels in Paris.

amazon_search

Scrapes Amazon Search for a given query, and returns parsed results.

Scrape Amazon Search for wireless keyboard.

amazon_product

Scrapes Amazon Product page.

Scrape Amazon product B09H74FXNW and show me the details.

amazon_pricing

Scrapes Amazon Product pricing information.

Get pricing for Amazon product B09H74FXNW.

amazon_sellers

Scrapes Amazon Seller information.

Get information about Amazon seller A1R0Z7FJGTKESH.

amazon_bestsellers

Scrapes Amazon Bestsellers list.

Show me Amazon bestsellers in electronics.

walmart_search

Scrapes Walmart Search for a given query, and returns parsed results.

Scrape Walmart Search for camping tent.

walmart_product

Scrapes Walmart Product page.

Scrape Walmart product 15296401808.

target_search

Scrapes Target Search for a given query, and returns parsed results.

Scrape Target Search for kitchen appliances.

target_product

Scrapes Target Product page.

Scrape Target product 92186007.

tiktok_post

Scrapes a TikTok post URL for structured data (e.g. engagement, caption, hashtags).

Scrape this TikTok post: https://www.tiktok.com/@nba/video/7393013274725403950

tiktok_shop_search

Scrapes TikTok Shop Search for a given query, and returns parsed results.

Scrape TikTok Shop Search for phone cases.

tiktok_shop_product

Scrapes TikTok Shop Product page.

Scrape TikTok Shop product 1731541214379741272.

tiktok_shop_url

Scrapes TikTok Shop page by URL.

Scrape this TikTok Shop URL: https://www.tiktok.com/shop/s?q=HEADPHONES

youtube_metadata

Scrapes YouTube video metadata.

Get metadata for YouTube video dFu9aKJoqGg.

youtube_channel

Scrapes YouTube channel videos.

Scrape YouTube channel @decodo_official.

youtube_subtitles

Scrapes YouTube video subtitles.

Get subtitles for YouTube video L8zSWbQN-v8.

youtube_search

Search YouTube videos.

Search YouTube for "How to care for chinchillas".

bing_search

Scrapes Bing Search results.

Search Bing for laptop reviews.

chatgpt

Sends a single prompt to ChatGPT and returns its answer (no conversation history).

Ask ChatGPT to explain quantum computing in simple terms.

perplexity

Sends a single prompt to Perplexity and returns its answer (no conversation history).

Ask Perplexity what the latest trends in web development are.

Parameters

The following parameters are inferred from user prompts:

Parameter

Description

jsRender

Renders target URL in a headless browser.

geo

Sets the country from which the request will originate.

locale

Sets the locale of the request.

tokenLimit

Maximum number of characters to return (default 45000). Useful if the context window is small.

prompt

Prompt to send to AI tools (chatgpt, perplexity).

search

Activates ChatGPT's web search functionality (chatgpt only).

xhr

When true, includes XHR or fetch responses in the scrape result where supported (e.g. tiktok_post).

deviceType

Device type to emulate (desktop, mobile, tablet). Parsed targets are stricter: Amazon tools are desktop-only so they omit it, and bing_search/google_ai_mode accept desktop and mobile only.

domain

Domain to use for the request (e.g., amazon.com, amazon.co.uk, bing.com).

pageFrom

Starting page number for pagination.

deliveryZip

ZIP code for delivery location (Target, Walmart).

storeId

Store ID for local inventory (Walmart).

country

Country for TikTok Shop requests.

limit

Maximum number of results to return (e.g., YouTube channel videos).

language_code

Language code for subtitles (e.g., en, es).

Examples

Scraping geo-restricted content

Query your AI agent with the following prompt:

Scrape peacock.com from a German IP address and tell me the pricing.

This prompt will say that peacock.com is geo-restricted. To bypass the geo-restriction:

Scrape peacock.com from a US IP address and tell me the pricing.

Limiting number of response tokens

If your agent has a small context window, the content returned from scraping will be automatically truncated, in order to avoid context-overflow. You can increase the number of tokens returned within your prompt:

Scrape hacker news, return 50k tokens.

If your agent has a big context window, tell it to return full content:

Scrape hacker news, return full content.

Use with Decodo agent skills

This server gives your agent the scraping tools. Decodo/agent-skills teaches it when to reach for them, which surface to use, and how to call it — so the agent picks the right tool and parameters on its own instead of guessing.

The skills route across the decodo CLI, this hosted MCP server, and the raw HTTP API, and fall back to the MCP server automatically when no shell is available. Pairing the two gives your agent both the execution layer (this server) and the decision layer (the skills) in a single setup.

Quick start (Claude Code):

/plugin marketplace add Decodo/agent-skills
/plugin install decodo@decodo-skills

See the agent-skills README for manual install and other agents (Cursor, Codex, Gemini CLI, Windsurf).

Web Scraping API, Decodo agent skills, Decodo OpenClaw skill

Try it

Plug Decodo MCP Server into your AI workflow in just a few clicks and equip your AI agents with real-time data from any website.

Start for free | Docs | Discord

License

All code is released under the MIT License.

Available Tools

33 tools
amazon_bestsellersAmazon BestsellersA
Read-only

Fetch the Amazon Best Sellers list for a category through the Decodo Web Scraping API (amazon_bestsellers target) and return it parsed as JSON. Use it to see the top-selling products in a category. Docs: https://help.decodo.com/docs/web-scraping-api-amazon-bestsellers

NameRequiredDescriptionDefault
queryYesAmazon category (e.g., "mobile-apps", "electronics")
domainNoAmazon domain (e.g., amazon.com, amazon.co.uk)
pageFromNoStarting page number for pagination

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, destructiveHint=false, so the safety profile is covered. The description adds useful context beyond that — the request is proxied through the Decodo Web Scraping API target `amazon_bestsellers` and results come back parsed as JSON — but says nothing about pagination limits, failure modes, or latency for what is an external scrape.

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?

Two sentences plus a docs link: purpose first, then usage intent, then reference material. Nothing is repeated from the schema and nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a three-parameter read-only scrape with full schema coverage and no output schema, the description covers purpose, mechanism, and return type (parsed JSON), plus a docs link for deeper detail. Minor gaps: no mention of domain defaults or pagination depth limits.

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 100%, so query, domain, and pageFrom are each documented in the schema; baseline is therefore 3. The description adds only that the request is 'for a category', which loosely maps to `query`, and gives no extra detail on domain defaults or pageFrom behavior.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Fetch the Amazon Best Sellers list for a category') and notes the parsed-JSON result, which clearly separates it from siblings like amazon_search or amazon_product. It stops short of explicitly naming an alternative tool, but the resource specificity makes selection unambiguous.

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

Usage Guidelines3/5

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

'Use it to see the top-selling products in a category' gives an implied usage context, but there is no explicit when-not guidance and no named alternative (e.g., amazon_product for a single item, amazon_sellers for seller data). The agent must infer the boundaries from the tool name alone.

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

amazon_pricingAmazon PricingB
Read-only

Fetch the offers for an Amazon product by ASIN through the Decodo Web Scraping API (amazon_pricing target) and return them parsed as JSON. Use it to compare what different sellers charge for the same product. Docs: https://help.decodo.com/docs/web-scraping-api-amazon-pricing

NameRequiredDescriptionDefault
geoNoAmazon geo location (e.g., 10001 for US ZIP code)
queryYesAmazon product ASIN (e.g., "B09H74FXNW")
domainNoAmazon domain (e.g., amazon.com, amazon.co.uk)
jsRenderNoShould the request be opened in a headless browser, false by default
pageFromNoStarting page number for pagination

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true and destructiveHint=false, so the safety profile is covered. The description adds that requests are proxied through the Decodo Web Scraping API and that output is parsed JSON, which is useful context, but says nothing about pagination behavior (pageFrom exists), latency, or how an empty offers list appears.

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

Conciseness4/5

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

Three compact sentences: action and return format first, use case second, doc link last. Nothing is wasted, though the docs URL and the API-target parenthetical are somewhat promotional rather than operational.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 5 parameters, no output schema, and a 100%-described schema, the description covers purpose and return type but not the returned offer structure (price, seller, condition, shipping) an agent needs before consuming the JSON. It is adequate to invoke, but incomplete for interpreting results.

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

Parameters3/5

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

Schema description coverage is 100%, so every parameter (geo, query, domain, jsRender, pageFrom) is already documented in the schema. The description only restates that query is an ASIN and adds no syntax, default, or interaction details (e.g., how geo and domain combine). Baseline 3 is correct here.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb (Fetch) and resource (offers for an Amazon product identified by ASIN), plus the transport layer (Decodo Web Scraping API `amazon_pricing` target) and the response shape (parsed JSON). An agent can distinguish it from amazon_product or amazon_sellers by the stated 'offers / what different sellers charge' framing, though no sibling is named explicitly.

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

Usage Guidelines3/5

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

It gives one positive use case: 'compare what different sellers charge for the same product'. There is no explicit when-not guidance, no mention of when to prefer amazon_product or amazon_sellers instead, and no prerequisites stated. Usage is implied rather than specified.

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

amazon_productAmazon ProductA
Read-only

Fetch an Amazon product page by ASIN through the Decodo Web Scraping API (amazon_product target) and return its details parsed as JSON. Use it when you know the product's ASIN and need its title, price, rating or description. Docs: https://help.decodo.com/docs/web-scraping-api-amazon-product

NameRequiredDescriptionDefault
geoNoAmazon geo location (e.g., 10001 for US ZIP code)
queryYesAmazon product ASIN (e.g., "B09H74FXNW")
domainNoAmazon domain (e.g., amazon.com, amazon.co.uk)
jsRenderNoShould the request be opened in a headless browser, false by default

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true and destructiveHint=false, covering the safety profile. The description adds that the result is parsed JSON and identifies the Decodo API target, but it does not disclose rate limits, failure modes, auth needs, or how geo/domain/jsRender affect behavior.

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?

Two tight sentences front-load the purpose and usage condition, followed by a documentation link. There is no wasted or redundant text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a four-parameter tool with full schema coverage and annotations, the description covers purpose, usage condition, API target, and return format. Since there is no output schema, it could say more about the returned JSON shape, but it does list representative 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?

Schema description coverage is 100%, so parameter meaning is primarily carried by the schema. The description reinforces that query is the product ASIN, but it does not add meaning for geo, domain, or jsRender beyond what the schema already documents.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: fetch an Amazon product page by ASIN and return parsed JSON details. It implies the ASIN-based use case, which helps distinguish it from search-oriented siblings, but it does not explicitly name those alternatives.

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

Usage Guidelines4/5

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

It gives a clear usage condition: use when you know the product's ASIN and need title, price, rating or description. It does not explicitly state when not to use it or name sibling alternatives like amazon_search.

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

amazon_sellersAmazon SellersA
Read-only

Fetch an Amazon seller profile by seller ID through the Decodo Web Scraping API (amazon_sellers target) and return it parsed as JSON. Use it to check a seller's name, rating and feedback. Docs: https://help.decodo.com/docs/web-scraping-api-amazon-sellers

NameRequiredDescriptionDefault
geoNoAmazon geo location (e.g., 10001 for US ZIP code)
queryYesAmazon seller ID (e.g., "A1R0Z7FJGTKESH")
domainNoAmazon domain (e.g., amazon.com, amazon.co.uk)
jsRenderNoShould the request be opened in a headless browser, false by default

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful context beyond that: the Decodo Web Scraping API target name and that the response is parsed JSON, plus a docs link for deeper detail.

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?

Two tight sentences that front-load the action and resource, followed by a docs URL. Every element earns its place, though the URL adds a bit of trailing bulk.

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?

With annotations covering safety and no output schema, the description tells the agent what is fetched and that it is parsed JSON. For a 4-param, fully-documented-schema tool, this is close to complete; only explicit alternative routing is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so all four parameters (query, geo, domain, jsRender) are documented in the schema. The description only reinforces that query is a seller ID; the baseline 3 is appropriate when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: fetches an Amazon seller profile by seller ID via the Decodo API and returns parsed JSON. The resource (seller profile) is distinct from sibling product/search tools, though no sibling is named explicitly.

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

Usage Guidelines4/5

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

"Use it to check a seller's name, rating and feedback" gives a clear usage context that maps to the resource type. It stops short of naming alternatives or when-not conditions, but no guidance is misleading.

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

chatgptChatGPTA
Read-only

Send one prompt to ChatGPT through the Decodo Web Scraping API (chatgpt target) and return its answer parsed as JSON. Each call is a single prompt and answer, with no conversation history; set search to let ChatGPT use web search. Use it to see how ChatGPT answers a question, for example to check how it describes a brand. Docs: https://help.decodo.com/docs/web-scraping-api-chatgpt

NameRequiredDescriptionDefault
geoNoGeolocation of the desired request, expressed as a country name
promptYesPrompt to send to ChatGPT
searchNoActivates ChatGPT's web search functionality

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true and destructiveHint=false, and the description adds real context: one prompt per call, no conversation history, and that `search` enables ChatGPT's web search. It omits anything on latency, rate limits, error behavior, or the shape of the returned JSON beyond 'parsed as JSON'.

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?

Three short sentences, front-loaded with the core action and the single-turn constraint, followed by the usage example and a docs link. Nothing is padded or redundant.

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?

With no output schema, the description does state the return type ('answer parsed as JSON') and the one-shot interaction model, plus a docs link for deeper detail. It could say more about the response envelope, but nothing essential for calling the tool is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so all three parameters are already documented. The description reinforces `search` ('set `search` to let ChatGPT use web search') but adds nothing for `geo`, so it only marginally exceeds the schema baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: send one prompt to ChatGPT via the Decodo Web Scraping API and return the answer parsed as JSON. It is clear about the single-turn nature of the call, but it never distinguishes itself from sibling LLM-answer tools like perplexity or google_ai_mode.

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

Usage Guidelines4/5

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

Gives a concrete use case ('see how ChatGPT answers a question... check how it describes a brand') and a key constraint (no conversation history), which sets expectations about repeated calls. It stops short of naming alternatives or stating when not to use it versus the other AI-answer siblings.

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

crawl_cancelCancel CrawlA
DestructiveIdempotent

Stop a crawl started with crawl_start so it crawls no more pages. Pages crawled before the cancel stay readable with crawl_results.

NameRequiredDescriptionDefault
crawlIdYesCrawl id returned by crawl_start

TDQS

A4.3/5.0
Behavior4/5

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

With annotations already declaring mutation, destructiveness, idempotency, and open-world behavior, the description adds useful outcome context: no further pages are crawled and previously crawled pages remain readable via crawl_results. It does not describe return values or auth requirements, but the key side effect is disclosed.

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

Conciseness5/5

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

The description is two focused sentences with no wasted language. The core action and the preservation of prior results are both front-loaded and 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?

For a simple one-parameter cancellation tool with rich annotations and no output schema, the description covers the essential behavior: what is stopped, the prerequisite crawl_start reference, and what happens to already-crawled pages. Nothing critical is missing.

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

Parameters3/5

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

Schema description coverage is 100%, and the single crawlId parameter is fully documented in the schema as the id returned by crawl_start. The description does not add syntax or format details beyond the schema, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Stop a crawl started with crawl_start so it crawls no more pages.' It clearly distinguishes cancellation from starting, checking status, or reading results.

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

Usage Guidelines4/5

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

It gives clear context for when to use this tool: to stop a crawl previously started with crawl_start. It does not explicitly mention alternatives or exclusions, but the usage is readily inferred for a cancel operation.

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

crawl_resultsCrawl ResultsA
Read-only

Return crawled pages as Markdown from a crawl started with crawl_start, a few at a time. Call it once crawl_status reports the crawl is no longer "pending". Crawled pages can be long and overflow your context, so each call returns at most about 50 KB and up to limit pages (10 by default). A page too long for one call is split across calls; each part carries contentPart with its character range. Pass nextCursor back to get the rest; when it is missing, you have every page. For precise work, prefer map plus scrape_as_markdown on the pages you need.

NameRequiredDescriptionDefault
limitNoMaximum number of pages to return, 10 by default and at most 100
cursorNonextCursor from a previous crawl_results call; omit for the first pages
crawlIdYesCrawl id returned by crawl_start

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already mark the tool as read-only, open-world, and non-destructive, and the description adds important behavioral details beyond them: context overflow limits, a roughly 50 KB response cap, page splitting with contentPart ranges, and cursor-based pagination. It also explains that a missing nextCursor means all pages have been returned, which is exactly the kind of return behavior an agent needs.

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 front-loaded with purpose and timing, then adds only necessary pagination and alternative guidance. Despite covering several behaviors, every sentence contributes to correct invocation.

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?

There is no output schema, but the description sufficiently explains what is returned, how long pages are handled, and how to retrieve all results. Combined with annotations that cover safety, it is complete for correct use.

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

Parameters4/5

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

Schema coverage is 100%, so the schema already documents all three parameters. The description still adds meaningful semantics by explaining the pagination flow for cursor/nextCursor and how limit interacts with the 50 KB response cap and split-page behavior.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: return crawled pages as Markdown from a crawl started with crawl_start. It distinguishes this from crawl_start, crawl_status, and the precise-work alternative map plus scrape_as_markdown, so an agent can identify its role without opening sibling schemas.

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?

It explicitly says to call this once crawl_status reports the crawl is no longer pending, and it names the alternative for precise work: map plus scrape_as_markdown on the needed pages. This gives clear when-to-use, prerequisite, and alternative guidance.

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

crawl_startStart CrawlA

Start crawling a website and return the crawl id right away, without waiting for it to finish. Check progress with crawl_status, read pages with crawl_results and stop it early with crawl_cancel. Crawled content can overflow your context, so limit defaults to 10 pages. For precise work, prefer map plus scrape_as_markdown on the pages you need.

NameRequiredDescriptionDefault
geoNoGeolocation of the desired request, expressed as a country name
urlYesWebsite URL to start crawling from
limitNoMaximum number of pages to crawl, 10 by default and at most 100
localeNoLocale of the desired request
sitemapNoWhether to use the sitemap alongside links found on pages, only the sitemap, or skip it
maxDepthNoHow many links deep to follow from the start URL
selectPathsNoOnly keep URLs whose path matches one of these patterns, e.g. /blog/*
domainFilterNoWhich links to follow: the same domain, its subdomains too, or any domain
excludePathsNoDrop URLs whose path matches one of these patterns

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, idempotentHint=false, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds genuinely non-structured behavior: the call is fire-and-forget and returns an id without waiting, and results can overflow context. It does not mention that repeated calls spawn duplicate crawl jobs (relevant given idempotentHint=false) or any resource/credit cost, which keeps it short of a 5.

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

Conciseness5/5

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

Three sentences, front-loaded with the async return contract, then the sibling routing, then the context-safety caveat and the alternative. No filler and nothing repeated.

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?

With no output schema, the description still tells the agent what comes back (a crawl id) and how to retrieve the actual content later, and it covers the main hazard (context overflow) for a 9-parameter open-world crawl. Nothing needed to invoke it correctly is missing.

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

Parameters4/5

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

Schema coverage is 100%, so all nine parameters are already documented and the baseline is 3. The description goes beyond the schema by explaining *why* `limit` is low by default (crawled content can overflow context), which changes how an agent should tune it rather than merely restating the default value.

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?

States a specific verb and resource ('Start crawling a website') and immediately defines the scope of the operation as asynchronous — it 'returns the crawl id right away, without waiting for it to finish.' It also distinguishes itself from crawl_status, crawl_results, crawl_cancel, and the map/scrape_as_markdown pair, so an agent can place it in the workflow without opening schemas.

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?

Gives explicit when-to-use routing: check progress with crawl_status, read pages with crawl_results, stop early with crawl_cancel, and for precise work prefer map plus scrape_as_markdown. That is a complete lifecycle plus a stated alternative with the condition that selects it.

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

crawl_statusCrawl StatusA
Read-only

Report the progress of a crawl started with crawl_start: its status and how many pages were discovered, completed and failed. The crawl is finished once status is no longer "pending".

NameRequiredDescriptionDefault
crawlIdYesCrawl id returned by crawl_start

TDQS

A4/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, non-destructive, openWorld), so the description's job is to add operational context. It does: it discloses the returned fields and the termination condition, which are not in the annotations. It does not mention polling costs, caching, or the full set of status values, which would have earned a 5.

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

Conciseness5/5

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

Two sentences, no filler, and the core purpose is front-loaded ahead of the termination detail. Every clause carries information an agent needs.

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?

With no output schema, the description carries the burden of describing return values, and it does name status and the three counters. The remaining gap is that the possible status values beyond "pending" are never listed, so an agent cannot fully reason about terminal states.

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?

There is a single parameter with 100% schema description coverage, so the schema already explains that crawlId comes from crawl_start. The description adds nothing about the parameter beyond that, which is the baseline case.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Report the progress of a crawl') and enumerates what is reported: status plus discovered/completed/failed page counts. It ties itself to the sibling crawl_start, which anchors it in the crawl workflow, but never explicitly contrasts itself with crawl_results, the sibling most likely to be confused with it.

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

Usage Guidelines4/5

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

Gives a concrete operational cue: poll this until status is no longer "pending". That tells the agent when to use the tool and when it may stop using it. It stops short of explicitly excluding crawl_results as the tool for retrieving crawl content.

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

google_ai_modeGoogle AI ModeB
Read-only

Ask Google AI Mode a question through the Decodo Web Scraping API (google_ai_mode target) and return its AI answer as JSON. Use it to see what Google's AI search says about a query. Docs: https://help.decodo.com/docs/web-scraping-api-google-ai-mode

NameRequiredDescriptionDefault
geoNoGeo location for AI mode search (e.g., "us", "uk")
queryYesSearch query for Google AI Mode (e.g., "What are the top three dog breeds?")
deviceTypeNoDevice type to emulate for the request

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds that the call goes through the Decodo Web Scraping API (implying proxied, possibly rate-limited/latency-bearing access) and that the result is JSON, plus a docs link, but says nothing about latency, quotas, or failure modes.

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?

Two short sentences plus a docs link, with the action front-loaded. The parenthetical API target and URL are slightly incidental but useful; nothing is padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple three-parameter read tool with no output schema, the description covers intent and return type ("AI answer as JSON") but leaves the response shape, sourcing behavior, and any limits unstated. Adequate but with visible 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?

Schema description coverage is 100%, and all three parameters (query, geo, deviceType) are already documented with examples and an enum in the schema. The description adds no parameter meaning beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: ask Google AI Mode a question via Decodo and return the AI answer as JSON. It's clear what it does, but it doesn't distinguish itself from close siblings like google_search, chatgpt, or perplexity.

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

Usage Guidelines3/5

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

"Use it to see what Google's AI search says about a query" gives an implied usage context, but there is no guidance on when to prefer this over google_search or chatgpt/perplexity, and no exclusions.

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

google_lensGoogle LensA
Read-only

Run a Google Lens image search for an image URL through the Decodo Web Scraping API (google_lens target) and return the parsed visual matches as JSON. Use it to identify what an image shows or find pages where it appears. Docs: https://help.decodo.com/docs/web-scraping-api-google-lens

NameRequiredDescriptionDefault
queryYesImage URL for Google Lens search (e.g., "https://example.com/image.jpg")
jsRenderNoShould the request be opened in a headless browser, false by default
deviceTypeNoDevice type to emulate for the request

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnly/openWorld/non-destructive, and the description adds real context: the request is proxied through Decodo's Web Scraping API and results come back as parsed JSON. It omits any mention of credentials, quota/rate limits, or latency of the rendering path, so not a full 5.

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

Conciseness4/5

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

Two sentences, front-loaded with the action and scope, with the docs link trailing where it belongs. Slightly dense — the API and target-name detail could be trimmed — but every clause carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 3-parameter, no-output-schema tool, the description tells the agent the return type (parsed JSON visual matches) and the execution path (Decodo proxy). An agent can call it correctly; only error/auth behavior and result structure detail are absent.

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

Parameters3/5

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

Schema description coverage is 100% with enum and defaults documented, so the baseline is 3. The description only implies that `query` is an image URL and says nothing about `jsRender` or `deviceType` beyond what the schema already states.

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?

States a specific verb (run) and resource (Google Lens image search on an image URL) and names the backend target (`google_lens`). The image-URL dimension clearly separates it from the text-oriented siblings like google_search and search.

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

Usage Guidelines4/5

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

Gives two concrete use cases: identify what an image shows, or find pages where it appears. That's clear context, but no explicit when-not or named alternative is offered, so it stops short of the 5 bar.

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

google_travel_hotelsGoogle Travel HotelsA
Read-only

Search Google Travel for hotels through the Decodo Web Scraping API (google_travel_hotels target) and return the listings as Markdown. Use it to find hotel options and prices for a destination. Docs: https://help.decodo.com/docs/web-scraping-api-google-travel-hotels

NameRequiredDescriptionDefault
queryYesHotel search query (e.g., "trivago", "hotels in Paris")
localeNoLocale of the desired request
jsRenderNoShould the request be opened in a headless browser, false by default
pageFromNoStarting page number for pagination
deviceTypeNoDevice type to emulate for the request

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint and destructiveHint=false, and the description usefully adds the exact upstream target (google_travel_hotels) and the output format (Markdown listings). It does not cover rate limits, pagination depth, or result-count behavior, which keeps it below a 5.

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

Conciseness5/5

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

Two tight sentences: purpose and target first, use case second, docs link last. No filler and the key information is 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?

With no output schema present, the description responsibly states that results come back as Markdown listings, which is the main thing an agent needs to know about the return value. Pagination semantics and result volume remain unstated, a minor gap for a 5-parameter read 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?

Schema description coverage is 100%, so every parameter including the enum-constrained deviceType is already documented in the schema. The description adds no parameter-level meaning (e.g., how pageFrom interacts with results or what locale affects), so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: search Google Travel for hotels via the Decodo web scraping API, returning Markdown. The hotel-specific scope distinguishes it implicitly from generic siblings like google_search or scrape_as_markdown, though no sibling is named.

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

Usage Guidelines3/5

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

The sentence 'Use it to find hotel options and prices for a destination' gives a clear use case, but there is no guidance on when to prefer this over google_search or scrape_as_markdown, and no exclusions or prerequisites are stated.

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

mapMap WebsiteA
Read-only

List the URLs on a website without fetching their content. Large sites can overflow your context, so limit defaults to 10; narrow with selectPaths or excludePaths. For precise work, map the site, then scrape_as_markdown only the pages you need.

NameRequiredDescriptionDefault
geoNoGeolocation of the desired request, expressed as a country name
urlYesWebsite URL to map
limitNoMaximum number of URLs to return, 10 by default and at most 500
localeNoLocale of the desired request
sitemapNoWhether to use the sitemap alongside links found on pages, only the sitemap, or skip it
selectPathsNoOnly keep URLs whose path matches one of these patterns, e.g. /blog/*
domainFilterNoWhich links to follow: the same domain, its subdomains too, or any domain
excludePathsNoDrop URLs whose path matches one of these patterns

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare read-only, open-world, non-destructive behavior, so the safety profile is covered. The description adds useful behavioral context: it does not fetch page content, large sites can overflow context, and the default limit is 10. It does not explain sitemap/domainFilter behavior, but it meaningfully exceeds the 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?

Three compact sentences, front-loaded with the core operation and immediately followed by the context-overflow caveat and workflow guidance. No sentence is redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 8-parameter tool with no output schema but full schema descriptions, the description provides the essential mental model and workflow. It omits details about sitemap modes, domainFilter, and geo/locale, but those are fully documented in the schema, so the description is largely complete.

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

Parameters4/5

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

Schema coverage is 100%, so the schema documents all parameters. The description still adds semantic value by explaining why limit defaults to 10 (context overflow) and why selectPaths/excludePaths should be used to narrow results, rather than merely restating 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?

States a specific verb and resource: list URLs on a website without fetching their content. The phrase 'without fetching their content' clearly distinguishes it from scrape_as_markdown and crawl tools, so an agent can select it without opening the schema.

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

Usage Guidelines5/5

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

Explicitly recommends the workflow: 'map the site, then scrape_as_markdown only the pages you need', naming the alternative and the condition that selects it. It also explains when to narrow with selectPaths/excludePaths, leaving little inference.

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

perplexityPerplexityA
Read-only

Send one prompt to Perplexity through the Decodo Web Scraping API (perplexity target) and return its answer parsed as JSON. Each call is a single prompt and answer, with no conversation history. Use it to see how Perplexity answers a question and which sources it draws on. Docs: https://help.decodo.com/docs/web-scraping-api-perplexity

NameRequiredDescriptionDefault
geoNoGeolocation of the desired request, expressed as a country name
promptYesPrompt to send to Perplexity

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnly, non-destructive, open-world behavior, so the safety profile is covered. The description adds genuinely useful context the annotations do not: statelessness (no conversation history), one prompt per call, JSON-parsed output. It omits anything about credentials, quotas, latency, or failure modes, which is a real gap for a third-party scraping proxy.

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

Conciseness4/5

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

Three short sentences, front-loaded with the action and the stateless constraint, with the docs URL relegated to the end where it belongs. The only cost is that the docs link occupies a sentence without conveying behavior itself.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter, no-output-schema tool, the description covers what matters: single-turn behavior, that the answer comes back as JSON, and that sources are part of the value. Slight incompleteness in not sketching the JSON payload (answer field, sources field) or noting the stateless implication for follow-ups.

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 100% for both parameters, so the structured data already documents `prompt` and `geo`; the baseline of 3 applies. The description adds no meaning beyond the schema — nothing about prompt length limits, what a country name does to results, or the default when `geo` is omitted.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description pairs a concrete verb (send a prompt) with a concrete resource (Perplexity via Decodo's `perplexity` target) and states the return shape (answer parsed as JSON). It does not name the obvious sibling `chatgpt`, which is the main thing keeping it from a 5, since an agent must infer the differentiation itself.

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

Usage Guidelines3/5

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

It gives one positive use case ('see how Perplexity answers a question and which sources it draws on') plus an implicit constraint (single prompt, no conversation history). There is no when-not guidance and no explicit alternative such as `chatgpt` or `search`, so selection against siblings rests on inference.

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

scrape_as_markdownScrape as MarkdownA
Read-only

Fetch any public web page through the Decodo Web Scraping API (universal target) and return its content as Markdown. Use it to read a specific URL when no site-specific tool fits; very long pages are truncated, and tokenLimit sets a lower cap. Docs: https://help.decodo.com/docs/web-data-api-markdown-response

NameRequiredDescriptionDefault
geoNoGeolocation of the desired request, expressed as a country name
urlYesURL to scrape
localeNoLocale of the desired request
jsRenderNoShould the request be opened in a headless browser, false by default
tokenLimitNoMaximum number of characters to return; longer content is truncated. Defaults to 45000.

TDQS

A4.2/5.0
Behavior4/5

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

Adds real behavior beyond the annotations: very long pages are truncated and `tokenLimit` can lower the cap, and it discloses the upstream dependency (Decodo `universal` target). It doesn't mention rate limits, cost, or failure modes for blocked/private pages, keeping it short of 5.

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?

Two tight sentences: capability first, then the routing rule and truncation caveat, plus a docs link. Nothing repeated from the title and no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only single-URL scraper with a fully described schema and no output schema, the description covers what's returned (Markdown) and the main length constraint. Minor gaps: it doesn't say how failures (paywalls, JS-only pages, crawling restrictions) manifest, though jsRender in the schema hints at the JS case.

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 100%, so geo, locale, jsRender, and url are already fully documented. The description only reinforces tokenLimit behavior, which the schema also states; baseline 3 is appropriate when the schema carries the parameter burden.

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?

Names a specific verb (fetch) and resource (any public web page via the Decodo Web Scraping API `universal` target) and states the output format (Markdown). This clearly distinguishes it from site-specific siblings like amazon_product or youtube_metadata.

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

Usage Guidelines4/5

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

"Use it to read a specific URL when no site-specific tool fits" gives an explicit selection rule against the many site-specific siblings. It lacks a stated when-not (e.g., dynamic JS-heavy pages needing jsRender, or bulk crawling where crawl_start applies), so not quite a 5.

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

screenshotScreenshotA
Read-only

Capture a PNG screenshot of a web page through the Decodo Web Scraping API (universal target with PNG output). Use it when the page layout or visuals matter, not just its text. Docs: https://help.decodo.com/docs/web-data-api-screenshot-response

NameRequiredDescriptionDefault
geoNoGeolocation of the desired request, expressed as a country name
urlYesURL to screenshot

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true and destructiveHint=false, so safety is covered. The description adds useful context about the output format (PNG via the 'universal' target) and a docs link, but does not say how the image is delivered (URL vs base64), whether existing data is affected, or any rate/latency expectations.

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?

Two tight sentences: capability plus backend detail first, disambiguation and docs second. No filler, and the most decision-relevant information is 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?

For a simple two-parameter read tool with rich annotations but no output schema, the description covers purpose, selection criterion, and output type. The one remaining gap is the shape of the returned artifact (image payload vs URL), which is only inferable via the docs link.

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

Parameters3/5

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

Schema description coverage is 100%, so both `url` and `geo` are already documented in the schema. The description adds nothing about geo behavior or URL formatting, so the baseline 3 applies.

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?

States a specific verb and resource ('Capture a PNG screenshot of a web page') plus the backend mechanism ('universal' target with PNG output). The second sentence draws a clear line against the text-scraping sibling by explaining the visual-vs-text distinction.

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

Usage Guidelines4/5

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

Gives an explicit selection criterion: use when layout or visuals matter rather than text only, which implicitly routes text extraction to scrape_as_markdown. It stops short of naming that sibling tool or stating exclusions (e.g., dynamic-page caveats, cost/latency tradeoffs).

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

target_productTarget ProductA
Read-only

Fetch a Target product page by product ID through the Decodo Web Scraping API (target_product target) and return its details parsed as JSON. Use it when you know a Target product ID and need its price, availability or description. Docs: https://help.decodo.com/docs/web-scraping-api-target-product

NameRequiredDescriptionDefault
jsRenderNoShould the request be opened in a headless browser, false by default
deviceTypeNoDevice type to emulate for the request
product_idYesTarget product ID (e.g., "1003921355")
deliveryZipNoZIP code for delivery location

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnly/openWorld/non-destructive, so the safety profile is covered. The description adds useful context beyond that: the call routes through the Decodo Web Scraping API, the payload is parsed to JSON, and it returns price/availability/description. It doesn't mention failure modes, rate limits, or blocking risk, which a scraper tool could reasonably disclose.

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

Conciseness4/5

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

Three tight sentences with the action and the return shape front-loaded, followed by the selection hint. The docs URL is a minor but justified addition; nothing is redundant with the title.

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?

No output schema exists, so the description usefully names what comes back (price, availability, description) as parsed JSON. For a single-required-param read tool with full annotation coverage, that is close to sufficient; only error/empty-result behavior is unaddressed.

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

Parameters3/5

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

Schema description coverage is 100% and every parameter including product_id, jsRender, deviceType and deliveryZip is documented in the schema itself. The description adds no syntax or constraint detail beyond that, so the baseline 3 applies.

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?

States a specific verb and resource ('Fetch a Target product page by product ID'), names the underlying API target, and says the result is JSON-parsed details. This clearly separates it from target_search, which would be the discovery path rather than a known-ID lookup.

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

Usage Guidelines4/5

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

'Use it when you know a Target product ID and need its price, availability or description' gives a concrete trigger condition. It stops short of naming target_search as the explicit fallback when you don't have an ID, which keeps it out of 5 territory.

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

tiktok_postTikTok PostA
Read-only

Fetch a TikTok video post by URL through the Decodo Web Scraping API (tiktok_post target) and return the page's raw HTML, often several hundred KB. Use it to analyse a specific TikTok video; set xhr to get a JSON list of the page's XHR/fetch requests instead of the HTML. Docs: https://help.decodo.com/docs/web-scraping-api-tiktok-post

NameRequiredDescriptionDefault
urlYesTikTok post URL, e.g. https://www.tiktok.com/@user/video/1234567890
xhrNoWhen true, includes XHR/fetch responses in the scrape result where supported by the target

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, yet the description adds genuinely useful context: the response is 'raw HTML, often several hundred KB' (a payload-size warning) and that xhr swaps the return shape entirely. It does not cover auth, rate limits, or failure behavior, so it is not a 5.

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

Conciseness4/5

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

Two sentences plus a docs link, front-loaded with the core action and return type, with zero filler. The long URL is the only mildly wasteful element.

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?

With no output schema, the description carries the return-value burden and does so for both modes (raw HTML vs XHR JSON list). Both parameters are fully documented in the schema, so the only remaining gap is operational detail like auth or rate limits.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3; however the description adds meaning the schema does not carry plainly, namely that xhr yields 'a JSON list of the page's XHR/fetch requests instead of the HTML.' That clarifies the actual consequence of the flag rather than restating its type.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Fetch a TikTok video post by URL') and names the backing API target, so the agent knows exactly what the tool returns. It does not explicitly distinguish itself from scrape_as_markdown, which could also fetch an arbitrary URL, so it stops short of full sibling differentiation.

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

Usage Guidelines3/5

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

'Use it to analyse a specific TikTok video' gives a usage context and the xhr sentence implies a second mode, but there is no guidance on when to prefer scrape_as_markdown or tiktok_shop_url instead, nor any exclusions or prerequisites.

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

tiktok_shop_productTikTok Shop ProductA
Read-only

Fetch a TikTok Shop product page by product ID through the Decodo Web Scraping API (tiktok_shop_product target) and return it as Markdown. Use it when you know a TikTok Shop product ID and need its price, seller or description. Docs: https://help.decodo.com/docs/web-scraping-api-tiktok-shop-product

NameRequiredDescriptionDefault
countryNoCountry code for the request (e.g., US, GB, DE)
jsRenderNoShould the request be opened in a headless browser, false by default
deviceTypeNoDevice type to emulate for the request
product_idYesTikTok Shop product ID (e.g., "1731541214379741272")

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true and destructiveHint=false, so the safety profile is covered. The description adds real context beyond them: the request is proxied through the Decodo Web Scraping API under the 'tiktok_shop_product' target, the response is Markdown (important since there is no output schema), and a docs link is provided. It still says nothing about credits, rate limits, or failure modes.

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?

Two tight sentences with the action and return format front-loaded, followed by a single docs URL. Nothing is redundant with the title, and every clause carries usable information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a four-parameter read-only scraper with a fully described schema and no output schema, the description covers what it does, how to invoke it, and what comes back (Markdown). Only edge-case behavior — failures, geo-restriction effects of the country parameter, cost — is absent.

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

Parameters3/5

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

Schema description coverage is 100%, so all four parameters (country, jsRender, deviceType, product_id) are already documented at the schema level. The description only reinforces product_id and says nothing about country/jsRender/deviceType, so per the baseline rule this sits at 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource ('Fetch a TikTok Shop product page by product ID') and states that the result comes back as Markdown via the Decodo Web Scraping API. The clause 'Use it when you know a TikTok Shop product ID' implicitly separates it from URL-based sibling tiktok_shop_url, though no sibling is named explicitly.

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

Usage Guidelines4/5

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

It states a clear trigger ('when you know a TikTok Shop product ID and need its price, seller or description'), which is enough to route an agent away from search-type siblings. It stops short of naming alternatives or stating when not to use it (e.g., when you only have a URL, use tiktok_shop_url).

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

tiktok_shop_urlTikTok Shop URLA
Read-only

Fetch any TikTok Shop page by URL through the Decodo Web Scraping API (tiktok target) and return the page's raw HTML, often several hundred KB. Use it for TikTok Shop pages that tiktok_shop_search and tiktok_shop_product do not cover, such as a shop or category URL. Docs: https://help.decodo.com/docs/web-scraping-api-tiktok-shop-url

NameRequiredDescriptionDefault
urlYesTikTok Shop URL (e.g., "https://www.tiktok.com/shop/s?q=HEADPHONES")
jsRenderNoShould the request be opened in a headless browser, false by default

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, openWorld, non-destructive), and the description adds genuinely useful context: it returns the page's raw HTML and warns the payload is often several hundred KB. It does not discuss rate limits, auth, or failure modes, but the key behavioral trait (large raw payload) is disclosed.

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?

Two tightly written sentences, front-loaded with the action and resource, followed by routing guidance to siblings. Every clause carries information; the size warning earns its place.

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?

With no output schema, the description correctly compensates by stating the return value is raw HTML. Combined with annotations and full schema coverage, an agent has enough to call it correctly; only minor gaps (e.g. dynamic content handling) remain.

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 100%, so both url and jsRender are already documented in the schema. The description adds no syntax or format detail beyond that, so the baseline 3 applies.

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?

States a specific verb (Fetch) and resource (any TikTok Shop page by URL) and explicitly names the two sibling tools it complements (tiktok_shop_search and tiktok_shop_product). An agent can immediately tell this is the generic URL-based fallback scraper.

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

Usage Guidelines4/5

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

Clearly states when to use it: for TikTok Shop pages the search and product tools do not cover, such as shop or category URLs. It names the alternatives but does not explicitly state when NOT to use it (e.g. for single product pages where the dedicated tool is better).

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

walmart_productWalmart ProductA
Read-only

Fetch a Walmart product page by product ID through the Decodo Web Scraping API (walmart_product target) and return its details parsed as JSON. Use it when you know the product ID and need its price, availability or description. Docs: https://help.decodo.com/docs/web-scraping-api-walmart-product

NameRequiredDescriptionDefault
storeIdNoWalmart store ID for local inventory
jsRenderNoShould the request be opened in a headless browser, false by default
product_idYesWalmart product ID (e.g., "15296401808")
deliveryZipNoZIP code for delivery location

TDQS

A4/5.0
Behavior4/5

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

Annotations already establish read-only, non-destructive, open-world behavior. The description adds useful context that the request goes through the Decodo Web Scraping API's walmart_product target and returns parsed JSON, though it does not discuss failure modes or rate limits.

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

Conciseness5/5

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

The description is two tight sentences plus a documentation link, with purpose and usage condition front-loaded and no wasted language.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only scraping tool with no output schema, the description gives enough context about source, required input, and returned fields to call it correctly. It could say more about JSON structure or missing-product behavior, but the core information is present.

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

Parameters3/5

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

Schema description coverage is 100%, so all four parameters are already documented in the schema. The description mentions only the product ID and adds no extra meaning for storeId, jsRender, or deliveryZip, making the baseline 3 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: fetch a Walmart product page by product ID and return parsed JSON details. It implicitly distinguishes itself from walmart_search by requiring a known product ID, though it does not explicitly name the sibling tool.

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

Usage Guidelines4/5

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

It clearly says to use the tool when you know the product ID and need price, availability, or description. It does not explicitly mention when to use walmart_search instead, but the product-ID condition gives agents enough routing context.

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

youtube_channelYouTube ChannelA
Read-only

Fetch the videos of a YouTube channel by handle or ID through the Decodo Web Scraping API (youtube_channel target) and return them parsed as JSON. Use it to list what a channel has published. Docs: https://help.decodo.com/docs/web-scraping-api-youtube-channel

NameRequiredDescriptionDefault
limitNoMaximum number of videos to return
queryYesYouTube channel handle or ID (e.g., "@decodo_official")

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already establish readOnly, openWorld, and non-destructive behavior, so the safety profile is covered. The description adds that calls route through the Decodo Web Scraping API with a named target and return parsed JSON, but says nothing about failure modes, rate limits, pagination, or default value for limit.

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?

Two sentences, front-loaded with the operation and payload, followed by a docs link that does not crowd out the essential text. No filler, though the docs URL is somewhat take-it-or-leave-it.

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?

With only two parameters, annotations covering the safety profile, and no output schema, the description supplies what an agent needs: the input identity form, the source API, and the JSON return shape. It lacks detail on the video object fields and whether limit has a default.

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

Parameters3/5

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

Schema description coverage is 100%, so both 'query' (handle/ID) and 'limit' are documented by the schema itself. The description's 'by handle or ID' merely restates the schema and adds no syntax or constraint detail beyond it, which is the expected baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Fetch the videos of a YouTube channel by handle or ID') and clarifies the return ('parsed as JSON'). The channel-scoped resource distinguishes it from youtube_search and youtube_metadata implicitly, but no sibling is named explicitly.

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

Usage Guidelines4/5

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

'Use it to list what a channel has published' gives a clear positive usage context that no sibling covers as cleanly. There are no exclusions or explicit pointers to alternatives such as youtube_metadata for single-video lookups.

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

youtube_metadataYouTube MetadataA
Read-only

Fetch a YouTube video's metadata by video ID through the Decodo Web Scraping API (youtube_metadata target) and return it as JSON, such as title, channel, views and description. Use it when you know the video ID and need details about the video. Docs: https://help.decodo.com/docs/web-scraping-youtube-metadata

NameRequiredDescriptionDefault
queryYesYouTube video ID (e.g., "dFu9aKJoqGg")

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds real context beyond that: it discloses the Decodo Web Scraping API backend, the `youtube_metadata` target, JSON return format with example fields, and a docs link. It could still say more about failure behavior for invalid/private IDs.

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?

Two sentences plus a docs URL, front-loaded with the verb and resource, with the usage cue second. The parenthetical target name is slightly redundant with the tool name but does name the API parameter.

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?

With no output schema, the description compensates by naming example fields (title, channel, views, description) and the JSON format. An agent has enough to select and call it; only edge-case behavior for private/blocked videos is unstated.

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

Parameters3/5

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

Schema description coverage is 100% and the single `query` param is documented with an example ID in the schema. The description only reinforces that the input is a video ID ('by video ID'), adding no format or validation detail beyond the schema. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Fetch a YouTube video's metadata by video ID') and names the backend target, so the agent knows exactly what it returns. The 'by video ID' scoping implicitly separates it from youtube_channel and youtube_search, but no sibling is named explicitly.

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

Usage Guidelines4/5

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

'Use it when you know the video ID and need details about the video' gives a clear positive trigger. It does not state exclusions or point to youtube_subtitles/youtube_channel for the cases this tool does not cover, so alternatives remain inferential.

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

youtube_subtitlesYouTube SubtitlesA
Read-only

Fetch the subtitles of a YouTube video by video ID through the Decodo Web Scraping API (youtube_subtitles target) and return them as JSON. Use it to read or summarise what is said in a video; set language_code for a specific language. Docs: https://help.decodo.com/docs/web-scraping-api-youtube-subtitles

NameRequiredDescriptionDefault
queryYesYouTube video ID (e.g., "L8zSWbQN-v8")
language_codeNoLanguage code for subtitles (e.g., "en", "es")

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds useful context — the third-party API dependency, JSON output, and a docs URL — but says nothing about missing/auto-generated captions, default language behavior when language_code is omitted, failure modes, or rate limits.

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

Conciseness4/5

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

Two tight sentences plus a docs link; the action and resource are front-loaded with no redundant restatement of the title. The docs URL is mildly extraneous but defensible as a pointer to deeper detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description should say more about the returned JSON structure (segments vs plain text, timestamps) and about the default-language behavior. It is adequate to invoke the tool but leaves meaningful gaps for interpreting results.

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

Parameters3/5

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

Schema description coverage is 100%, so both parameters are already documented with examples, giving a baseline of 3. The description only reinforces language_code as the language selector and does not clarify what happens by default when it is omitted.

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?

States a specific verb and resource ('Fetch the subtitles of a YouTube video by video ID') plus the transport ('through the Decodo Web Scraping API') and the return shape (JSON). An agent can distinguish this from youtube_metadata or youtube_channel without opening any schema.

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

Usage Guidelines4/5

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

Gives a clear use context ('read or summarise what is said in a video') and a parameter-level hint for language selection. It does not name alternatives or state when not to use it (e.g., when a video has no captions, or when metadata is what you actually need), so it stops short of explicit routing.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 21 tool updatesv1.6.0
    • Changedamazon_bestsellers1 field changed
      • removedInput schema / properties / deviceType
        Removed value: -{
        -  "description": "Device type to emulate for the request",
        -  "enum": [
        -    "desktop",
        -    "mobile",
        -    "tablet"
        -  ],
        -  "type": "string"
        -}
    • Changedamazon_pricing1 field changed
      • removedInput schema / properties / deviceType
        Removed value: -{
        -  "description": "Device type to emulate for the request",
        -  "enum": [
        -    "desktop",
        -    "mobile",
        -    "tablet"
        -  ],
        -  "type": "string"
        -}
    • Changedamazon_product1 field changed
      • removedInput schema / properties / deviceType
        Removed value: -{
        -  "description": "Device type to emulate for the request",
        -  "enum": [
        -    "desktop",
        -    "mobile",
        -    "tablet"
        -  ],
        -  "type": "string"
        -}
    • Changedamazon_search1 field changed
      • removedInput schema / properties / deviceType
        Removed value: -{
        -  "description": "Device type to emulate for the request",
        -  "enum": [
        -    "desktop",
        -    "mobile",
        -    "tablet"
        -  ],
        -  "type": "string"
        -}
    • Changedamazon_sellers1 field changed
      • removedInput schema / properties / deviceType
        Removed value: -{
        -  "description": "Device type to emulate for the request",
        -  "enum": [
        -    "desktop",
        -    "mobile",
        -    "tablet"
        -  ],
        -  "type": "string"
        -}
    • Changedbing_search1 field changed
      • changedInput schema / properties / deviceType / enum
        Previous value: -[
        -  "desktop",
        -  "mobile",
        -  "tablet"
        -]New value: +[
        +  "desktop",
        +  "mobile"
        +]
    • Addedcrawl_cancel
    • Addedcrawl_results
    • Addedcrawl_start
    • Addedcrawl_status
    • Changedgoogle_ai_mode1 field changed
      • changedInput schema / properties / deviceType / enum
        Previous value: -[
        -  "desktop",
        -  "mobile",
        -  "tablet"
        -]New value: +[
        +  "desktop",
        +  "mobile"
        +]
    • Addedmap
    • Removedreddit_post
    • Removedreddit_subreddit
    • Removedreddit_user
    • Changedscrape_as_markdown1 field changed
      • changedInput schema / properties / tokenLimit / description
        Previous value: -"The number of tokens to return in the response - anything above this limit will be truncated"New value: +"Maximum number of characters to return; longer content is truncated. Defaults to 45000."
    • Addedsearch
    • Changedtarget_product1 field changed
      • removedInput schema / properties / storeId
        Removed value: -{
        -  "description": "Target store ID for local inventory",
        -  "type": "string"
        -}
    • Changedtarget_search1 field changed
      • removedInput schema / properties / storeId
        Removed value: -{
        -  "description": "Target store ID for local inventory",
        -  "type": "string"
        -}
    • Changedtiktok_shop_search1 field changed
      • removedInput schema / properties / geo
        Removed value: -{
        -  "description": "Geolocation of the desired request, expressed as a country name",
        -  "type": "string"
        -}
    • Changedwalmart_search1 field changed
      • removedInput schema / properties / deviceType
        Removed value: -{
        -  "description": "Device type to emulate for the request",
        -  "enum": [
        -    "desktop",
        -    "mobile",
        -    "tablet"
        -  ],
        -  "type": "string"
        -}
  2. 30 tool updates
    • First observedamazon_bestsellers
    • First observedamazon_pricing
    • First observedamazon_product
    • First observedamazon_search
    • First observedamazon_sellers
    • First observedbing_search
    • First observedchatgpt
    • First observedgoogle_ads
    • First observedgoogle_ai_mode
    • First observedgoogle_lens
    • First observedgoogle_search
    • First observedgoogle_travel_hotels
    • First observedperplexity
    • First observedreddit_post
    • First observedreddit_subreddit
    • First observedreddit_user
    • First observedscrape_as_markdown
    • First observedscreenshot
    • First observedtarget_product
    • First observedtarget_search
    • First observedtiktok_post
    • First observedtiktok_shop_product
    • First observedtiktok_shop_search
    • First observedtiktok_shop_url
    • First observedwalmart_product
    • First observedwalmart_search
    • First observedyoutube_channel
    • First observedyoutube_metadata
    • First observedyoutube_search
    • First observedyoutube_subtitles

TDQS

A3.6/5.0

Scored across 33 tools

Disambiguation3/5

Most tools can be separated by provider or target, but several overlapping families exist: generic `search` vs `google_search`/`bing_search`, `scrape_as_markdown` vs site-specific page fetchers, and AI-answer tools like `chatgpt`, `perplexity`, and `google_ai_mode`. The descriptions help, but an agent still has to choose carefully among similar capabilities.

Naming Consistency4/5

All tool names use lower_snake_case with no camelCase or style mixing. The pattern varies between action-only names (`search`, `map`, `screenshot`), provider_action names (`amazon_search`), and provider/resource names (`chatgpt`, `youtube_metadata`), but it remains readable and largely predictable.

Tool Count2/5

With 33 tools, the surface is heavy for an agent and exceeds the typical well-scoped range. Many provider-specific wrappers are justified by the scraping API's breadth, but the count still risks overwhelming tool selection and duplicates patterns across sites.

Completeness4/5

The set covers generic scraping, screenshots, sitemap mapping, crawl lifecycle, web search, major commerce providers, social/video providers, and AI answer targets. Some common sites and a generic structured-data extraction path are absent, but the overall domain coverage is broad and usable.

Maintenance

ActivityActive
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    Anthropic's github MCP server, but better. Support for more endpoints. Including releases and tags, pull request reviews, statuses, rate limit, gists, projects, packages, and even pull request diffs. Indented to be used with MissionSquad's MCP API for secret management (aka your access token).
    45
    312 npm
    10
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables web scraping and document processing with JavaScript execution, anti-detection measures, batch processing, and structured data extraction. Supports multiple formats including markdown, HTML, screenshots, and handles PDFs with OCR capabilities.
    4
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables AI agents to scrape any website by providing tools for JavaScript rendering, antibot bypass, and automatic captcha solving. It supports synchronous, asynchronous, and batch scraping operations with built-in proxy rotation.
    5
    207 npm
    30 PyPI
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Enables web scraping, structured data extraction, and screenshot capture with automatic anti-bot bypass, supporting JavaScript rendering, proxy rotation, and tiered pricing.
    26
    178 npm
    2
    MIT