Skip to main content
Glama
quantumproxies

quantumproxies-mcp

Official

QuantumProxies MCP Server

Connect QuantumProxies to Claude, Cursor, Cline, and any MCP client. Gives an AI agent live web access — scrape, search, map, and crawl — through residential proxies with real-browser TLS fingerprints, so pages that block ordinary bots come back clean. It also hands the agent raw proxy endpoints of every type (residential, mobile, datacenter, ISP, IPv6) from your active plans, ready to plug into any HTTP client.

It calls the public QuantumProxies Scraper API with your own qp_live_ key, so there are no internal secrets and you run it locally.

Tools

Tool

What it does

scrape

Scrape one URL → Markdown/HTML/text, including PDF/Office documents. Supports multi-format output, absolute link collection, JSON-LD metadata, structured CSS extraction, AI prompt/JSON-schema extraction, and mode: summary.

seo_audit

Fetch a URL as a no-JS bot and fully rendered, return both SEO views + the diff (JS-only content, changed title/description, missing canonical) and bot-facing meta (robots, OG, JSON-LD).

search

Structured Google/Bing/DuckDuckGo results. Set render: true for Google AI Overview, PAA, Knowledge Graph and other JS enrichments.

search_and_read

SERP → fetch top pages → numbered citation-ready sources and one token-bounded context string ready for an AI prompt.

search_bulk / search_bulk_status

Async multi-page pagination with merged organic results and page-one AI/zero-click enrichments.

map

Fast URL discovery (sitemaps + homepage links), no full crawl. Compact by default: up to limit URLs (100) plus site-wide total and per-section summary; group_by: path for the path tree.

crawl / crawl_status

Async BFS site crawl → Markdown per page; poll for progress.

batch / batch_status

Scrape many URLs asynchronously; mode: summary for metadata-only items. Incremental polling via since cursor; page content only with include_content.

create_dataset / dataset_status

Prompt-driven structured dataset collection with budget and row limits.

list_collectors / run_collector / collector_run_status

Ready-made Collectors: run a versioned scraper with a semantic input (keyword + location, place id, product id, domain…) instead of URLs — Google Maps places, place reviews, Google Jobs/News/Shopping, product offers, hotels, local business leads, site contacts, company profile. Priced per delivered row; async runs poll by run_id, rows exportable as CSV.

list_proxies

List your proxy services of every type — Residential Basic/Premium/Private, Mobile, Mobile V2, Datacenter, ISP, IPv6 — with bandwidth left, expiry and the orderId used to generate.

generate_proxies

Ready-to-use proxy strings (credentials included) from any active plan: geo targeting (country/state/city/ISP/ASN), rotating or sticky sessions, HTTP or SOCKS5, several output formats.

proxy_locations

Valid geo-targeting values per plan type: countries, states, cities, ASNs, or the full location tree with ISP codes.

whitelist_ip

Manage IP-auth whitelisting (add/list/remove) for plans that support it, including the Mobile V2 IP-auth proxy list.

Related MCP server: ProxyClaw MCP Server

Quick start

No install needed — npx fetches quantumproxies-mcp on demand (Node.js 18+).

Claude Code (one command):

claude mcp add quantumproxies \
  -e QUANTUMPROXIES_API_KEY=qp_live_your_key_here \
  -- npx -y quantumproxies-mcp

Claude Desktop / Cursor / Cline / any MCP client (claude_desktop_config.json, .cursor/mcp.json, Cline's MCP settings, or .mcp.json):

{
  "mcpServers": {
    "quantumproxies": {
      "command": "npx",
      "args": ["-y", "quantumproxies-mcp"],
      "env": { "QUANTUMPROXIES_API_KEY": "qp_live_your_key_here" }
    }
  }
}

Hosted endpoint (remote MCP)

The same server also runs as a hosted Streamable HTTP endpoint, for clients that prefer a URL over a local package:

https://api.quantumproxies.io/mcp

Your key travels per request in the Authorization header, so nothing is stored server-side and one endpoint serves every account:

curl -X POST https://api.quantumproxies.io/mcp \
  -H "Authorization: Bearer qp_live_your_key_here" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

The endpoint accepts either header — Authorization: Bearer qp_live_your_key_here (preferred) or X-Api-Key: qp_live_your_key_here — so clients that can't set an Authorization header can send the key directly.

In a client that supports remote MCP servers, add it as an HTTP server with that URL and your key. For Cline (and any client that defaults to legacy SSE), set the transport type explicitly to streamableHttp:

{
  "mcpServers": {
    "quantumproxies": {
      "type": "streamableHttp",
      "url": "https://api.quantumproxies.io/mcp",
      "headers": { "Authorization": "Bearer qp_live_your_key_here" }
    }
  }
}

initialize and tools/list answer without a key so directories and inspectors can introspect the server; tool calls need one.

Self-hosting the endpoint is a second binary in this same package:

QUANTUMPROXIES_API_KEY=qp_live_… PORT=9310 npx -y quantumproxies-mcp-remote

Run from source (development)

npm install
npm run build

Then point the client at the local build instead of npx:

{
  "mcpServers": {
    "quantumproxies": {
      "command": "node",
      "args": ["/absolute/path/to/quantumproxies-mcp/dist/index.js"],
      "env": {
        "QUANTUMPROXIES_API_KEY": "qp_live_your_key_here"
      }
    }
  }
}

Env

Var

Default

Notes

QUANTUMPROXIES_API_KEY

Required. Your qp_live_ key.

QUANTUMPROXIES_API_BASE

https://app.quantumproxies.io/api/v1

Override for staging/self-host.

Example prompts

  • "Scrape the pricing page at example.com and give me the plans and prices."

  • "Search Google Shopping for 'nintendo switch oled' in the US and list the cheapest 5."

  • "Map docs.example.com, then crawl only the /guides/ pages and summarize them."

  • "List my proxy plans and generate 5 sticky US residential proxies as socks5 URLs."

  • "Get me a rotating mobile proxy in Germany and whitelist my server IP 203.0.113.7."

Privacy Policy

Full policy: https://quantumproxies.io/privacy

What this server sends. It runs on your machine and talks only to the public QuantumProxies API at https://app.quantumproxies.io/api/v1, authenticated with your own qp_live_ key. Each call carries the arguments you (or your agent) passed — the target URL or query, and any extraction prompt. Nothing else on your machine is read or transmitted: the server has no filesystem, shell or clipboard access.

What we collect. Account data you give us (name, email, billing details) and a request log kept for billing, abuse prevention and support: target URL or query, timestamp, response status, bytes transferred and the API key used. We do not retain scraped page content beyond what is needed to return your result.

Data you collect through the service. You decide what public web data to collect and you are the controller of that data — we process it on your behalf only to fulfil your request. You are responsible for using the service lawfully, for respecting the terms of the sites you access, and for any personal data you collect through it.

Sharing. We do not sell personal data. We share it only with the processors that run the service — payment providers, email delivery, hosting, CDN and analytics — under contracts that bind them to protect it, and with the upstream proxy networks that route your traffic (connection metadata only, never your account details). We may disclose data where required by law.

Retention. Account data for as long as the account exists; request logs on a rolling window for billing and abuse investigation. You can request deletion at any time.

Your key. Claude Desktop stores it in the OS keychain and passes it to this server as an environment variable. It is never written to the bundle and never sent anywhere except the QuantumProxies API. Revoke or rotate it at https://app.quantumproxies.io/api-keys.

Contact. support@quantumproxies.io

Available Tools

25 tools
batchA

Scrape many URLs asynchronously with shared options. Returns a job id — poll with batch_status. For SEO/status audits over many pages set mode 'summary': items carry metadata only (title, description, canonical, contentLength) instead of full page content.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNosummary: per-URL metadata only, no page content — the light mode for audits
urlsYesURLs to scrape
engineNoFetch engine (default auto)
formatNoOutput format (default markdown)
countryNoISO country code for the proxy exit
content_modeNoPer-URL content scope: smart (default) | article | full

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses the asynchronous behavior, the return of a job id, and the need to poll with batch_status. It also explains that summary mode returns metadata only. However, it does not mention error handling, rate limits, or implications of failure. Core behavior is communicated but not exhaustively.

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

Conciseness5/5

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

The description is two sentences with zero fluff. The first sentence states the action and async pattern; the second adds a practical tip about summary mode. It is front-loaded and every word contributes, though it could optionally mention the polling flow earlier.

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

Completeness4/5

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

Given no annotations and no output schema, the description covers the essential workflow: submit batch → poll with batch_status. It explains the summary mode and its purpose. It does not elaborate on error scenarios or limits, but the schema already caps URLs at 5000. The description is sufficient for an agent to invoke the tool correctly for the typical batch-scraping use case.

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

Parameters4/5

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

Schema description coverage is 100%, so baseline is 3. The description adds meaningful semantic value for the 'mode' parameter by explaining that summary mode carries metadata only (title, description, canonical, contentLength) and is intended for audits. Other parameters are left to the schema, but the mode enhancement justifies a score above baseline.

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

Purpose5/5

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

The description states a clear verb and resource: 'Scrape many URLs asynchronously with shared options.' It distinguishes itself from single-URL scraping by emphasizing the batch and async nature, and the mention of summary mode for audits differentiates it from other bulk tools like search_bulk. This is a precise and scoped purpose.

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

Usage Guidelines4/5

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

The description gives an explicit use case: 'For SEO/status audits over many pages set mode summary' and instructs to poll with batch_status. While it does not explicitly name alternatives or state when not to use it, the context of 'many URLs' and the async pattern clearly imply it is for bulk operations. The guidance is clear but could be stronger with explicit exclusions.

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

batch_statusA

Poll a batch job for progress and per-URL results. Polls are incremental: pass the previous response's nextCursor as since to receive only the items completed after your last poll. Items omit page content by default — set include_content true only when you actually need the text.

ParametersJSON Schema
NameRequiredDescriptionDefault
jobIdYesThe batch job id returned by batch
sinceNoItem cursor from the previous poll's `nextCursor` — returns only newer items
include_contentNoInclude each item's full page content (default false — metadata only)

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries the behavioral disclosure burden. It usefully reveals that polling is incremental and that page content is omitted by default unless include_content is set. It does not mention terminal states or result expiration, but the core behavior is disclosed.

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

Conciseness5/5

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

Three tightly written sentences. The main purpose is front-loaded, followed by the essential polling mechanics and then the content flag tradeoff. Every sentence earns its place with no filler.

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

Completeness4/5

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

For a polling tool with three parameters and no output schema, the description explains how to poll, how to resume incrementally, and how to request full content. It could say more about completion semantics or response shape, but the critical usage information is present.

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

Parameters3/5

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

Schema coverage is 100%, so the baseline is 3. The description reinforces the semantics of since and include_content, but these meanings are already present in the schema. It adds incremental contextual framing rather than wholly new parameter information.

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

Purpose5/5

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

The description clearly states the verb and resource: 'Poll a batch job for progress and per-URL results.' This distinguishes it from sibling status tools like crawl_status or collector_run_status by tying it specifically to batch jobs.

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

Usage Guidelines4/5

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

The description gives explicit polling workflow guidance: polls are incremental and the previous response's nextCursor should be passed as since. It does not explicitly mention alternatives or when not to use this tool, so it stops 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.

collector_run_statusA

Fetch a Collector run by run_id: status (queued|running|done|failed), result count, cost, partial flag and the result rows. Use after run_collector returned 202/async. Pass format 'csv' to get the rows as CSV text.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoReturn rows as JSON (default) or CSV text
run_idYesThe run id returned by run_collector

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries the burden of behavioral disclosure. It does well by specifying the status values (queued|running|done|failed), result count, cost, partial flag, and result rows. It also documents the CSV format option. It does not mention polling behavior or error conditions, but the core behavioral surface is covered.

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

Conciseness5/5

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

Two sentences with no filler. The primary action and return fields are front-loaded, and the usage prerequisite and format override are clearly stated. Every sentence earns its place.

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

Completeness4/5

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

Given no output schema and no annotations, the description adequately enumerates return values and the prerequisite async call. It lacks only minor guidance on polling intervals or how to handle 'queued'/'running' states, but for a status-check tool this is sufficient. Could be a 5 if it included a brief note on polling, but the current coverage is strong.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description reinforces what the schema already says for run_id ('returned by run_collector') and format ('csv' returns rows as CSV text). It adds no genuinely new parameter-level meaning beyond the schema, so a 3 is appropriate.

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

Purpose5/5

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

The description uses a specific verb ('Fetch'), identifies the exact resource ('a Collector run by run_id'), and enumerates the returned fields (status, result count, cost, partial flag, result rows). It clearly distinguishes itself from run_collector by explicitly positioning itself as the follow-up to an async 202 response.

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

Usage Guidelines4/5

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

The description gives clear contextual guidance: 'Use after run_collector returned 202/async.' This tells the agent when to invoke the tool. However, it does not explicitly mention when not to use it or name alternative status tools (e.g., dataset_status), which would elevate it to a 5.

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

crawlA

Start an asynchronous BFS crawl of a site from a seed URL, converting each page to Markdown. Returns a job id — poll with crawl_status.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesSeed URL
depthNoMax link depth (default 3)
limitNoMax pages (default 50)
countryNoISO country code for the proxy exit
excludeNoURL substrings/globs to exclude
includeNoURL substrings/globs to include
content_modeNoPer-page content scope: smart (default) | article | full

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description must shoulder the burden of behavioral disclosure. It discloses that the operation is asynchronous, uses BFS, converts to Markdown, and returns a job id, which signals non-blocking behavior and a side effect (creating a job). However, it does not mention resource consumption, rate limits, whether it respects robots.txt, or if any setup (e.g., proxies) is required. This is adequate but not rich; 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.

Conciseness5/5

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

The description is compact, two sentences, and every clause contributes. It front-loads the core action ('Start an asynchronous BFS crawl'), specifies output format (Markdown), and immediately guides the agent to the next step (poll with crawl_status). There is no fluff, repetition, or unnecessary detail—exemplary conciseness.

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

Completeness4/5

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

For a tool with 7 parameters and no output schema, the description provides the essential guidance: what it does, how it returns results (job id), and how to follow up (crawl_status). It does not explain preconditions like proxy configuration (though the 'country' parameter implies proxy usage) or clarify how parameters affect the crawl, but these are mostly derivable from the schema. The missing nuance about setup and parameter interactions keeps it from a 5, but it is sufficiently complete for safe invocation.

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

Parameters3/5

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

Schema description coverage is 100% and every parameter already has a description (e.g., 'Max link depth (default 3)', 'Max pages (default 50)'). The tool description adds no additional meaning about any parameter; it only references the 'BFS' mechanism, which is not tied to a specific parameter. Per the baseline rule for high coverage, a 3 is appropriate.

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

Purpose5/5

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

The description states a specific action ('Start'), a resource ('a site'), and a method ('BFS crawl'), plus the output ('converting each page to Markdown') and the return value ('Returns a job id'). It clearly distinguishes itself from sibling tools like 'scrape' or 'search' by emphasizing the asynchronous multi-page traversal and the need to poll with 'crawl_status'.

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

Usage Guidelines4/5

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

The description gives clear context: this is asynchronous, you get a job id, and you must poll with crawl_status. It implies the use case of crawling an entire site, but does not explicitly name alternatives or state when NOT to use this tool (e.g., for single-page scraping, use 'scrape'). The flow is clear, but exclusions are absent; a 4 reflects the lack of explicit alternative differentiation while providing solid usage direction.

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

crawl_statusA

Poll a crawl job for progress and the pages crawled so far. Polls are incremental: pass the previous response's nextCursor as since to receive only the pages crawled since your last poll. Pages omit their content by default — set include_content true only when you actually need the text (a large crawl's full content can be hundreds of KB).

ParametersJSON Schema
NameRequiredDescriptionDefault
jobIdYesThe crawl job id returned by crawl
sinceNoPage cursor from the previous poll's `nextCursor` — returns only newer pages
include_contentNoInclude each page's full content (default false — metadata only)

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries the full behavioral burden. It discloses key behaviors: incremental pagination via `since`, default metadata-only response, and the large size of full content ('hundreds of KB'). However, it doesn't mention potential rate limits, error responses, or job completion states, which would be useful for a polling tool.

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

Conciseness5/5

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

The description is compact at three sentences, front-loading the core purpose and then providing actionable polling and content guidance. Every sentence adds value without redundancy, making it easy for an agent to quickly grasp the tool's behavior.

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

Completeness4/5

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

For a polling tool with no output schema, the description covers essential usage patterns: incremental cursor passing, content size implications, and default behavior. It doesn't explain response fields beyond `nextCursor` or job lifecycle events (e.g., completion, errors), but it provides enough context for correct invocation. There is a small gap in describing what happens when the crawl finishes.

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

Parameters3/5

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

Schema coverage is 100%, so the baseline is 3. The description reinforces the `since` parameter's role in incremental polls and the `include_content` default, but these are already well documented in the schema. The only added value is the size warning, which is minor; the schema already carries the semantic weight.

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

Purpose5/5

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

The description clearly states the specific verb 'Poll' and the resource 'a crawl job', explaining it tracks progress and pages crawled. It distinguishes itself from sibling status tools like batch_status and collector_run_status by explicitly targeting crawl jobs. The purpose is unambiguous and directly actionable.

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

Usage Guidelines4/5

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

The description gives explicit usage guidance for incremental polling: 'pass the previous response's nextCursor as since' and for content handling: 'set include_content true only when you actually need the text'. It implies this is the correct tool for crawl job status, differentiating from siblings via the focus on crawl jobs, though it doesn't explicitly name alternatives or exclusion conditions.

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

create_datasetA

Build a structured dataset from a plain-language prompt. Quantic AI plans the search queries, searches Google/Bing/DuckDuckGo, maps the sites it finds and scrapes them into validated rows (CSV/JSON). Returns a job id — poll with dataset_status. Billed per delivered, validated record (email/phone fields cost extra, only when found); the run never exceeds limits.max_cost_usd, and the unspent budget is refunded.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitsNo
promptYesWhat dataset you want, in plain language (e.g. 'coffee roasters in Portland with email and phone')
columnsNoColumns to extract; omit to let the planner infer them
countryNoISO country code for the proxy exit geo
sourcesNoDomain allow/deny lists
webhookNoPublic URL to POST the finished dataset to

TDQS

A4.5/5.0
Behavior5/5

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

No annotations are present, so the description carries the full burden—and it delivers: it discloses asynchronous execution (job id + polling), output formats, billing per found record, premium field surcharges, and a hard cost cap with refund. This is strong behavioral disclosure for a complex, potentially expensive tool.

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

Conciseness5/5

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

Two dense sentences are front-loaded with the core purpose, followed by the async contract and billing rules. No filler or repetition of schema content; every clause earns its place.

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

Completeness5/5

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

For a complex 6-parameter tool with no annotations and no output schema, the description explains the pipeline, the job-id/polling flow, output formats, and the full billing and cost-cap behavior. An agent has enough context to invoke it correctly and set user expectations.

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

Parameters3/5

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

Schema coverage is 83%, so the schema already documents most parameters (prompt, limits, columns, sources, country, webhook). The description adds meaning mainly to limits.max_cost_usd by explaining the budget cap and refund behavior, but does not materially enrich the other parameters.

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

Purpose5/5

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

States a specific verb ('Build') and resource ('structured dataset'), and explains the full pipeline from prompt to validated rows in CSV/JSON. It also distinguishes itself by naming the polling endpoint (dataset_status), which separates it from direct scrape/crawl siblings.

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

Usage Guidelines4/5

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

Clearly implies the intended use case: converting a plain-language request into a structured, validated dataset via multi-engine search and scraping. It does not explicitly name alternatives or when-not-to-use, but the scope is specific enough for an agent to select it over raw scrape/crawl tools.

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

dataset_statusA

Poll a dataset job for progress, the collection trace (steps) and the rows so far. Polls are incremental: pass the previous response's nextCursor as since to receive only rows delivered after your last poll. Set mode 'summary' to omit rows and get only progress + steps (light poll). When status is completed, the response includes signed CSV/JSON download URLs.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNosummary: progress + steps only, no rows
jobIdYesThe dataset job id returned by create_dataset
sinceNoRow cursor from the previous poll's `nextCursor` — returns only newer rows

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full responsibility for behavioral disclosure. It discloses that polls are incremental, that summary mode omits rows, and that completed jobs return signed download URLs. This covers key state changes and output behavior. It stops short of describing failure modes or rate limits, but the disclosed behaviors are accurate and non-misleading.

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

Conciseness5/5

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

The description is two sentences, with the core purpose stated in the first phrase. Every clause adds critical information: incremental polling, the `since` mapping, summary mode, and completion behavior. There is no redundancy or filler, and the structure front-loads the most important context.

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

Completeness4/5

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

For a polling tool with 3 parameters and no output schema, the description covers all necessary usage aspects: how to poll incrementally, when to use summary mode, and what happens on completion. It does not describe the full response shape, but given the absence of an output schema, the mention of download URLs provides sufficient closure. An agent can confidently call this tool after create_dataset.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description adds value by explaining the `since` parameter's role as a cursor from the previous poll's `nextCursor`, and how `mode` affects output (omitting rows). These insights go beyond the schema's terse 'Row cursor from previous poll' and 'summary: progress + steps only', making the parameters more semantically meaningful.

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

Purpose5/5

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

The description opens with a specific verb+resource: 'Poll a dataset job for progress, the collection trace (steps) and the rows so far.' This clearly distinguishes it from sibling status tools like search_bulk_status, crawl_status, or batch_status by explicitly naming the dataset job context. The addition of incremental polling semantics and summary mode further pinpoints its unique role.

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

Usage Guidelines4/5

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

The description explains how to use the tool incrementally ('pass the previous response's nextCursor as since') and offers a lighter mode ('mode summary'). While it doesn't explicitly name alternatives or exclusion criteria, the context of dataset jobs and the polling pattern make the usage clear. It could benefit from an explicit note like 'use after create_dataset', but the information is present and actionable.

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

generate_parserA

Look at a page ONCE with an LLM and get back CSS selectors that extract the fields you asked for. Pass the returned parser as the extract argument on every later scrape of that same layout and no AI runs again — it becomes a plain, free, deterministic extraction. Use this instead of ai_prompt whenever you will scrape more than a couple of pages of the same shape. Every selector is run against the page before being returned, so report/coverage tell you which fields are actually reliable.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoThe page to learn the layout from
htmlNoMarkup you already have, instead of fetching a URL (no proxy bandwidth used)
fieldsNoWhat to extract, as { field_name: "plain-English description" } — e.g. { "price": "the product price", "specs": "every spec bullet, as a list" }. Max 25.
promptNoFree-text alternative to `fields` — the model picks and names the fields itself
renderNoLearn from the browser-rendered DOM instead of the raw HTML (needed for SPA pages)
countryNoISO country code for the proxy exit

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description shoulders the full burden. It discloses the one-time LLM use, the deterministic and cost-free nature of subsequent scrapes, and the fact that selectors are verified against the page with report/coverage. It stops short of mentioning rate limits or auth, but for this read-only parser generation the core behaviors are covered.

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

Conciseness5/5

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

Three sentences, no fluff. The purpose is front-loaded, followed by usage guidance and a note on verification. Every sentence contributes value and none repeat schema content.

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

Completeness4/5

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

Covers the primary use pattern, the alternative, and the reliability output (report/coverage). It gives an agent enough to decide when to call and what to expect, even without an output schema. Minor gaps like conflict resolution between url and html are left to the schema descriptions, which already exist.

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

Parameters3/5

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

Schema description coverage is 100% for all six parameters, so the schema already documents semantics. The description adds workflow context (pass parser as extract) but does not elaborate on individual parameters beyond what the schema provides. Baseline 3 applies.

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

Purpose5/5

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

States a specific verb+resource: 'Look at a page ONCE with an LLM and get back CSS selectors that extract the fields you asked for.' It also clearly differentiates from ai_prompt by noting it replaces AI on repeated scrapes, making the tool's niche unmistakable.

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

Usage Guidelines5/5

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

Explicitly tells when to use it: 'Use this instead of ai_prompt whenever you will scrape more than a couple of pages of the same shape.' This names the alternative and the condition that selects it, leaving no ambiguity.

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

generate_proxiesA

Generate ready-to-use proxy endpoint strings (credentials included) from one of the account's active proxy services — any type: residential, mobile, datacenter, ISP, IPv6. Supports geo targeting (country/state/city, ISP or ASN where the plan allows it), rotating or sticky sessions, HTTP or SOCKS5, and several output formats. Use list_proxies first to get the orderId, and proxy_locations for valid targeting codes. The returned strings plug straight into any HTTP client, e.g. curl -x.

ParametersJSON Schema
NameRequiredDescriptionDefault
ipNoMobile V2 only: a whitelisted IP (see whitelist_ip) to fetch the IP-auth proxy list instead of user:pass proxies
asnNoASN for Residential/Datacenter Basic targeting, e.g. 'AS12345'
ispNoISP code for Residential Premium / Mobile V2 targeting (from proxy_locations tree, e.g. 'tmobile')
cityNoCity (slug from proxy_locations where applicable; 'all' for any)
stateNoState/region (Residential Premium & Mobile V2: use the slug from proxy_locations; 'all' for any)
filterNoResidential Premium / Mobile V2 pool filter (omit for the full pool)
formatNoOutput string format (default user:pass@host:port)
strictNoResidential/Datacenter Basic: true allows fallback to nearby locations when the exact target has no IPs
countryNoCountry code for geo targeting, lowercase, e.g. 'us'
gatewayNoMobile V2 region gateway (default ww)
orderIdYesThe proxy service's orderId (from list_proxies)
protocolNoProxy protocol (default http)
quantityNoNumber of proxy strings (default 10)
rotationNorotating (default): new IP per request. sticky: keep the IP for sessionTime. static: IPv6 only, fixed session with no TTL.
sessionTimeNoSticky session duration in minutes (default 10; Residential Basic/Datacenter minimum 3)

TDQS

A4.4/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses that credentials are included, output is ready-to-use, and supports multiple protocols/formats. It mentions 'active proxy services' implying authorization is required, but does not detail error cases or quota usage. For a generation tool with no destructive behavior, this is adequate but could mention potential side effects like consuming service quota.

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

Conciseness5/5

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

Three sentences, front-loaded with purpose and usage hints. No redundancy, and each sentence adds value. The structure is efficient and scannable for an agent.

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

Completeness4/5

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

For a 15-parameter tool with no output schema, the description covers key aspects: support types, targeting, rotation, protocols, formats, and prerequisites. It references companion tools for required data and gives an example (curl -x). While it doesn't enumerate all parameter interactions, the schema compensates with detailed descriptions. The description is comprehensive enough for an agent to correctly invoke the tool.

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

Parameters3/5

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

Schema coverage is 100%, with each parameter having a description. The description adds high-level context (e.g., 'geo targeting', 'rotating or sticky sessions') that aligns with parameters but does not provide additional per-parameter semantics. The only extra value is referencing list_proxies for orderId, which is helpful but not sufficient to raise above baseline.

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

Purpose5/5

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

Clear verb+resource: 'Generate ready-to-use proxy endpoint strings' with explicit types (residential, mobile, datacenter, ISP, IPv6) and features (geo targeting, rotation, protocols, formats). It distinguishes from siblings like list_proxies and proxy_locations by specifying that it generates strings rather than lists or location data.

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

Usage Guidelines5/5

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

Explicitly instructs prerequisites: 'Use list_proxies first to get the orderId, and proxy_locations for valid targeting codes.' This gives actionable redirects to sibling tools and clarifies when this tool is appropriate, leaving no ambiguity about initial setup.

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

heal_parser_presetA

Regenerate a preset's selectors now (the manual trigger for the automatic repair). Refetches the source page and adopts new selectors ONLY if they extract more than the current ones — a heal that finds nothing better leaves the preset untouched and is not billed.

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNoBypass the cooldown between heals
preset_idYesThe preset id

TDQS

A4.4/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure, and it delivers: it discloses the refetch of the source page, the conditional adoption rule (only if new selectors extract more), the no-op outcome, and — notably — the billing implication ('not billed' when no improvement). This is rich, safety-relevant context that an agent needs before invoking a mutation-like repair.

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

Conciseness5/5

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

A single well-structured sentence with an em-dash clarifier that carries zero waste. The primary action is front-loaded, followed by the conditional caveat and billing note, each earning its place. No redundant modifiers or filler.

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

Completeness4/5

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

For a compact tool (2 params, 1 required, no output schema, no nested objects), the description covers the operation, the conditional adoption behavior, and the billing consequence — everything essential to call it safely. The only minor gap is the unspecified return value, but given the tool's simple nature and absent output schema, this is not a critical omission.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents both parameters (preset_id and force, including force's cooldown-bypass purpose). The description adds the operational meaning of 'heal' but does not elaborate on parameter formats or semantics beyond what the schema states. Baseline 3 applies since the schema does the heavy lifting.

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

Purpose5/5

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

The description opens with a specific verb+resource ('Regenerate a preset's selectors now') and immediately grounds it in context ('the manual trigger for the automatic repair'). This clearly distinguishes the heal operation from sibling tools like save_parser_preset or generate_parser by framing it as a repair trigger rather than a creation or edit.

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

Usage Guidelines4/5

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

The description explains the tool's role as the manual trigger for an automatic repair process, giving clear context for when an agent would invoke it. It also documents the edge case behavior (nothing better found → untouched). However, it does not explicitly name sibling alternatives or state when-not-to-use conditions, leaving some inference to the agent.

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

list_collectorsA

List the ready-made Collectors: paid, versioned scrapers you run with a semantic input (keyword + location, place id, product id, domain…) instead of URLs — e.g. web_search, search_images, search_videos, keyword_ideas, amazon_search, amazon_product, ebay_search, aliexpress_search, linkedin_jobs, indeed_jobs, reddit_posts, youtube_search, youtube_channel, instagram_profile, tiktok_profile, tiktok_video, linkedin_profile, linkedin_company, zillow_search, zillow_property, app_store_apps, app_store_reviews, google_play_apps, google_maps_places, place_reviews, google_jobs, google_news, google_shopping, product_offers, hotels, google_flights, google_events, google_trends, google_autocomplete, google_lens, youtube_video, ebay_product, flipkart_search, idealista_search, kleinanzeigen_search, autotrader_search, github_repos, hacker_news, coingecko_coins, wikipedia_articles, yahoo_finance, stackoverflow, steam, npm_packages, sec_filings, defillama, wayback_machine, clinical_trials, certificate_transparency, wikidata, nvd_cve, openfda, openalex, pypi_packages, exchange_rates, gleif_lei, docker_hub, crates_io, world_bank, openlibrary_books, arxiv_papers, weather_forecast, whois_domain, dns_records, itunes_search, local_business_leads, site_contacts, company_profile, business_directory. Returns each collector's slug, input/output schema, example input, price per delivered result and current health. Billing is pay-per-success: only delivered rows are charged.

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryNoOptional category filter (e.g. 'local', 'ecommerce', 'jobs', 'news', 'travel', 'leads', 'finance', 'dev', 'gaming', 'osint', 'research', 'classifieds', 'knowledge')

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the burden of disclosure. It states return fields, billing model (pay-per-success), and gives examples. It doesn't explicitly say it's read-only, but that's implied by the list operation. It covers relevant behavioral context like pricing and health status.

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

Conciseness4/5

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

The description is long due to the extensive list of examples, but the information is useful for an agent to know what collectors exist. The main purpose is front-loaded, and every sentence adds value (definition, examples, return fields, billing). It is structured and not tautological.

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

Completeness4/5

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

For a list tool with one optional parameter and no output schema, the description is sufficiently complete. It explains what collectors are, what fields are returned, and pricing. It doesn't specify pagination, but that is unlikely needed for a catalog listing.

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

Parameters3/5

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

The input schema has one optional parameter 'category' with a description, achieving 100% schema coverage. The tool description adds no additional parameter information beyond what the schema provides, so baseline 3 applies.

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

Purpose5/5

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

The description clearly states the tool lists ready-made Collectors, defines them, and provides a comprehensive list of examples. It distinguishes itself from sibling tools like list_parser_presets by specifying the resource type and the return fields.

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

Usage Guidelines4/5

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

The description implies usage: to discover available Collectors and their details. It provides context on what Collectors are and how they differ from URL-based scrapers. It doesn't explicitly mention alternatives or when not to use it, but the purpose is unambiguous.

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

list_parser_presetsA

List your stored parser presets with their version, health stats and changelog.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations, the description bears full responsibility. It conveys that the tool reads and returns stored presets, implying a non-destructive operation, but does not explicitly state read-only behavior, pagination, or ordering. Since this is a simple list, the omission is minor but leaves some behavior to inference.

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

Conciseness5/5

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

The description is a single, concise sentence that front-loads the action and resource, then enriches with the key attributes. No fluff or repetition; every word earns its place.

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

Completeness4/5

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

For a parameterless list operation, the description is fairly complete, covering the resource and the nature of the output. It lacks explicit mention of return format (e.g., array) or pagination, but given the simplicity and absence of an output schema, it is sufficient for an agent to understand and invoke correctly.

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

Parameters4/5

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

The tool has zero parameters, so the baseline is 4. The description adds value by detailing what information is included in the listing (version, health stats, changelog), exceeding the empty schema. This provides meaningful context for the agent about expected output.

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

Purpose5/5

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

The description clearly states the verb 'List' and the resource 'your stored parser presets', and further specifies the included attributes (version, health stats, changelog). This effectively differentiates it from sibling tools like generate_parser or parser_preset_stats without ambiguity.

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

Usage Guidelines4/5

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

While the description does not explicitly name alternative tools or conditions for non-use, the purpose is self-evident for a simple list operation, and the resource target is unambiguous. It clearly implies use when you need to view existing presets, which is adequate for this straightforward tool.

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

list_proxiesA

List the account's proxy services of every type — Residential Basic/Premium/Private, Mobile, Mobile V2, Datacenter (static or traffic-based), ISP, IPv6 — with plan type, bandwidth left, expiry, whitelisted IPs and the orderId to pass to generate_proxies. Call this first to see which proxy plans are available.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax services returned (default 50)
activeNotrue: only non-expired services (recommended). false: only expired. Omit for all.
offsetNoPagination offset (default 0)
planTypeNoOnly services of this plan type

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description must carry the behavioral burden. It conveys a read-like operation via 'list' but does not explicitly state read-only or non-destructive behavior, nor does it disclose pagination or rate limiting. For a listing tool, the lack of explicit safety disclosure is a manageable gap but not fully transparent.

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

Conciseness4/5

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

The description is two sentences: the first packs the full scope and result fields, the second gives usage guidance. It is tight with no fluff, though the density might be slightly overwhelming; still, each element earns its place.

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

Completeness4/5

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

Even without an output schema, the description lists the returned fields (plan type, bandwidth, expiry, whitelisted IPs, orderId) and covers the plan types. It also mentions pagination-related parameters (limit, offset) via the schema, and the 'every type' phrase sets expectations. The description is reasonably complete for a list tool, missing only explicit notes on pagination behavior.

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

Parameters3/5

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

Schema coverage is 100% and each parameter is described in the schema. The description adds minimal new parameter meaning—it only mentions the orderId as an output, not a parameter. Thus the description provides no additional semantic value beyond the schema, warranting the baseline score of 3.

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

Purpose5/5

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

The description clearly states the tool lists all proxy services with specific details and explicitly mentions the orderId for generate_proxies, distinguishing it from the create-oriented sibling. It names the exact resource (proxy services) and the verb (list), making the purpose unmistakable.

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

Usage Guidelines4/5

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

The description explicitly instructs to 'Call this first to see which proxy plans are available,' providing a clear use case and ordering relative to generate_proxies. It does not list formal exclusions, but the 'first' directive gives enough context to route the agent correctly.

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

mapA

Discover a site's URLs fast (robots.txt sitemaps + /sitemap.xml + homepage links) without a full crawl. Returns up to limit URLs (default 100) plus the site-wide total and a per-section summary (e.g. '/blog': 1988) so you see the site's shape without the full list. Narrow with search (substring filter — the primary way to find specific pages) or set group_by 'path' for the path tree with counts instead of URLs.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe site URL to map
limitNoMax URLs returned (default 100). `total`/`summary` always cover the whole site.
searchNoOnly return URLs containing this substring — use this to narrow before raising limit
group_byNopath: return the path tree with per-prefix counts instead of the flat URL list
includeSubdomainsNoInclude subdomains of the seed host

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It does this well by explaining the return shape (limited URLs, site-wide total, per-section summary), the filtering behavior, and the grouping alternative. It does not cover failure modes or edge cases, but the core behavior is transparent.

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

Conciseness4/5

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

The description is dense but efficient, with the main purpose front-loaded and parameter behavior woven into contextual prose. It could be slightly trimmed, but every sentence carries useful information and there is no filler.

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

Completeness4/5

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

There is no output schema, so the description must convey the return shape, and it does: limit, total, summary, and the group_by path-tree alternative. It also contextualizes search as the primary filtering path. Minor omissions like includeSubdomains behavior are already covered by the schema, so the overall definition is complete enough.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds meaningful context beyond the schema: it explains the default limit, that total/summary always cover the whole site, that search is the primary narrowing mechanism, and that group_by produces a path tree with counts. This is genuine added value.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Discover a site's URLs fast' and names concrete discovery sources (robots.txt sitemaps, /sitemap.xml, homepage links). It also distinguishes itself from a full crawl, making it easy to differentiate from the sibling crawl tool.

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

Usage Guidelines4/5

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

The description clearly states it is for fast URL discovery 'without a full crawl', giving context for when to use it versus crawling. It also explains how to narrow results with search and group_by. It doesn't explicitly name all sibling alternatives or exclusion conditions, but the 'without a full crawl' contrast provides enough guidance.

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

parser_preset_statsA

How well a stored parser is still working: success rate per field, mean coverage over the recent runs, and whether it now counts as decayed (i.e. the site probably changed).

ParametersJSON Schema
NameRequiredDescriptionDefault
preset_idYesThe preset id returned by save_parser_preset

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the burden of disclosing behavior. It does explain what 'decayed' means and what statistics are computed, but it never states that the operation is read-only or whether it has side effects. The tool is clearly a stats/status query, so the omission is moderate rather than severe.

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

Conciseness5/5

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

A single sentence that front-loads the core purpose ('How well a stored parser is still working') and then enumerates the exact output components. Every word earns its place; no redundant or vague filler.

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

Completeness4/5

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

For a one-parameter tool with no output schema, the description is nearly complete: it lists the three categories of results and explains the decayed flag. It could specify value formats (e.g., percentages or ratios) or error behavior for unknown presets, but nothing critical is missing for invoking the tool.

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

Parameters3/5

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

Schema coverage is 100%, and the schema already explains that preset_id comes from save_parser_preset. The description adds no parameter-level detail beyond referring to a 'stored parser', so the baseline score of 3 is appropriate.

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

Purpose4/5

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

The description clearly identifies the resource (a stored parser/preset) and the specific data it reports: success rate per field, mean coverage, and a decayed flag. It lacks an explicit verb like 'retrieves' or 'returns', but the meaning is unambiguous and distinct from siblings like dataset_status or list_proxies.

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

Usage Guidelines4/5

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

The phrase 'over the recent runs' gives clear context for when to use this tool: after a parser has been exercised, to assess whether it still works. It does not mention alternatives or exclusions, but the sibling tools are sufficiently different that no routing guidance is strictly needed.

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

proxy_locationsA

Discover valid geo-targeting values for a proxy plan type before calling generate_proxies: countries, states, cities, ASNs, or the full location tree (countries → regions → cities → ISPs). Use level 'tree' for Residential Premium / Mobile V2 slugs and ISP codes, or for the static datacenter gateway list; note the tree can be large.

ParametersJSON Schema
NameRequiredDescriptionDefault
levelNocountries (default) | states (needs country) | cities (needs country) | asns | tree (full location tree: residentialpremium, mobile/mobile_v2, datacenter)
stateNoCities only: filter by state
countryNoCountry code, required for states/cities, optional filter for asns
planTypeYesThe plan type to look up (same value as list_proxies planType)

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description must carry the behavioral disclosure burden. It mentions the tree can be large, which is a useful behavioral trait, and implies a read-only discovery operation. However, it does not explicitly state that there are no side effects, what happens on invalid input, or any authentication requirements. For a read-only lookup, this is acceptable but not fully transparent.

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

Conciseness5/5

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

The description is two sentences long and effectively front-loads the core purpose. Every clause adds value: the list of value types, the explicit link to generate_proxies, the guidance on tree usage, and the size warning. There is no fluff or redundant restatement of the tool name.

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

Completeness4/5

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

Given the tool's simple lookup nature and fully described schema, the description is quite complete. It explains what results to expect (geo-targeting values), the structure of the tree, and a practical caveat about its size. There is no output schema, but the description implies the content of the response. The only minor gap is not specifying the exact output format (e.g., whether it returns a list of objects or a hierarchy), but this is reasonable for a discovery tool.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds meaningful value beyond the schema by explaining when to use 'tree' (for specific plan types and ISP codes) and warning about its size. It also clarifies the dependency on planType and the optional filters for states/cities, enriching the parameter semantics without redundancy.

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

Purpose5/5

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

The description clearly states the tool's purpose: discovering valid geo-targeting values for a proxy plan type. It enumerates the specific value types (countries, states, cities, ASNs, tree) and explicitly links it to the prerequisite step before calling generate_proxies. This unambiguously distinguishes it from siblings like list_proxies or generate_proxies.

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

Usage Guidelines4/5

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

It provides clear usage context by stating to use this before generate_proxies and gives precise guidance on when to use the 'tree' level (for Residential Premium / Mobile V2 slugs, ISP codes, and the static datacenter gateway list). It does not explicitly mention alternatives or when not to use it, but the intent is clear. The warning about tree size also helps decision-making.

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

run_collectorA

Run a Collector by slug with a semantic input (see list_collectors for each collector's inputSchema and example). Short runs return the rows inline; long runs return 202 with a run_id + statusUrl — poll with collector_run_status. Results are billed per delivered row (never for failures). Set async true to force background execution.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesCollector slug from list_collectors, e.g. 'google_maps_places'
asyncNoForce background execution and return a run_id to poll
inputYesInput fields matching the collector's inputSchema (e.g. { keyword: 'dentist', location: 'Austin, TX', max_results: 20 })

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations provided, the description must carry the full burden, and it does: it discloses return behavior (short runs return rows, long runs return 202 with run_id/statusUrl), billing semantics (per delivered row, never for failures), and the async flag's effect. This gives the agent a solid mental model of the tool's runtime behavior and side effects.

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

Conciseness5/5

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

Three sentences, zero fluff. It front-loads the purpose, then packs behavior, billing, and async guidance efficiently. Every sentence earns its place with actionable information.

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

Completeness4/5

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

Despite no output schema, the description provides essential return information (inline rows vs 202 with run_id/statusUrl) and points to collector_run_status for polling. It also references list_collectors for input schema details, completing the contextual loop. It does not mention error scenarios or parameter validation, but the core information needed to call the tool correctly is present.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3, but the description explicitly clarifies how to use each parameter: slug from list_collectors, input matching the collector's inputSchema (with an example), and async to force background execution. This adds real semantic value beyond the schema's field descriptions, making it a 4.

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

Purpose5/5

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

States a specific verb ('Run') with a clear resource ('a Collector by slug') and the key input type ('semantic input'). It distinguishes from siblings like list_collectors (listing vs executing) and collector_run_status (polling vs initiating). The description leaves no ambiguity about what the tool does.

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

Usage Guidelines5/5

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

Explicitly points to list_collectors for inputSchema preparation and to collector_run_status for long-run polling, giving the agent the correct workflow. It also explains when to use the async flag ('force background execution'), which provides clear usage context. No alternative tool is mentioned as a replacement, but the reference to these siblings establishes when this tool is appropriate.

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

save_parser_presetA

Store a generated parser under a name so it can be reused by id. Scrape later with scrape's preset_id instead of repeating the selectors, and every run is scored per field — when the recent success rate decays (the site redesigned), the preset regenerates itself from source_url and bumps a version. Give it a source_url whenever you can: without one it can never self-heal.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesA name you'll recognise, e.g. 'amazon product page'
fieldsNoThe original field descriptions, so a self-heal regenerates the same shape
parserYesThe parser to store — normally the `parser` object returned by generate_parser
renderNoThe page needs a browser render to show its content
auto_healNoRegenerate automatically on decay (default true when source_url is set)
source_urlNoPage to relearn from when the parser decays — required for self-healing

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It discloses that every run is scored per field and that the preset regenerates itself on decay, bumping a version. It also transparently notes that without a source_url it can never self-heal. This adds significant behavioral context beyond the schema. It does not mention permissions or side effects like name conflicts, but the core behavior is well conveyed.

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

Conciseness5/5

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

Three sentences with no fluff. The first sentence states the primary purpose, the second explains reuse, scoring, and self-healing, and the third gives a best-practice recommendation. Information is front-loaded and every sentence earns its place.

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

Completeness4/5

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

For a tool with 6 parameters, nested objects, and no output schema, the description covers the primary use case, the self-healing behavior, and the critical dependency on source_url. It doesn't explain return values or edge cases like name conflicts, but the essential information for correct selection and invocation is present. Given the complexity, it is reasonably complete, though more detail about the return value and overwrite behavior could push it to 5.

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

Parameters3/5

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

Schema description coverage is 100%, so baseline is 3. The description adds little beyond the schema; it reiterates the self-healing requirement of source_url but doesn't elaborate on parameters like `fields` or `auto_heal`. It mentions `preset_id` but that is not a parameter of this tool. No additional parameter meaning is provided, so a score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states a specific verb ('Store'), a specific resource ('a generated parser'), and its purpose ('so it can be reused by id'). It also distinguishes itself from siblings by referencing scrape's `preset_id` and self-healing behavior, making it distinct from generate_parser and list_parser_presets.

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

Usage Guidelines4/5

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

It explains the usage context: save a parser for later reuse via scrape's `preset_id`, and advises to provide a `source_url` for self-healing. It doesn't explicitly state when not to use it or alternative tools, but the context of generating a parser first and then saving is implied. The instruction 'Give it a source_url whenever you can' is a clear guideline. No explicit exclusions or alternatives are named, but the purpose is direct.

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

scrapeA

Scrape a single web page through a residential proxy and return it as clean Markdown (or HTML/text). Uses a real Chrome TLS fingerprint by default and only spins up a headless browser if the page is bot-challenged. Optionally run structured extraction (CSS selectors) or AI extraction (natural-language prompt). Markdown keeps the complete page by default (content_mode 'smart': everything except nav/footer/cookie chrome, with GFM tables and absolutized links); to inspect a page's raw no-JS/SEO fallback use format 'html'.

ParametersJSON Schema
NameRequiredDescriptionDefault
tocNoPrepend a table of contents built from the page headings
urlNoThe page URL to scrape (optional only when you pass `html` to convert)
xhrNoRecord the page's XHR/fetch traffic (URL, method, status, response body) into payload.xhr. Forces a browser render. An SPA's own JSON API is usually far cleaner than its DOM — use this to DISCOVER the API, then fetch_resource to return it directly.
htmlNoConvert HTML you already have instead of fetching: no proxy bandwidth is used, and the full parser pipeline still applies. Pass `url` too if you want relative links absolutized.
modeNosummary: return only metadata (title, description, canonical, contentLength, status, engine, bytes) with no page content — use this when auditing pages instead of reading them
chunkNoSegment the output into payload.chunks[] for RAG/vector-DB ingestion — each chunk carries its heading path and token count. Fences and tables are never split.
queryNoWhat you are looking for on the page. Keeps only the relevant sections (BM25 scoring over blocks, headings preserved) — the way to read one fact off a huge page without spending its whole token budget.
engineNoauto (default): TLS tier, escalate to browser on block. tls: never escalate — exactly what a pure HTTP bot (no JS) sees, right for SEO checks. render: force browser.
formatNoOutput format (default markdown)
parserNoYour own parsing rules, as CSS selector lists — use these when you know the page and don't want to rely on heuristics. include: keep ONLY these subtrees (targeted extraction, e.g. ['article.post']). exclude: delete site-specific chrome we kept. keep: protect a section (sidebar, dialog, form) that smart mode would strip.
renderNoForce the headless browser (JS execution)
actionsNoOrdered browser interactions before capture (forces a render). Each is one object: {"click":"#sel"}, {"clickText":"Accept"} (click by visible text — dismiss a consent wall without knowing its CSS), {"type":{"selector":"#q","text":"shoes"}}, {"scroll":"bottom"}, {"wait":1000}, {"waitForSelector":".results"}. Add "optional":true to skip a miss, or "timeoutMs":N to bound one action.
cookiesNoCookies to send as name→value — the simple way to scrape behind a login
countryNoISO country code for the proxy exit, e.g. 'us'
extractNoStructured-extraction schema: { field: "css selector" | { selector, attr, all, fns } }. `fns` is a transform pipeline run on the value — e.g. { "price": { "selector": ".price", "fns": ["amount_from_string"] } } returns a number, not text. Functions: amount_from_string, amount_range_from_string, convert_to_float/int/str, trim, lower, upper, {regex_search|regex_find_all: "pat"}, {replace:{from,to}}, {join:","}, {select_nth:0}, length, unique, max, min, average, product.
formatsNoAdditional formats to return together in payload.formats, e.g. ['markdown','text']
ai_promptNoNatural-language instruction — the LLM turns the page into structured JSON
ai_schemaNoJSON Schema for deterministic AI extraction; returned under payload.ai.data
app_stateNoMine the page's own hydration state (Next.js __NEXT_DATA__, Nuxt, embedded JSON islands) into payload.metadata.appState. This is where SPAs keep the real data — prices behind a picker, stock, download counts, listings — even when the DOM shows only a shell, so it often answers the question without a browser render. true/'auto': pruned to the informative parts (recommended). 'raw': the complete blobs, up to 512KB.
preset_idNoRun a stored parser preset (see save_parser_preset) instead of passing `extract` selectors. Results land in payload.data exactly the same way, and the run is scored so the preset can detect decay and self-heal.
highlightsNoWith `query`: also return the N most relevant passages in payload.highlights
links_modeNoLink rendering. inline (default): [text](url). footnote: URLs moved to a numbered reference list at the end. strip: keep only the link text — cuts 30-48% of the tokens on link-dense pages when you only need the prose.
max_tokensNoCap the markdown at ~this many tokens, cutting at a section boundary (never inside a table or code block) and noting how much was omitted
frontmatterNoPrepend YAML front-matter (title, url, canonical, description, author, date) so the markdown is self-contained for RAG/Obsidian pipelines
images_modeNoinline (default) keeps ![alt](url); 'alt' keeps only alt text; 'strip' removes images
content_modeNosmart (default): whole page minus nav/footer/cookie chrome. article: Readability main article only (news/blogs). full: entire body as-is.
content_modesNoReturn several content scopes from ONE fetch under payload.contents (e.g. compare smart vs full)
include_linksNoReturn all de-duplicated absolute page links in payload.links
reveal_hiddenNoRender tier only: before capturing, open <details>/accordions and click through every tab, appending each revealed panel to the page. Use it for tabbed code samples or spec accordions where a plain render captures only the visible variant.
fetch_resourceNoRegex matched against the page's network requests: the first matching response's BODY becomes the result instead of the page HTML (e.g. '/api/products' to get an SPA's JSON directly). Forces a render. Fails with 504 if nothing matches.
summary_sectionsNoAppend 'Links on this page' / 'Images on this page' sections — handy when deciding the next hop

TDQS

A4.3/5.0
Behavior5/5

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

With no annotations present, the description carries the full disclosure burden and exceeds it. It reveals the residential proxy usage, Chrome TLS fingerprint default, conditional headless-browser escalation, default Markdown behavior, and content_mode 'smart' details. This gives an agent an accurate mental model of how the tool will actually behave, including escalation and output preprocessing.

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

Conciseness4/5

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

The description is dense but deliberately structured: core purpose first, then network/browser behavior, then optional extraction and output defaults. It avoids filler, though one or two long sentences pack a lot of clauses. For a tool with this many capabilities, it is appropriately sized and front-loaded.

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

Completeness4/5

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

The description, together with the fully documented schema, covers the main behaviors, output formats, extraction options, and important edge-case choices like engine escalation and raw HTML fallback. It does not define a high-level response envelope or error semantics, but the parameter-level payload descriptions compensate well. Given the tool's complexity, this is a high-quality, complete definition.

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

Parameters3/5

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

Schema description coverage is 100%, and the schema itself contains rich explanations for all 31 parameters. The main description adds strategic framing for a few features (e.g., extraction via CSS selectors or natural language) but does not need to re-document parameters. This is the appropriate baseline-3 case where the schema carries the heavy lifting.

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

Purpose5/5

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

The description opens with a precise verb and resource: 'Scrape a single web page through a residential proxy.' It clearly distinguishes this tool from the crawl and search siblings by emphasizing single-page scraping. It also enumerates the major processing modes (Markdown, HTML, text, structured extraction, AI extraction) without ambiguity.

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

Usage Guidelines4/5

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

The description establishes clear context: it is for one page, with optional extraction modes. It names helpful routing details such as 'use this to DISCOVER the API, then fetch_resource to return it directly' and distinguishes raw no-JS/SEO fallback via format 'html'. It does not explicitly state when to prefer crawl or search_and_read instead, but the single-page framing and sibling names make the intended usage reasonably inferable.

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

search_and_readA

Search the live web, fetch the top organic pages as clean Markdown, and return citation-ready numbered sources plus one token-bounded context string ready for an AI prompt. Use this when the goal is answering/researching, and use search when raw SERP structure or a specialized vertical is needed.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoSearch UI language, e.g. 'en' or 'it'
queryYesThe research/search query
top_nNoTop organic pages to fetch (default 3, max 5)
engineNoSearch engine (default google)
countryNoISO country code for search and proxy geo
max_tokensNoMaximum estimated tokens in the assembled context (default 8000)
fetch_contentNoFalse returns snippet-only context without fetching result pages

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It discloses the core behavior (live search, fetching top pages, returning Markdown and a context string) and adds context about citation-ready sources and token bounding. It doesn't mention any side effects or rate limits, but for a read-only search tool this is reasonable. It also doesn't describe the fetch_content=false variant, leaving that to the schema.

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

Conciseness5/5

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

Two sentences, zero filler. The first sentence front-loads the action and output, the second gives concise routing guidance. Every word earns its place.

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

Completeness4/5

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

The tool has 7 parameters, no output schema, and no annotations. The description covers the operational flow and output format (numbered sources + context string) enough for an agent to call it correctly. It doesn't describe all parameter options, but the schema does. Minor gaps like the fetch_content=false behavior are left uncovered, but the core contract is clear.

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

Parameters3/5

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

Schema coverage is 100% (every parameter has a description), so the baseline is 3. The description adds minimal parameter-specific meaning: 'top organic pages' maps to top_n, 'token-bounded' hints at max_tokens, but it doesn't go beyond the schema. No parameter details are missing.

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

Purpose5/5

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

The description opens with a specific multi-step verb phrase: 'Search the live web, fetch the top organic pages as clean Markdown, and return citation-ready numbered sources plus one token-bounded `context` string.' This clearly distinguishes the tool from the sibling `search` by naming the output format and the intended research/answering use case.

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

Usage Guidelines5/5

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

It explicitly states when to use this tool ('when the goal is answering/researching') and when to use the alternative ('use `search` when raw SERP structure or a specialized vertical is needed'), naming the sibling and the discriminating condition.

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

search_bulkA

Paginate ONE search query asynchronously and merge deduplicated organic results. Page-one AI Overview/PAA/Knowledge Graph/answer enrichments are retained; set render:true to request those Google JS blocks. Billed per page actually fetched, with unavailable pages refunded.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoUI language, e.g. 'en'
nfprNoDisable Google spelling correction
safeNoGoogle SafeSearch setting
uuleNoEncoded geo token or raw coordinates
queryYesThe search query to paginate
deviceNoSERP device shape
engineNoSearch engine (default google)
renderNoForce rendering to capture page-one Google JS enrichments
browserNoFetch-path browser identity
countryNoISO country code, e.g. 'us'
webhookNoPublic URL to POST the finished job to
locationNoSearch location, e.g. 'Milan, Italy'
wait_forNoRendered path CSS selector for late panels
max_pagesNoMax pages to fetch (1-10, default 5). Stops early when Google has no more pages.
search_typeNoVertical to paginate (default search)
google_paramsNoAdditional Google query parameters

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It discloses key behaviors: asynchronous execution, deduplication, retention of page-one enrichments, the effect of setting render:true, and billing logic with refunds. It does not mention rate limits or authentication, but it covers the operational traits an agent needs to know before invoking, so it is strong.

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

Conciseness5/5

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

Three sentences with zero filler. The main function is front-loaded, then the enrichments and billing are stated compactly. Every sentence earns its place; no redundancy.

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

Completeness3/5

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

Given the tool's complexity (16 parameters, async execution, billing), the description is reasonably complete but omits critical operational details. It does not explain how to retrieve the results (e.g., job ID or status endpoint), nor the output format. The sibling 'search_bulk_status' suggests there is a status mechanism, but the description does not mention it, leaving an agent to infer the interaction pattern.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description adds meaning by linking 'render:true' to the capture of Google JS blocks (a functional hint), and clarifies billing per page which affects usage. It does not elaborate on other parameters like wait_for or google_params, but the added hints are beneficial and go beyond simple schema descriptions.

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

Purpose5/5

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

The description states a specific verb ('Paginate') and resource ('ONE search query'), and explicitly mentions the async, deduplicated, and merged nature of organic results. It clearly distinguishes itself from a single-page search tool by emphasizing pagination and consolidation, making it easy for an agent to differentiate from siblings like 'search'.

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

Usage Guidelines3/5

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

The description implies usage for paginating a search across multiple pages, but it does not explicitly compare with alternatives like 'search' or 'search_and_read'. There is no 'when to use' versus 'when not to use' guidance, nor mention of the status-tracking sibling tool. The context is clear that it is for bulk retrieval, but lacks explicit routing.

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

search_bulk_statusA

Poll a bulk search job for progress and merged organic results. Polls are incremental: pass the previous response's nextCursor as since to receive only the organic results gathered after your last poll.

ParametersJSON Schema
NameRequiredDescriptionDefault
jobIdYesThe bulk search job id returned by search_bulk
sinceNoOrganic cursor from the previous poll's `nextCursor` — returns only newer results

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It reveals a key behavioral trait: incremental polling where only newer results are returned via the since parameter. This is non-obvious and valuable. It does not cover job completion detection or error handling, but the core polling behavior is well explained.

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

Conciseness5/5

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

The description is exactly two sentences: the first states the purpose, the second explains the incremental polling mechanism. Every sentence earns its place, and the core purpose is front-loaded.

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

Completeness4/5

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

The description adequately explains the tool's main purpose and usage pattern, and even covers a subtle point (incremental results). Since there is no output schema, it would be helpful to mention what the response contains, but the phrase 'progress and merged organic results' gives a reasonable summary. Overall it's complete enough for an agent to invoke correctly.

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

Parameters3/5

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

The input schema already describes both parameters (jobId and since) with 100% coverage, so the description doesn't need to add much. It does reinforce that jobId comes from search_bulk and since reuses nextCursor, but essentially restates what the schema already provides. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool's purpose: polling a bulk search job for progress and merged organic results. It uses a specific verb ('Poll') and resource ('bulk search job'), which distinguishes it from related tools like search_bulk that initiate jobs. The incremental polling behavior further clarifies its role.

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

Usage Guidelines4/5

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

The description provides clear context that this tool is used after a bulk search job is created, and explains the incremental polling pattern (passing nextCursor as since). However, it does not explicitly mention alternatives or when not to use this tool compared to other status polling siblings.

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

seo_auditA

Audit a URL's SEO in one call: fetches it twice — as a pure HTTP bot (no JS) and fully rendered — and returns both views (title, description, canonical, h1, word count) plus the diff (JS-only content, changed title/description, canonical missing without JS) and bot-facing meta (robots, Open Graph, JSON-LD types). Use this instead of scraping manually when checking how a page indexes.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe page URL to audit
countryNoISO country code for the proxy exit, e.g. 'us'
no_renderNoSkip the rendered pass (cheaper — returns the no-JS view only, no diff)

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations, the description carries full behavioral disclosure. It explains the dual-fetch behavior, what each view contains, and the diff. It also doesn't mention side effects, but as an audit it's implicitly read-only. The no_render parameter's effect is also disclosed. Minor omission: no mention of rate limits or auth, but that's not critical for a read tool.

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

Conciseness5/5

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

Two sentences, no fluff. The core purpose is front-loaded, and details are packed efficiently. Every clause earns its place, covering behavior, outputs, and usage guidance.

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

Completeness4/5

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

For a tool with no output schema, the description lists the exact return fields (title, description, canonical, h1, word count, diff, meta). It explains the no-JS vs rendered distinction and the diff. It doesn't specify the response format (e.g., JSON structure) but enumerates enough for an agent to infer the shape. No critical missing information for calling it correctly.

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

Parameters4/5

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

Schema coverage is 100% with descriptions for all three parameters. The description adds value by explaining how parameters interplay: it mentions the dual fetch and the diff, making the no_render parameter's role clearer in the audit context. It also clarifies which fields are returned, enriching understanding of 'url' and 'country' usage.

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

Purpose5/5

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

The description starts with 'Audit a URL's SEO in one call' and details exactly what it does: fetches twice (bot and rendered), returns both views, the diff, and bot-facing meta. It explicitly contrasts with manual scraping, clearly distinguishing it from the sibling 'scrape' tool.

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

Usage Guidelines5/5

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

The final sentence, 'Use this instead of scraping manually when checking how a page indexes,' provides explicit guidance on when to choose this tool over alternatives. While it doesn't list other tools by name, it sets a clear decision rule.

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

whitelist_ipA

Manage IP-auth whitelisting on a proxy service (Residential Basic, Datacenter, ISP, IPv6, Mobile): add or remove an IP, or list the current entries. A whitelisted machine uses the proxies without username/password — required for the Mobile V2 IP-auth proxy list. Residential Premium/Private use user:pass auth and don't need this.

ParametersJSON Schema
NameRequiredDescriptionDefault
ipNoThe IP to add/remove (required for add and remove)
ispNoMobile add: ISP code, e.g. 'tmobile'
ttlNoMobile add: sticky session TTL in seconds
cityNoMobile add: city slug
actionYesWhat to do with the order's whitelist
regionNoMobile add: region slug
stickyNoMobile add: keep the same IP per port
countryNoMobile add: geo targeting for the ports, e.g. 'us'
orderIdYesThe proxy service's orderId (from list_proxies)
protocolNoMobile add: protocol for the allocated ports
ports_countNoMobile add: number of ports to allocate

TDQS

A4.1/5.0
Behavior3/5

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

There are no annotations, so the description carries the full burden. It does disclose a key behavioral consequence: a whitelisted machine uses the proxies without username/password. However, it does not explain whether changes take effect immediately, whether adding an IP overwrites or appends, what the list action returns, or how removals affect active sessions.

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

Conciseness5/5

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

The description is two efficient sentences: the first defines purpose and actions, the second gives usage context. Every clause earns its place, and the most important information is front-loaded.

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

Completeness3/5

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

The description plus the fully covered schema is enough to understand what the tool does and when to use it. However, the tool has 11 parameters that are action-dependent, and the description does not clarify which parameters apply to add vs remove vs list, nor does it describe the output of the list action beyond 'current entries'. This leaves meaningful gaps for correct invocation across all variants.

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

Parameters3/5

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

The input schema provides descriptions for all 11 parameters, so the schema already carries the parameter-level documentation. The description adds no new parameter-specific meaning beyond the general auth context and the action names, which mirror the action enum. This is a solid baseline-3 case.

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

Purpose5/5

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

The description names a specific resource (IP-auth whitelisting on a proxy service) and explicitly enumerates the actions available (add, remove, list). It also scopes the feature to specific proxy types, which clearly distinguishes it from sibling tools like list_proxies or generate_proxies.

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

Usage Guidelines5/5

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

The description explicitly states when this tool is required ('required for the Mobile V2 IP-auth proxy list') and when it is not needed ('Residential Premium/Private use user:pass auth and don't need this'). This gives the agent clear selection criteria and prevents unnecessary or incorrect calls.

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. Dates show when Glama detected each change.

  1. 25 tool updatesv0.9.0
    • First observedbatch
    • First observedbatch_status
    • First observedcollector_run_status
    • First observedcrawl
    • First observedcrawl_status
    • First observedcreate_dataset
    • First observeddataset_status
    • First observedgenerate_parser
    • First observedgenerate_proxies
    • First observedheal_parser_preset
    • First observedlist_collectors
    • First observedlist_parser_presets
    • First observedlist_proxies
    • First observedmap
    • First observedparser_preset_stats
    • First observedproxy_locations
    • First observedrun_collector
    • First observedsave_parser_preset
    • First observedscrape
    • First observedsearch
    • First observedsearch_and_read
    • First observedsearch_bulk
    • First observedsearch_bulk_status
    • First observedseo_audit
    • First observedwhitelist_ip

TDQS

A3.9/5.0
Disambiguation3/5

Several tools share overlapping search/fetch behavior: search, search_bulk, search_and_read, run_collector, and create_dataset all involve searching the web, while scrape, batch, crawl, and search_and_read all fetch page content. Descriptions do differentiate them, but an agent could easily misselect between search, search_bulk, and search_and_read for a given task.

Naming Consistency4/5

Most tools follow a clear snake_case verb_noun pattern with predictable async pairs such as create_dataset/dataset_status, run_collector/collector_run_status, and crawl/crawl_status. Minor deviations like map, batch, seo_audit, and search_bulk break the pattern slightly but do not create serious confusion.

Tool Count3/5

At 25 tools, this sits right at the heavy end of the range; the size is justified by the broad domain covering proxies, search, scraping, collectors, datasets, and parser presets. Still, the five async status pollers and five parser-related tools make the surface feel larger and more burdensome than strictly necessary.

Completeness4/5

Core workflows are well covered: proxy listing/generation/locations/whitelisting, single and bulk scraping, search variants, collector execution, dataset creation, parser preset lifecycle, and SEO audit. Notable gaps include no way to delete parser presets, cancel async jobs, or list past datasets/jobs, but agents can work around these limitations in most scenarios.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

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

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

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