Bright Data Web Unlocker + SERP API integration for MCP — rotating residential proxies with anti-bot bypass and CAPTCHA solving, plus Google search through SERP API
Two well-defined tools with complete input schemas, clear descriptions, and proper parameter documentation. Both tools follow verb_noun naming (brightdata_unlock, brightdata_serp) and include actionable descriptions (194 - 250 chars, within baseline 34 - 392). All required and optional parameters have type definitions and descriptions. However, output schemas are not documented, LLMs cannot predict response structure for downstream chaining. No error handling guidance or recovery patterns. No tool annotations (readOnlyHint, idempotentHint). Both tools correctly declare READ_ONLY risk but lack structured error classification.
Run a Google search through the Bright Data SERP API and return parsed organic results (rank, title, link, description) with geo-targeting. Uses the same Bright Data request API with a SERP-type zone — create a SERP API zone in your Bright Data dashboard and pass its name as `zone` (Web Unlocker zones return raw HTML for Google). BYOK: Bright Data API token via _apiKey; pay-per-request pricing on the Bright Data side. Example: brightdata_serp({ query: "best espresso machine", zone: "serp_api1", country: "us", _apiKey: "your-brightdata-token" })
Fetch any URL through Bright Data Web Unlocker — rotating residential proxies with automatic anti-bot bypass and CAPTCHA solving, built for the hardest-to-scrape sites (Cloudflare, PerimeterX, Akamai fronted). Returns the page content with status and length; large pages are truncated. Calls proxy the fetch synchronously and can take 10-30 seconds. BYOK: Bright Data API token via _apiKey + a Web Unlocker zone configured in your dashboard (first zone is auto-named "web_unlocker1"); pay-per-request pricing on the Bright Data side. Example: brightdata_unlock({ url: "https://example.com", _apiKey: "your-brightdata-token" })
Output schemas not documented. LLMs cannot predict response structure (fields, types, pagination) for downstream tool chaining or result extraction.
No error handling guidance. Errors (401 Invalid token, 429 rate limit, timeout) lack recovery hints. LLMs cannot self-correct or know whether to retry.
No tool annotations. Tools lack readOnlyHint, idempotentHint, or destructiveHint metadata. LLMs cannot infer safety properties from schema alone.
API key exposed as parameter. _apiKey is passed in tool arguments, which are logged in agent traces and prompt history. Should use server-side secret injection via environment variables.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 63 | 2026-07-28+ | v2 |
No pagination or result limits documented. brightdata_serp accepts 'num' and 'start' but no max cap stated; brightdata_unlock truncates at 20k chars but no structured pagination response (total_count, next_cursor) defined.