Bright Data MCP
Official🌟 概述
Web MCP 是您赋予 AI 助手真正网络能力的门户。不再有过时的回答,不再有“我无法访问实时信息”的限制 —— 只有无缝、可靠且真正有效的网络访问。
由全球第一大网络数据平台 Bright Data 构建,此 MCP 服务器确保您的 AI 永远不会被拦截、限流或遇到验证码。
Related MCP server: MCP Fetch
🎯 适用场景
🔍 实时研究 - 获取当前价格、新闻和实时数据
🛍️ 电子商务情报 - 监控产品、价格和库存情况
📊 市场分析 - 跟踪竞争对手和行业趋势
🤖 AI 代理 - 构建能够真正浏览网络的代理
💻 编程代理 - 实时查找 npm/PyPI 包、版本和 README
🧠 GEO 与品牌可见性 - 查看 ChatGPT、Grok 和 Perplexity 如何感知您的品牌
📝 内容创作 - 获取最新信息以进行写作
🎓 学术研究 - 高效地从多个来源收集数据
⚡ 快速入门
使用配置向导:
非常适合无需设置的用户。只需将此 URL 添加到您的 MCP 客户端:
https://mcp.brightdata.com/mcp?token=YOUR_API_TOKEN_HERE在 Claude Desktop 中设置:
前往:设置 → 连接器 → 添加自定义连接器
名称:
Bright Data WebURL:
https://mcp.brightdata.com/mcp?token=YOUR_API_TOKEN点击“添加”即可!✨
{
"mcpServers": {
"Bright Data": {
"command": "npx",
"args": ["@brightdata/mcp"],
"env": {
"API_TOKEN": "<your-api-token-here>"
}
}
}
}🚀 定价与模式
💡 注意: 专业模式不包含在免费层级中,并根据使用情况产生额外费用。
🧠 高级工具选择
GROUPS允许您启用精选的工具包。使用逗号分隔的组 ID,例如ecommerce,browser。TOOLS在所选组的基础上添加显式的工具名称。模式优先级:
PRO_MODE=true(所有工具) →GROUPS/TOOLS(白名单) → 默认快速模式 (基础工具包)。始终启用的基础工具:
search_engine,search_engine_batch,scrape_as_markdown,scrape_batch,discover。组 ID
custom已保留;请使用TOOLS进行定制选择。
Claude Desktop 示例
{
"mcpServers": {
"Bright Data": {
"command": "npx",
"args": ["@brightdata/mcp"],
"env": {
"API_TOKEN": "<your-api-token-here>",
"GROUPS": "browser,advanced_scraping",
"TOOLS": "extract"
}
}
}
}编程代理示例 (Claude Code / Cursor / Windsurf)
为您的编程代理提供实时包情报 —— 无需抓取即可从 npm 和 PyPI 获取最新版本、README、依赖项和元数据:
{
"mcpServers": {
"Bright Data": {
"command": "npx",
"args": ["@brightdata/mcp"],
"env": {
"API_TOKEN": "<your-api-token-here>",
"GROUPS": "code"
}
}
}
}✨ 功能特性
🔥 核心能力
🎯 简单有效的查询示例
✅ "What's Tesla's current stock price?"
✅ "Find the best-rated restaurants in Tokyo right now"
✅ "Get today's weather forecast for New York"
✅ "What movies are releasing this week?"
✅ "What are the trending topics on Twitter today?"
✅ "What's the latest version of express on npm?"
✅ "Get the README for the langchain-brightdata PyPI package"🎬 演示
注意: 这些视频展示的是早期版本。新演示即将推出!🎥
基础网络搜索演示
https://github.com/user-attachments/assets/59f6ebba-801a-49ab-8278-1b2120912e33
高级抓取演示
https://github.com/user-attachments/assets/61ab0bee-fdfa-4d50-b0de-5fab96b4b91d
🔧 可用工具
⚡ 快速模式工具 (默认 - 免费)
工具 | 描述 | 使用场景 |
🔍 | 具有 AI 优化结果的网络搜索 | 研究、事实核查、时事 |
📄 | 将任何网页转换为纯净的 Markdown | 内容提取、文档 |
🎯 | 具有基于意图的相关性评分的 AI 排序网络搜索 | 深度研究、RAG 流水线、竞争分析 |
💎 专业模式工具 (60+ 种工具)
分类 | 工具 | 描述 |
浏览器控制 |
| 全面浏览器自动化 |
网络数据 API |
| 结构化数据提取 |
电子商务 | 产品抓取器 | Amazon, eBay, Walmart 数据 |
社交媒体 | 社交抓取器 | Twitter, LinkedIn, Instagram |
地图与本地 | 位置工具 | Google Maps, 商业数据 |
🎮 立即尝试!
🧪 在线演练场
无需任何设置即可尝试 Web MCP:
Available Tools
32 toolsask_brightdata_assistantARead-only
Ask Bright Data's support assistant (Sophie) a question about Bright Data products, APIs, MCP usage, zones, scraping, or account setup. Use when the user asks "how do I..." about Bright Data, when you hit a Bright Data error you don't recognize, or when deciding between products (Web Unlocker vs. Scraping Browser vs. dataset tools). Supports threaded follow-ups via dialog_id.
| Name | Required | Description | Default |
|---|---|---|---|
| question | Yes | The question to ask. Max 20480 chars. | |
| dialog_id | No | Optional 24-char dialog_id from a previous call to continue the same thread. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so safety is covered. The description adds useful behavioral context beyond that—the assistant is named Sophie and supports threaded follow-ups through dialog_id—but does not mention latency, reliability, or whether answers are authoritative, which would round out the picture.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, both front-loaded with the core purpose first and the usage triggers second. Every clause carries information—topic scope, trigger conditions, sibling disambiguation, and threading support—with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter, read-only tool with full schema coverage, no output schema, and annotations covering the safety profile, the description supplies everything needed: purpose, when to call, topic boundaries, and how to continue a conversation. Return-value explanation is unnecessary given the absence of an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema coverage the baseline is 3, and the schema already documents both parameters including the 24-char constraint on dialog_id. The description adds meaningful semantics by explaining that dialog_id enables threaded follow-ups, clarifying its purpose beyond the schema's mechanical description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Ask Bright Data's support assistant (Sophie) a question') and names the topical scope: products, APIs, MCP usage, zones, scraping, account setup. It is clearly distinguishable from every sibling, which are scraping/execution tools rather than a knowledge assistant.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit triggering conditions: user asks 'how do I...', an unrecognized Bright Data error occurs, or the agent must choose between products. It even names the specific alternatives being disambiguated (Web Unlocker vs. Scraping Browser vs. dataset tools), leaving little inference required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chatgpt_ai_insightsB
Send a prompt to ChatGPT and get back AI-generated insights. Returns structured answer text, citations, recommendations, and markdown. Useful for GEO and LLM as a judge.
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already disclose openWorldHint=true, destructiveHint=false, and readOnlyHint=false, so the safety profile is partially covered. The description adds useful return information: structured answer text, citations, recommendations, and markdown. It does not explain data handling, rate limits, or why readOnlyHint is false for this external prompt call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences and front-loads the core action. The second sentence efficiently lists the return components, and there is no redundant filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool, the description explains what it does and what it returns, which is adequate. However, it leaves important gaps around sibling differentiation from perplexity_ai_insights and prompt formatting, and it does not clarify data handling for an open-world ChatGPT call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is one required parameter named 'prompt,' but schema description coverage is 0%. The description repeats the word 'prompt' without adding format, length, content expectations, or examples, so it does not compensate for the schema's lack of semantic detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action and resource: send a prompt to ChatGPT and receive AI-generated insights. It also lists return components, making the tool's function clear. However, it does not distinguish itself from the sibling tool perplexity_ai_insights, which appears to serve a similar purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers an implied use case with 'Useful for GEO and LLM as a judge,' but it does not explain when to use this tool instead of perplexity_ai_insights or ask_brightdata_assistant. It gives context but no explicit exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
extractARead-only
Scrape a webpage and extract structured data as JSON. First scrapes the page as markdown, then uses AI sampling to convert it to structured JSON format.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| extraction_prompt | No | Custom prompt to guide the extraction process. If not provided, will extract general structured data from the page. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=true, openWorld=true, destructive=false, so the safety profile is covered. The description adds real value by disclosing the two-stage pipeline (fetch markdown → AI sampling → JSON), but says nothing about latency, cost, failure modes on non-HTML pages, or whether results are deterministic.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the outcome, then the mechanism. Every clause carries information an agent cannot get from the schema or annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description should indicate what the returned JSON looks like or that its shape depends on extraction_prompt and page content. The mechanism is explained, but the result contract an agent needs in order to plan a follow-up step is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: extraction_prompt is documented in the schema, while url has no schema description. The description adds nothing about either parameter beyond implying 'a webpage' for url, so it neither reaches nor falls far short of the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Scrape a webpage and extract structured data as JSON') and implicitly distinguishes itself from scrape_as_markdown by declaring that markdown is only an intermediate step, not the deliverable. The goal (structured JSON) is unambiguous, though it never names the alternative tools directly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent must infer it should pick this over scrape_as_markdown when structured fields are wanted and over search_engine when a URL is already known. There is no explicit when-to-use, when-not, or named alternative despite many closely related siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_scraper_detailsARead-only
Show the scraper description, input fields, example input and main output fields for one method. Call before run_scraper and build the input from sample_input or input_fields. Records may contain more fields than output_fields lists.
| Name | Required | Description | Default |
|---|---|---|---|
| method | Yes | One of the scraper collection_methods, exactly as listed (some names are misspelled on purpose) | |
| dataset_id | Yes | dataset_id from search_scrapers |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly/non-destructive/closed-world, so the safety profile is covered. The description adds a genuinely useful caveat that returned records may contain more fields than output_fields lists, warning the agent not to treat output_fields as exhaustive. It stops short of noting pagination or size limits, but that is minor here.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences: the first states what is returned, the second states when to call and how to use the output. No filler, and the key usage instruction is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, but the description compensates by enumerating the returned components (description, input fields, sample input, output fields) plus the caveat about additional record fields. An agent has everything needed to call it and consume the result correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters are documented there, including the dataset_id provenance and the 'misspelled on purpose' method warning. The description adds nothing about 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.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb (show) and resource (details for one scraper method) and enumerates exactly what is returned: description, input fields, example input, and main output fields. It is clearly distinguishable from siblings like search_scrapers (discovery) and run_scraper (execution).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit sequencing guidance ("Call before run_scraper") and tells the agent how to use the result ("build the input from sample_input or input_fields"). That is a concrete when-to-use plus the alternative it feeds into, leaving little to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_scraper_progressBRead-only
Status of a run: starting, running, ready, failed or canceled.
| Name | Required | Description | Default |
|---|---|---|---|
| snapshot_id | Yes | snapshot_id from run_scraper |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this a safe read (readOnlyHint=true, destructiveHint=false, openWorldHint=false), so the behavioral bar is lower. The description's real contribution is enumerating the five status values, which is useful, but it doesn't say which are terminal, whether it is pollable, or what to do next when status becomes 'ready' or 'failed'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short, front-loaded fragment with no filler. It is efficient, though the sentence fragment lacks a subject, and its terseness is part of why usage guidance is missing rather than a model of structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read tool with annotations and no output schema, the description covers what the tool returns at a high level but omits the workflow context (post-run polling, transition to results retrieval) that an agent needs to place this tool correctly among its 30 siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already explains that snapshot_id comes from run_scraper. The description adds no meaning beyond that, so the baseline 3 for a fully documented single parameter applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the resource (a run) and its return concept (status) and enumerates the possible values, so an agent can tell it reports progress rather than results. It never names its siblings (get_scraper_details, get_scraper_results, run_scraper) or says explicitly that the 'run' is a scraper run, so differentiation is left to the tool name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance at all: no indication that this is the polling companion to run_scraper, no guidance on repeated polling, and no pointer to get_scraper_results once the status is 'ready'. The agent must infer the entire workflow from the schema note 'snapshot_id from run_scraper'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_scraper_resultsCRead-only
Records of a finished run. Returns status "running" if not ready yet.
| Name | Required | Description | Default |
|---|---|---|---|
| snapshot_id | Yes | snapshot_id from run_scraper |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnlyHint=true, destructiveHint=false, openWorldHint=false), so the description's job is to add operational context. It does add one genuinely useful trait: the call is non-blocking and returns status "running" when results are not ready, which tells the agent to poll. It does not say what happens to results after completion (retention, idempotency, size limits).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, no filler, and the readiness/polling caveat is placed where it will be read. The first sentence is under-specified rather than padded, so length is not the problem.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description should give some sense of the return shape (records/data plus a status field), and it only hints that a status field exists. For a single-parameter read tool with clean annotations this is adequate but leaves the agent guessing about payload structure and about the progress-vs-results split.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter, and the schema itself documents it fully ("snapshot_id from run_scraper"), so coverage is 100% and the description need not restate it. The description adds nothing about the ID's origin or validity, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Records of a finished run" conveys that this retrieves output from a completed scraper run, but it omits the verb and the resource name (scraper results), relying on the tool name to fill that in. It does not distinguish itself from get_scraper_progress or run_scraper, which is the main ambiguity an agent would face.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only usage hint is implicit: the 'running' status comment implies this is a polling call. There is no statement of when to call this instead of get_scraper_progress (progress vs. final payload), nor prerequisites such as whether run_scraper must have completed first.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_dataset_fieldsARead-only
List the filterable fields of a searchable dataset (field name, type, and description). Call this before search_dataset to learn which field names and types you can filter on. Supported dataset_id values:
gd_l1viktl72bvl7bjuj0: LinkedIn people profiles
gd_me5ppxjr2ge6icjuh0: LinkedIn people profiles (contact-enriched)
gd_l1vikfnt1wgvvqz95w: LinkedIn company information
| Name | Required | Description | Default |
|---|---|---|---|
| dataset_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already establish that the tool is read-only, non-destructive, and closed-world, so the description need not restate safety. The description adds useful behavioral context by specifying the returned field metadata (name, type, description) and the prerequisite relationship to search_dataset. It does not discuss pagination or failure behavior, but these are minor for a small enumeration tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core action and prerequisite, then presents supported dataset IDs in a compact bullet list. Every sentence and bullet earns its place without unnecessary repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with no output schema, the description provides everything needed: purpose, sequencing, return content, and the full set of valid dataset_id values. No relevant invocation detail is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although schema description coverage is 0%, the description fully documents the single dataset_id parameter by listing every allowed enum value with a human-readable meaning. This goes beyond the raw enum and tells the agent exactly what each ID represents.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'List the filterable fields of a searchable dataset.' It also names the sibling tool search_dataset and explains the distinct role of this tool, so an agent can distinguish it without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Call this before search_dataset to learn which field names and types you can filter on.' This gives a clear sequencing rule and names the alternative tool, leaving no ambiguity about when to invoke it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
perplexity_ai_insightsB
Send a prompt to Perplexity and get back AI-generated insights. Returns structured answer text in markdown format. Useful for GEO and LLM as a judge.
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare openWorldHint=true (external call), destructiveHint=false, and readOnlyHint=false. The description adds one useful behavioral fact beyond the annotations: the response is structured markdown answer text. It says nothing about latency, cost, quota behavior, or whether the call has side effects at the provider, which is relevant given readOnlyHint=false.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three short sentences and is front-loaded with the action and the return format. The final sentence is vague marketing jargon ('GEO'), but it is short enough not to seriously hurt usability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a simple one-parameter tool with no output schema, and the description does cover the return shape (markdown answer text). It leaves out the key discriminator against the sibling chatgpt_ai_insights, as well as any expectation about latency, cost, or prompt limits, so it is adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the single required 'prompt' parameter, so the description has to carry the meaning itself. The phrase 'Send a prompt' names the input but adds no format, length, or content guidance (e.g. whether the prompt is a single question or a system-style instruction). It is only minimally compensating for the undocumented schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: it sends a prompt to Perplexity and returns AI-generated answer text. The provider name implicit in the tool name, plus the mention of markdown answer output, makes the tool's purpose concrete. It does not explicitly distinguish itself from the sibling chatgpt_ai_insights, which is the one nearby tool that could easily 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives one hint about where to use the tool: 'Useful for GEO and LLM as a judge.' However, it never states when to choose the Perplexity variant over the sibling chatgpt_ai_insights, nor does it set exclusions or prerequisites (e.g. prompt length limits, rate limits, or credential requirements). By implication, the guidance is present but incomplete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
refresh_scrapersARead-only
Reload the scraper list now instead of waiting for the daily refresh.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered by structured data. The description adds genuinely new behavioral context — that the scraper list is cached and normally refreshed daily — but says nothing about what the call returns or whether it blocks until reload completes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with the action and the justification for it, front-loaded and free of filler. Nothing could be removed without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, annotation-backed tool this covers what an agent needs to decide to call it. The one unresolved question is the result of the call — whether it returns the refreshed list or just an acknowledgement — which the missing output schema leaves the description to answer, and it doesn't.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes no parameters, so there is nothing for the description to disambiguate; the baseline for a zero-parameter schema applies. No parameter text is needed or expected here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Reload the scraper list'), and the phrase 'instead of waiting for the daily refresh' pins down what kind of refresh this is, separating it from search_scrapers / get_scraper_details. It does not explicitly name a sibling, so an agent must infer the boundary rather than being routed to it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'now instead of waiting for the daily refresh' gives a concrete trigger condition: call this when you need a current scraper list before the scheduled daily refresh runs. No when-not guidance, no cost/latency caveat, and no named alternative for other cases, 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.
run_scraperA
Run a scraper method. input is a list of objects shaped like sample_input from get_scraper_details, one per URL or query. collect_by_url returns one record per input; discover_by_* methods return up to limit_per_input records per input, and every record is billed. Waits up to 45 seconds; if still running it returns snapshot_id with status "running": then poll get_scraper_progress and call get_scraper_results when ready. Records with an "error" field explain failed inputs.
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes | ||
| method | Yes | One of the scraper collection_methods, exactly as listed (some names are misspelled on purpose) | |
| dataset_id | Yes | dataset_id from search_scrapers | |
| limit_per_input | No | discover_by_* only |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations, the description discloses important behavior: every returned record is billed, the call waits up to 45 seconds, long jobs return a snapshot_id with status 'running', and failed inputs are indicated by an 'error' field. These details materially affect cost, latency, and error handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core action and then proceeds through input shape, method behavior, timeout handling, and error signaling. Every clause adds operational value with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description covers the async return path, record counts, billing, and error handling. It does not describe the full record structure, but it points to get_scraper_results for retrieval and get_scraper_progress for polling, which is sufficient for most invocation decisions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 75%, so the schema already documents method, dataset_id, and limit_per_input. The description adds useful semantics by explaining that input should match sample_input from get_scraper_details, one object per URL or query, and by clarifying how limit_per_input applies only to discover_by_* methods.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource ('Run a scraper method') and immediately clarifies the required input shape and method-specific output behavior. It distinguishes collect_by_url from discover_by_* methods and references the exact sibling tools used before and after this step.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explains how to prepare input via get_scraper_details and how collect_by_url differs from discover_by_* in output volume. It also gives clear next-step guidance for long-running jobs by naming get_scraper_progress and get_scraper_results, though it does not explicitly state when not to use this tool versus other scraping siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scrape_as_htmlARead-only
Scrape a single webpage URL and get back the results in HTML.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds only that the response is HTML; it says nothing about JS rendering, timeouts, paywalls/anti-bot behavior, or whether the HTML is raw or post-processed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence, front-loaded with the verb and ending on the differentiator (HTML output). There is no filler, though the brevity is partly under-specification rather than tightness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description should carry more of the return-value and failure-mode burden; 'results in HTML' is thin for a web-scraping call that may return error pages, blocked responses, or empty bodies. It is adequate for invoking the tool but not for anticipating what comes back.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single url parameter has 0% schema description coverage, so the schema offers only type/format. The description contributes a little semantic value ('single webpage URL', implying one URL and not a list), but adds nothing about redirects, query strings, or URL format expectations.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('scrape a single webpage URL') and the output form ('HTML'), which implicitly contrasts with the sibling scrape_as_markdown. It does not explicitly name that sibling or scraping_browser_get_html, so differentiation is left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The word 'single' hints this is for one URL rather than batch, but there is no explicit when-to-use guidance versus scrape_as_markdown, scrape_batch, or the scraping_browser_* family. The agent must infer selection from the output format alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scrape_as_markdownBRead-only
Scrape a single webpage URL and get back the results in MarkDown language.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes |
TDQS
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 and network profile is covered. The description adds the output serialization (Markdown), which is genuine value, but says nothing about dynamic-content rendering, timeouts, or failures on non-HTML URLs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with the action and the return format front-loaded. Nothing wasted, though it is arguably too terse for the gaps it leaves.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description does at least declare the return format as Markdown, which is the key missing piece. However, it omits anything about failure behavior or how it differs from the large family of scrape_as_html / scraping_browser_* siblings, which matters given the crowded namespace.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but there is only one required parameter whose type and URI format are enforced by the schema. The description only restates that it is a webpage URL and adds the constraint that it must be a single page; it does not clarify redirects, auth, or non-web schemes.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (scrape) and resource (a single webpage URL) plus the output format (Markdown). The word 'single' implicitly separates it from scrape_batch, and 'MarkDown' separates it from scrape_as_html, though neither 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: 'single webpage' hints that batch work belongs elsewhere and the Markdown output hints at scrape_as_html being the alternative, but the description never states when to choose this tool or what it cannot do.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scrape_batchBRead-only
Scrape multiple webpages URLs and get back the results in MarkDown language.
| Name | Required | Description | Default |
|---|---|---|---|
| urls | Yes | Array of URLs to scrape (max 5) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnly, non-destructive and open-world behavior, so the safety profile is covered. The description adds the output format (Markdown), which is genuinely useful context not found in the structured fields. However it says nothing about partial failures (what happens if one of five URLs fails), rate limits, or whether results come back in URL order — meaningful gaps for a batch network operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler, and the output format is stated up front. Minor awkwardness in 'webpages URLs' prevents a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of explaining the return value, and it only says 'results in MarkDown' — not whether that's an array aligned to input order, how per-URL errors are surfaced, or how large the responses might be. Adequate for a simple tool, but the batch-specific behavior an agent needs to plan around is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is only one parameter and the schema already documents it fully, including the max-5 constraint via maxItems and its own description. The description says nothing about the URLs array beyond implying multiplicity, so it adds no meaning over the schema; baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Scrape multiple webpages URLs') plus the return format ('MarkDown'), which lets an agent distinguish it from the single-page scrape_as_markdown and scrape_as_html siblings. It stops short of naming those siblings explicitly, so the differentiation is implicit rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The word 'multiple' implies this is the batch variant to use when more than one URL needs scraping, but no explicit when-to-use or when-not-to-use condition is given. Nothing tells the agent whether to prefer scrape_as_markdown in a loop, or whether scrape_batch is cheaper/faster.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scraping_browser_click_refADestructive
Click on an element using its ref from the ARIA snapshot. Use scraping_browser_snapshot first to get the correct ref values. This is more reliable than CSS selectors.
| Name | Required | Description | Default |
|---|---|---|---|
| ref | Yes | The ref attribute from the ARIA snapshot (e.g., "23") | |
| element | Yes | Description of the element being clicked for context |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=true and openWorldHint=true, so the mutation and side-effect profile is covered structurally. The description adds a useful reliability rationale ('more reliable than CSS selectors') and the ref provenance, but says nothing about what a click can trigger — navigation, form submission, or a page-state change — which matters a lot for a destructive, open-world action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the action, then the prerequisite, then the rationale — no filler and nothing repeated from the schema verbatim.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-parameter tool with no output schema and annotations that already cover safety, the description supplies the essential prerequisite and input source. The remaining gap is post-click behavior (does the page navigate, how to recover from a stale ref), which would make it fully self-sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both 'ref' and 'element' documented including an example ref value, so the baseline is 3. The description reinforces where the ref originates but adds no meaning for the 'element' context parameter and no format/syntax detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb+resource ('Click on an element') and the mechanism ('using its ref from the ARIA snapshot'), which clearly separates it from scraping_browser_type_ref, scraping_browser_fill_form, and the get_text/get_html readers. It does not explicitly say how it differs from the other ref-based actions (scroll_to_ref, wait_for_ref), so it stops just 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use scraping_browser_snapshot first to get the correct ref values' gives a concrete prerequisite and names the tool that produces the required input, which is exactly the sequencing an agent needs. It gives no when-not guidance (e.g. what to do if the ref is stale, or when to prefer scraping_browser_get_text over clicking), so no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scraping_browser_fill_formADestructive
Fill multiple form fields in one operation. Use scraping_browser_snapshot first to get the correct ref values. This is more efficient than filling fields one by one.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | Yes | Fields to fill in |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=true and openWorldHint=true, so the agent knows this mutates a live page. The description adds the snapshot prerequisite, which is useful context, but says nothing about side effects beyond the fields — whether the form is submitted, whether events fire, or what happens if one ref in the batch is stale. With annotations carrying the safety profile, a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the action and followed immediately by the prerequisite. No filler or restatement of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, fully schema-documented tool with no output schema, the description covers what an agent needs to invoke it: the batching behavior and where refs come from. It is slightly short on post-conditions — whether filling triggers submission or navigation — which matters given destructiveHint=true.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the nested fields array already documents name, type enum, ref and per-type value formatting (checkbox "true"/"false", combobox option text). The description adds only the provenance of ref values (from the snapshot), which is helpful but marginal beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb+resource ('Fill multiple form fields') and the batching scope ('in one operation'), which implicitly separates it from the single-field sibling scraping_browser_type_ref. It does not name that sibling directly, so the differentiation is inferred rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit prerequisite ('Use scraping_browser_snapshot first to get the correct ref values') and a clear preference rule ('more efficient than filling fields one by one'). No exclusion conditions are stated, such as when a single-field type call would still be needed (e.g. needing to observe intermediate state).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scraping_browser_get_htmlBRead-only
Get the HTML content of the current page. Avoid using this tool and if used, use full_page option unless it is important to see things like script tags since this can be large
| Name | Required | Description | Default |
|---|---|---|---|
| full_page | No | Whether to get the full page HTML including head and script tags Avoid this if you only need the extra HTML, since it can be quite large |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so safety is covered. The description adds a useful trait not in the annotations: the output can be very large, and script/head content is the expensive part. It does not describe truncation, formatting, or what a non-full_page response looks like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is short, but the sentence is convoluted: the tool is simultaneously discouraged and recommended with full_page, and the clause order buries the actual caveat at the end. Front-loading 'returns full page HTML, can be large' would carry the same content more cleanly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With one optional parameter, no required params, and no output schema, the definition needs to cover size behavior and alternatives. It covers size, but leaves the agent without a clear path to the cheaper text-only sibling tools, which is the decisive missing piece for this tool family.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single full_page parameter is already fully documented in the schema, so the baseline is 3. The description reinforces the size caveat but adds no syntax or default-value information beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Get the HTML content of the current page.' An agent can tell it retrieves raw HTML from the active browser session rather than a fresh scrape. It does not, however, distinguish itself from sibling scraping_browser_get_text or scrape_as_html, which is the main ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Avoid using this tool and if used, use full_page option unless it is important to see things like script tags' gives a conditional, but it is self-contradictory in construction and never names the alternative an agent should reach for (scraping_browser_get_text, scrape_as_markdown). Usage direction is implied rather than routed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scraping_browser_get_textBRead-only
Get the text content of the current page
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and destructiveHint=false, so safety is covered. The description adds no behavioral context of its own: it doesn't say whether text is visible-only, whether hidden/script text is included, whether output is truncated, or that results reflect the current DOM state after scrolling/waiting.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with the key qualifier ('of the current page') placed where it matters. It is efficient but so terse that it borders on under-specification rather than genuine conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description is the only place an agent could learn what comes back — format, length limits, whether markup is stripped — and it says none of that. Combined with the missing session prerequisite, an agent has to guess at the operational contract.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate or clarify. Baseline 4 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get the text content') scoped to 'the current page', which implies the live browser session rather than an arbitrary URL. However it never mentions how it relates to close siblings like scraping_browser_get_html or scrape_as_markdown, so an agent can't tell which text-extraction tool to pick from the name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus scrape_as_markdown, scrape_as_html, or scraping_browser_get_html, and no stated prerequisites. The critical precondition — that a page must already be loaded in the browser session via scraping_browser_navigate — is left entirely implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scraping_browser_go_backBRead-only
Go back to the previous page
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds nothing beyond that: it does not say what happens at the start of history (no-op or error), whether the current page content is returned, or that the agent should re-snapshot after navigating.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. It is appropriately sized, though it is arguably thin rather than maximally efficient given the workflow context it omits.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters and no output schema, the burden is low, but the description omits session-state implications: it does not say the browser session must have history, nor how to inspect the resulting page (scraping_browser_snapshot). Those gaps matter for correct multi-step agent use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, which is the baseline-4 case; there is nothing for the description to disambiguate. The description correctly avoids inventing parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (go back) and the resource/scope (the previous page in browser history), so an agent can tell it apart from scraping_browser_go_forward and scraping_browser_navigate. It stops short of explicitly naming those siblings as the alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use, when-not-to-use, or prerequisite guidance. The description does not mention that a prior scraping_browser_navigate must have occurred, nor that scraping_browser_go_forward is the inverse action, leaving the agent to infer the workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scraping_browser_go_forwardBRead-only
Go forward to the next page
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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 nothing: it doesn't disclose that this acts on session history, nor what happens when there is no forward entry (likely a no-op or error).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence, front-loaded with the verb, zero filler. Its brevity is efficient, though it leans on completeness rather than conciseness for its gaps.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A trivial zero-param tool whose annotations already carry the safety profile, so the burden is light. Still missing is the key context: that this is history navigation tied to prior go_back/navigate calls and how it behaves when no forward page exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters, so there is nothing to document; baseline 4 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('go forward') and object ('next page'), which reads as browser history navigation and pairs naturally with the sibling scraping_browser_go_back. It does not explicitly say 'browser history', so 'next page' could be mistaken for pagination, but the sibling set disambiguates.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No statement of when to use this versus scraping_browser_navigate or scraping_browser_go_back, and no mention that it requires an existing browser session with forward history. The agent must infer all of that.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scraping_browser_network_requestsARead-only
Get all network requests made since loading the current page. Shows HTTP method, URL, status code and status text for each request. Useful for debugging API calls, tracking data fetching, and understanding page behavior.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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 value beyond that by disclosing the return payload shape (method, URL, status code, status text) and the temporal scope of the capture, though it says nothing about whether the list resets on navigation or has size limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences: what it returns, what fields, and why useful — in that order. Nothing is redundant beyond the necessary enumeration of returned fields, and the key scope constraint is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters, no output schema and an annotation set that already covers safety, the description carries exactly the burden it must: what is captured, in what timeframe, and in what shape. An agent can call this correctly and interpret the result from the description alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is no parameter semantics to document and the baseline is 4. The description correctly implies no arguments are needed by framing the call as 'get all requests'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Get all network requests made since loading the current page.' The scope qualifier (since page load) distinguishes it from sibling capture tools like scraping_browser_get_html and scraping_browser_snapshot, which return page content rather than traffic.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear usage contexts — debugging API calls, tracking data fetching, understanding page behavior — which tells the agent when this tool is the right pick over content-extraction siblings. It stops short of explicit exclusions (e.g., 'use get_html for markup'), so it lands at 4 rather than 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scraping_browser_screenshotARead-only
Take a screenshot of the current page. Set full_page to capture the whole scrollable page.
| Name | Required | Description | Default |
|---|---|---|---|
| full_page | No | Whether to screenshot the full page (default: false) You should avoid fullscreen if it's not important, since the images can be quite large |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered and the description needn't restate it. The description adds no behavioral context beyond that: it does not say what is returned (inline image, base64, URL), whether it reflects only the viewport, or whether a session/navigation prerequisite applies. Adequate but thin for a tool with no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, with the core action front-loaded and the optional parameter note trailing. Nothing could be removed without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-optional-param, no-output-schema tool, the description covers the action and the only parameter, and annotations carry the safety profile. The main residual gap is the return format (image payload vs. reference) and the implicit requirement of an active browser session, though neither is needed to select the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is only one optional parameter and schema description coverage is 100% – the schema already explains full_page, its false default, and even warns about large images. The description's 'capture the whole scrollable page' adds a slight semantic clarification (whole scrollable page vs. viewport) but largely repeats structured data, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Take a screenshot of the current page.' That is unambiguous and distinguishable from data-extraction siblings like scraping_browser_get_html or scrape_as_markdown. It stops short of explicitly contrasting with scraping_browser_snapshot, which is the nearest ambiguous neighbor.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by 'the current page' – it presumes an active browsing session but never says so, and never says when a screenshot is preferable to snapshot, get_html, or get_text. The one piece of guidance present ('Set full_page to capture the whole scrollable page') is about the parameter, not about tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scraping_browser_scrollBRead-only
Scroll to the bottom of the current page
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=true, so safety is covered, but the description adds nothing beyond the action itself. It doesn't say whether the scroll waits for lazy-loaded content, whether it pages in one jump or incrementally, or whether any state/result is returned. For a browser-automation tool, those are the traits 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short, front-loaded sentence with no filler. Its brevity is appropriate, though it edges toward under-specification rather than crispness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (no params, no output schema) and the annotations carry the risk profile, so the description is close to sufficient. Missing is any statement about post-scroll behavior or page state, which is the one thing an agent would need to chain it with snapshot/get_text calls.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters and the schema is a closed empty object, so there is nothing for the description to disambiguate. Baseline 4 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and target ("scroll to the bottom of the current page"), which lets an agent tell it apart from scraping_browser_scroll_to_ref by inference. It stops short of naming that sibling, so the differentiation is implicit rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description contains no when-to-use guidance, no prerequisites (e.g. a browser session/page must already be open), and never mentions the alternative scrolling sibling. The agent must infer that this is for reaching page-bottom content while scroll_to_ref targets a specific element.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scraping_browser_scroll_to_refARead-only
Scroll to a specific element using its ref from the ARIA snapshot. Use scraping_browser_snapshot first to get the correct ref values. This is more reliable than CSS selectors.
| Name | Required | Description | Default |
|---|---|---|---|
| ref | Yes | The ref attribute from the ARIA snapshot (e.g., "23") | |
| element | Yes | Description of the element to scroll to |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already establish that this is a safe, read-only, open-world operation. The description adds useful context about the prerequisite snapshot step and the reliability of refs over CSS selectors, but it does not describe edge cases such as invalid refs or what happens if the element is not found.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences with no waste: purpose first, prerequisite second, rationale third. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter scroll action with full schema coverage and annotations covering safety, the description is largely complete. It covers the key prerequisite and rationale, though failure behavior is not mentioned.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented. The description reinforces that `ref` comes from the ARIA snapshot, but adds no syntax or constraint details beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: scrolling to a specific element using a ref from the ARIA snapshot. It is clearly different from generic scrolling, though it does not explicitly name the sibling `scraping_browser_scroll` as the page-level alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear prerequisite: use `scraping_browser_snapshot` first to obtain valid refs. It also explains why this approach is preferred over CSS selectors, but it does not state exclusions or when to choose generic `scraping_browser_scroll` instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scraping_browser_snapshotARead-only
Capture an ARIA snapshot of the current page showing all interactive elements with their refs. This provides accurate element references that can be used with ref-based tools. Use this before interacting with elements to get proper refs instead of guessing selectors. A filtered snapshot does not include page text; If necessary, call scraping_browser_get_text to read it.
| Name | Required | Description | Default |
|---|---|---|---|
| filtered | No | List only buttons, links and fields (default: false). Saves tokens. Use true for sensitive actions (payments, account changes) so page text cannot pose as an element. |
TDQS
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: that the snapshot yields refs for ref-based tools, and that filtered mode strips page text (with a security rationale in the schema). It stops short of describing size or stability of the snapshot, which keeps it at 4 rather than 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, front-loaded with what the tool produces, then when to use it, then the fallback for text. No filler or restatement of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description adequately characterizes the return value (ARIA tree of interactive elements plus refs) and its main limitation in filtered mode. Minor gaps such as snapshot size limits or behavior on pages that are still loading are not addressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one optional parameter and schema coverage is 100%; the schema itself explains default false, token savings, and the sensitive-action rationale. The description adds one consequence ('A filtered snapshot does not include page text'), but otherwise defers to the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Capture an ARIA snapshot of the current page') plus exactly what the output contains: interactive elements with refs. This clearly separates it from siblings like scraping_browser_screenshot, scraping_browser_get_html, and scraping_browser_get_text, which are named or implied as different outputs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit precondition and an exclusion: 'Use this before interacting with elements to get proper refs instead of guessing selectors', and routes the agent to scraping_browser_get_text when page text is needed because a filtered snapshot omits it. The decision path is fully stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scraping_browser_type_refADestructive
Type text into an element using its ref from the ARIA snapshot. Use scraping_browser_snapshot first to get the correct ref values. This is more reliable than CSS selectors.
| Name | Required | Description | Default |
|---|---|---|---|
| ref | Yes | The ref attribute from the ARIA snapshot (e.g., "23") | |
| text | Yes | Text to type | |
| submit | No | Whether to submit the form after typing (press Enter) | |
| element | Yes | Description of the element being typed into for context |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare this is not read-only, is open-world, and is destructive. The description adds useful context that ref values must come from a prior snapshot and that refs are more reliable than CSS selectors, but it does not describe side effects such as form submission or what destructive behavior may occur.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three short sentences and front-loads the core action. The final sentence about reliability over CSS selectors is useful rationale, though slightly less essential than the action and snapshot prerequisite.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a four-parameter browser-typing tool with full schema coverage and annotations covering safety, the description supplies the key operational prerequisite. It does not explain how this differs from fill_form or detail submit behavior, but the schema covers the parameter-level details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for all four parameters, so the schema already explains ref, text, submit, and element. The description only reinforces ref semantics via the ARIA snapshot prerequisite and does not add meaning beyond the schema for submit or element.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: typing text into an element using a ref from an ARIA snapshot. It is clear enough for an agent to understand the action, but it does not explicitly distinguish itself from the sibling tool scraping_browser_fill_form.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear prerequisite: use scraping_browser_snapshot first to get the correct ref values. It also implies ref-based typing is preferred over CSS selectors, though it does not name when to use this instead of scraping_browser_fill_form or other typing alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scraping_browser_wait_for_refARead-only
Wait for an element to be visible using its ref from the ARIA snapshot. Use scraping_browser_snapshot first to get the correct ref values. This is more reliable than CSS selectors.
| Name | Required | Description | Default |
|---|---|---|---|
| ref | Yes | The ref attribute from the ARIA snapshot (e.g., "23") | |
| element | Yes | Description of the element being waited for | |
| timeout | No | Maximum time to wait in milliseconds (default: 30000) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this as a non-destructive, read-only, open-world operation. The description adds useful context about waiting for visibility and the ARIA ref dependency, but it omits important behavior such as what happens on timeout or whether it returns a value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three short sentences, front-loaded with the core action and immediately followed by the key prerequisite. Every sentence contributes useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a browser wait tool, the description covers the critical workflow requirement of obtaining a ref from the snapshot and explains why ARIA refs are preferred. The main missing piece is failure behavior on timeout, which matters because there is no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the individual parameters are already documented. The description adds the meaningful dependency that ref comes from the ARIA snapshot, but it does not add extra detail about timeout semantics or element usage beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: wait for an element to be visible using a ref from the ARIA snapshot. It distinguishes itself from selector-based approaches by naming ARIA refs explicitly and pointing to the snapshot tool as the source of refs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear prerequisite guidance: call scraping_browser_snapshot first to obtain a valid ref. It also explains a preference over CSS selectors, though it does not explicitly say when not to use this tool or name alternative wait mechanisms.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_datasetARead-only
Search a Bright Data dataset by a filter and get matching records back directly (fast Elasticsearch-backed search; no snapshot). Use this to FIND MANY records by criteria, as opposed to run_scraper which collects fresh records by URL. First call list_dataset_fields to get valid field names. A filter is a tree: a group {operator:"and"|"or", filters:[...]} or a leaf {name, value, operator}. Max nesting depth 3. Leaf operators: =, !=, <, <=, >, >=, in, not_in, includes, not_includes, array_includes, not_array_includes, is_null, is_not_null. Supported dataset_id values:
gd_l1viktl72bvl7bjuj0: LinkedIn people profiles
gd_me5ppxjr2ge6icjuh0: LinkedIn people profiles (contact-enriched)
gd_l1vikfnt1wgvvqz95w: LinkedIn company information
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | Number of records to return (max 10, default 10) | |
| sort | No | Sorting: "default", "random", or a custom array like [{"timestamp":"asc"}]. Use "default" or custom sort to paginate with search_after. | |
| filter | Yes | Filter tree describing which records to match. Required, cannot be empty. | |
| dataset_id | Yes | ||
| search_after | No | Pagination cursor from a previous response's search_after value. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, non-destructive, closed-world), so the description only needs to add mechanism. It does: "fast Elasticsearch-backed search; no snapshot" tells the agent results are existing indexed data, not a fresh capture, which is the key behavioral distinction. It omits the hard 10-record cap and pagination flow beyond the schema's own text, so not fully complete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and the sibling contrast, then prerequisite, then filter grammar, then the dataset catalog — a logical build. Dense but each block earns its place; the bulleted dataset list is the one mild expansion, though it supplies information absent from the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description only says "get matching records back directly" without indicating the response shape or that search_after comes from a previous response (that detail lives in the schema). For a 5-parameter read tool with annotations carrying safety, however, what is present is enough to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 80%, so the baseline is 3, but the description substantially compensates: it explains the filter is a tree of group vs. leaf nodes, states max nesting depth 3 (which the deeply $ref'd schema never says plainly), enumerates all 14 leaf operators, and gives human-readable meanings for each of the three dataset_id enum values that the schema leaves unlabeled. That is real meaning beyond the structured fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("search a Bright Data dataset ... get matching records back directly") plus the retrieval mechanism (Elasticsearch-backed, no snapshot). It explicitly distinguishes itself from the sibling run_scraper, so an agent can route between the two without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives the positive case ("FIND MANY records by criteria"), the contrast case ("as opposed to run_scraper which collects fresh records by URL"), and a prerequisite step ("First call list_dataset_fields to get valid field names"). Nothing is left to inference about when to pick this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_engineARead-only
Scrape search results from Google, Bing or Yandex. Returns SERP results in JSON or Markdown (URL, title, description),Ideal forgathering current information, news, and detailed search results.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| cursor | No | Pagination cursor for next page | |
| engine | No | ||
| geo_location | No | 2-letter country code for geo-targeted results (e.g., "us", "uk") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint and destructiveHint=false, so safety is covered. The description adds the return content, but its claim of "JSON or Markdown" output is unactionable since no format parameter exists in the schema, and pagination via the cursor is never explained. Net: some added value with a mild misleading note.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the core capability front-loaded and no padding. A typo ("description),Ideal forgathering") slightly hurts polish but not comprehension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter, no-output-schema search tool, the description covers the source engines, the return payload fields, and the intended use case. The remaining gaps (pagination, format selection) are minor and largely resolvable from the schema's cursor field.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50% – only cursor and geo_location are documented in the schema. The description adds meaning to the engine enum by naming Google, Bing and Yandex, but says nothing about the required query or geo-targeting, so the undocumented half is only partially compensated.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Scrape search results from Google, Bing or Yandex") and names the output shape (SERP results with URL, title, description). It does not, however, differentiate itself from the sibling search_engine_batch, leaving the agent to infer when the single-query variant is preferred.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Ideal for gathering current information, news, and detailed search results" gives a use-case context, but there are no when-not conditions and no named alternative despite a sibling search_engine_batch existing. Usage is implied rather than prescribed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_engine_batchBRead-only
Run multiple search queries simultaneously. Returns JSON for Google, Markdown for Bing/Yandex.
| Name | Required | Description | Default |
|---|---|---|---|
| queries | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint and destructiveHint, so the safety profile is covered. The description adds genuinely non-obvious behavior — per-engine return formats (JSON for Google, Markdown for Bing/Yandex) — but says nothing about concurrency limits, per-query failure behavior, or whether one failing query aborts the batch.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the purpose front-loaded and the format caveat second; nothing is padded. It is efficient but very short relative to how much of the schema is left unexplained.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does carry some of the return-value burden by naming formats per engine, which is helpful. However, it omits output shape, cursor/pagination semantics, and batch error handling — significant gaps for a multi-query tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is effectively 0% beyond geo_location; the description explains none of the nested fields. The `cursor` parameter for pagination and the `engine` enum with its google default are undocumented, and the description does not mention the 1-5 query limit enforced by the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Run multiple search queries simultaneously") and conveys batch semantics that implicitly separate it from the single-query search_engine sibling. It never names the sibling or the batch limit, so differentiation is inferred rather than explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Multiple ... simultaneously" implies the tool is for batching several queries, which hints at when to choose it over search_engine, but no explicit when/when-not rule or alternative is stated. An agent must infer the routing decision.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_scrapersARead-only
Find a Bright Data pre-built scraper (Web Scraper API, 1,200+ sites) for a site or data type, e.g. "amazon reviews" or "linkedin.com". Returns dataset_id, name, domain and collection_methods. Next: call get_scraper_details with a dataset_id and one method.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, and the description adds real value by enumerating the returned fields (dataset_id, name, domain, collection_methods) in the absence of an output schema. It does not disclose result-count behavior, default result size, or empty-result handling, which leaves a minor gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences: purpose, return shape, next action. No filler, and the identifying information is front-loaded before the return/next-step details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-param read-only discovery tool with no output schema, the description covers purpose, return fields and the follow-up call, which is nearly everything an agent needs. The uncovered `limit`/pagination behavior is the only meaningful omission.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the burden. Its examples ('amazon reviews', 'linkedin.com') do clarify what the required `query` accepts, but the `limit` parameter (1-50, default 10) is never mentioned, leaving half the parameters undocumented anywhere.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Find') and resource ('Bright Data pre-built scraper / Web Scraper API, 1,200+ sites') and instantly grounds it with two concrete query examples. An agent can distinguish this discovery tool from siblings like get_scraper_details or run_scraper 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear usage context plus an explicit next step: 'call get_scraper_details with a dataset_id and one method.' It does not name exclusions or close alternatives (e.g., when to prefer search_dataset or ask_brightdata_assistant instead), so it stops just short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_statsCRead-only
Tell the user about the tool usage during this session
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=false and destructiveHint=false, so safety is covered. The description adds only that the scope is 'this session' and that output is user-facing prose; it says nothing about what data is included or whether it reflects only this MCP server's calls. With annotations carrying the safety profile, this is thin added value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no padding, and the scope qualifier lands immediately. It is efficient but under-specified rather than over-long, so it loses a point only for lack of substance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of explaining what the agent gets back, and it does not: no mention of which metrics (call counts, per-tool breakdown, timing) or of the response shape. For a zero-param read tool this is low-stakes, but it is still incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes no parameters (schema is an empty object with additionalProperties false), so there is nothing for the description to disambiguate. Baseline 4 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies a resource — tool usage during this session — and the verb is an instruction to report it to the user. It is distinct from every sibling (all scraping/browser tools), but 'tool usage' is vague about what is actually returned (counts, durations, per-tool breakdown).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No statement of when to call this versus anything else, no triggers, no exclusions. The only implied usage is 'when the user asks about session activity', which the agent must infer from the phrase 'during this session'.
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 tool update
v4.1.0- Changed
search_dataset1 field changed- changed
Input schema / properties / filter / anyOfPrevious value: -[ - { - "additionalProperties": false, - "properties": { - "filters": { - "items": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "filters": { - "items": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "filters": { - "items": { - "additionalProperties": false, - "properties": { - "name": { - "description": "Field name to filter on. Get valid field names from the list_dataset_fields tool.", - "type": "string" - }, - "operator": { - "description": "Filter operator, one of: =, !=, <, <=, >, >=, in, not_in, includes, not_includes, array_includes, not_array_includes, is_null, is_not_null", - "type": "string" - }, - "value": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "number" - }, - { - "type": "boolean" - }, - { - "items": { - "type": [ - "string", - "number", - "boolean" - ] - }, - "type": "array" - } - ] - } - }, - "required": [ - "name", - "operator", - "value" - ], - "type": "object" - }, - "minItems": 1, - "type": "array" - }, - "operator": { - "enum": [ - "and", - "or" - ], - "type": "string" - } - }, - "required": [ - "operator", - "filters" - ], - "type": "object" - }, - { - "$ref": "#/properties/filter/anyOf/0/properties/filters/items/anyOf/0/properties/filters/items/anyOf/0/properties/filters/items" - } - ] - }, - "minItems": 1, - "type": "array" - }, - "operator": { - "enum": [ - "and", - "or" - ], - "type": "string" - } - }, - "required": [ - "operator", - "filters" - ], - "type": "object" - }, - { - "$ref": "#/properties/filter/anyOf/0/properties/filters/items/anyOf/0/properties/filters/items/anyOf/0/properties/filters/items" - } - ] - }, - "minItems": 1, - "type": "array" - }, - "operator": { - "enum": [ - "and", - "or" - ], - "type": "string" - } - }, - "required": [ - "operator", - "filters" - ], - "type": "object" - }, - { - "$ref": "#/properties/filter/anyOf/0/properties/filters/items/anyOf/0/properties/filters/items/anyOf/0/properties/filters/items" - } -]New value: +[ + { + "additionalProperties": false, + "properties": { + "filters": { + "items": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "filters": { + "items": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "filters": { + "items": { + "additionalProperties": false, + "properties": { + "name": { + "description": "Field name to filter on. Get valid field names from the list_dataset_fields tool.", + "type": "string" + }, + "operator": { + "description": "Filter operator, one of: =, !=, <, <=, >, >=, in, not_in, includes, not_includes, array_includes, not_array_includes, is_null, is_not_null", + "type": "string" + }, + "value": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "items": { + "type": [ + "string", + "number", + "boolean" + ] + }, + "type": "array" + } + ], + "description": "Value to compare against. Omit for is_null / is_not_null." + } + }, + "required": [ + "name", + "operator" + ], + "type": "object" + }, + "minItems": 1, + "type": "array" + }, + "operator": { + "enum": [ + "and", + "or" + ], + "type": "string" + } + }, + "required": [ + "operator", + "filters" + ], + "type": "object" + }, + { + "$ref": "#/properties/filter/anyOf/0/properties/filters/items/anyOf/0/properties/filters/items/anyOf/0/properties/filters/items" + } + ] + }, + "minItems": 1, + "type": "array" + }, + "operator": { + "enum": [ + "and", + "or" + ], + "type": "string" + } + }, + "required": [ + "operator", + "filters" + ], + "type": "object" + }, + { + "$ref": "#/properties/filter/anyOf/0/properties/filters/items/anyOf/0/properties/filters/items/anyOf/0/properties/filters/items" + } + ] + }, + "minItems": 1, + "type": "array" + }, + "operator": { + "enum": [ + "and", + "or" + ], + "type": "string" + } + }, + "required": [ + "operator", + "filters" + ], + "type": "object" + }, + { + "$ref": "#/properties/filter/anyOf/0/properties/filters/items/anyOf/0/properties/filters/items/anyOf/0/properties/filters/items" + } +]
3 tool updates
v4.0.0- Added
ask_brightdata_assistant - Removed
discover - Changed
scraping_browser_snapshot1 field changed- changed
Input schema / properties / filtered / descriptionPrevious value: -"Whether to apply filtering/compaction (default: false). Set to true to get a compacted version of the snapshot."New value: +"List only buttons, links and fields (default: false). Saves tokens. Use true for sensitive actions (payments, account changes) so page text cannot pose as an element."
27 tool updates
v3.1.0- Added
chatgpt_ai_insights - Added
extract - Added
get_scraper_details - Added
get_scraper_progress - Added
get_scraper_results - Added
list_dataset_fields - Added
perplexity_ai_insights - Added
refresh_scrapers - Added
run_scraper - Added
scrape_as_html - Added
scraping_browser_click_ref - Added
scraping_browser_fill_form - Added
scraping_browser_get_html - Added
scraping_browser_get_text - Added
scraping_browser_go_back - Added
scraping_browser_go_forward - Added
scraping_browser_navigate - Added
scraping_browser_network_requests - Added
scraping_browser_screenshot - Added
scraping_browser_scroll - Added
scraping_browser_scroll_to_ref - Added
scraping_browser_snapshot - Added
scraping_browser_type_ref - Added
scraping_browser_wait_for_ref - Added
search_dataset - Added
search_scrapers - Added
session_stats
5 tool updates
v2.9.3- Added
discover - Added
scrape_as_markdown - Added
scrape_batch - Added
search_engine - Added
search_engine_batch
TDQS
Scored across 32 tools
The set is organized into clearly separated families (simple scraping, Scraping Browser automation, dataset/scraper pipeline, SERP search, AI insights, support), and descriptions actively differentiate lookalikes such as search_dataset vs. run_scraper and ref-based browser actions vs. plain scraping. Minor overlap remains: scrape_as_markdown, scrape_as_html, extract and scraping_browser_get_text/get_html all return page content, and scraping_browser_scroll vs. scrolling to a ref could be momentarily confused.
Nearly everything is snake_case with an action-first verb, and the scraping_browser_* prefix gives the browser family a predictable namespace (navigate, go_back, click_ref, type_ref, etc.). A few outliers break the verb pattern — bare 'extract', noun-only 'session_stats', and the 'scrape_as_*' vs 'scraping_browser_*' stem difference — but the convention is still easy to follow.
32 tools is on the heavy side and just reading the list is a burden, largely because the Scraping Browser automation surface alone contributes 14 fine-grained actions. The breadth is defensible since the server fronts several distinct Bright Data products (Web Unlocker-style scraping, Scraping Browser, datasets/scrapers, SERP, AI insights), but it sits above the comfortable range.
Coverage is strong: single/batch page scraping, HTML/markdown extraction, full browser lifecycle (navigate, history, snapshot, click/type/fill/scroll/wait, screenshot, network log), and a discover → detail → run → progress → results scraper pipeline plus dataset field/search and support. Small gaps exist — no cancel/abort for a running scraper, no session close/reset for the browser, and no key-press/select helpers beyond fill_form — but these are workaroundable.
Maintenance
Related MCP Connectors
Hosted Web Crawler MCP server for Claude, ChatGPT and Cursor, with each action switched per account.
Official Browserless MCP server: browser automation, scraping, screenshots and PDFs for AI agents.
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
Remote streamable-HTTP MCP server running on a single Cloudflare Worker. Your assistant gets live Airbnb, Amazon, Booking.com, Google Flights, Maps and Reddit data, social search on X, Instagram and TikTok, the Meta Ad Library, and image/video generation without any keys. Connect your own accounts to let it send WhatsApp or Telegram messages, work an IMAP inbox, manage Meta Ads campaigns and publish to X and LinkedIn. OAuth 2.1 with PKCE; stored credentials are AES-256-GCM encrypted.
Related MCP Servers
- AlicenseBqualityFmaintenanceA Model Context Protocol (MCP) server for web research. Bring real-time info into Claude and easily research any topic.3278 npm298MIT
- AlicenseAqualityDmaintenanceModel Context Protocol server that enables Claude Desktop (or any MCP client) to fetch web content and process images appropriately.155 npmMIT
- AlicenseBqualityDmaintenanceA Model Context Protocol server that enables Claude to perform web research by integrating Google search, extracting webpage content, and capturing screenshots.3278 npm20MIT
- AlicenseAqualityCmaintenanceA Model Context Protocol server that enables Claude to perform web research by integrating Google search, extracting webpage content, and capturing screenshots in real-time.4278 npm9MIT