quanticdata-mcp
Server Details
Live web access for agents: scrape, SERP search, crawl/map, 74 collectors, datasets, proxies.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
- Repository
- quantumproxies/quanticdata-mcp-server
- GitHub Stars
- 0
- Server Listing
- QuanticData MCP server
Available Tools
25 toolsbatchARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | summary: per-URL metadata only, no page content — the light mode for audits | |
| urls | Yes | URLs to scrape | |
| engine | No | Fetch engine (default auto) | |
| format | No | Output format (default markdown) | |
| country | No | ISO country code for the proxy exit | |
| content_mode | No | Per-URL content scope: smart (default) | article | full |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true and openWorldHint=true, so the safety profile is known. The description adds meaningful behavior beyond that: the asynchronous execution, the returned job id, the polling obligation, and the summary-mode payload distinction. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler; the core action and async model are front-loaded, and the mode guidance is a meaningful second sentence. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers the essential invocation model: async batch, job id, polling via batch_status, and the main mode decision. The schema handles parameter syntax, though the description could briefly mention default-mode results or result shaping, which is a minor gap for an async tool with no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already has 100% parameter coverage with descriptive enum and field text. The description still adds semantic value by explaining the 'shared options' concept and detailing what summary mode returns (title, description, canonical, contentLength) versus full page content.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb-resource pair ('Scrape many URLs asynchronously') and clearly signals an async job model. The 'many URLs' framing separates it from single-URL siblings like scrape, and the mention of batch_status immediately ties the batch API to its status companion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete use condition ('For SEO/status audits over many pages set mode 'summary'') and implies batch is for multi-URL workloads while polling is done via batch_status. It stops short of explicitly naming alternatives or saying when not to use batch, but the async/many-URL framing is enough contextual guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
batch_statusARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| jobId | Yes | The batch job id returned by batch | |
| since | No | Item cursor from the previous poll's `nextCursor` — returns only newer items | |
| include_content | No | Include each item's full page content (default false — metadata only) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as read-only and idempotent; the description adds crucial behavioral context that annotations do not cover: results are incremental and cursor-based, and page content is omitted by default. This is exactly the kind of stateful behavior an agent needs to know before calling the tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with purpose, then usage mechanics, then a default-behavior warning. Every sentence earns its place and there is no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description tells the agent it will receive progress and per-URL results, and it explains the cursor loop and the content flag. It stops short of specifying completion conditions or the exact response envelope, but it is sufficient for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description adds value by tying `since` to the previous `nextCursor` and advising `include_content` only when content is needed. It reinforces the schema's meaning without merely repeating it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ('Poll a batch job') and clarifies the result scope ('for progress and per-URL results'). This separates it from creation tools like batch and other status tools by naming the resource type and the polling behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear operational guidance: pass the previous response's `nextCursor` as `since` for incremental polls, and enable `include_content` only when page text is actually needed. It does not explicitly name alternative tools or state when not to use this tool, so it falls slightly short of the top score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
collector_run_statusARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | Return rows as JSON (default) or CSV text | |
| run_id | Yes | The run id returned by run_collector |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, so the description only needs to add async/status context. It does: 'Use after run_collector returned 202/async' plus the list of status values and the partial flag, which tells the agent this is a polling/read operation returning progress information. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly written sentences put the core action first, list the return fields compactly, and add only the workflow trigger and format option. No filler or unnecessary repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covered: when to call, statuses, result fields, format switch, and safety profile via annotations. Without an output schema, it could say a bit more about the meaning of the partial flag and failure/not-found behavior, but for a simple async status fetch it is nearly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema describes both parameters at 100% coverage, so the description need not re-document them. It does clarify the csv format behavior, but that mostly mirrors the schema's 'Return rows as JSON (default) or CSV text' description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description starts with a specific verb and resource: 'Fetch a Collector run by run_id', then enumerates exactly what is returned: status, result count, cost, partial flag, and result rows. This distinguishes it from run_collector, which launches the run, and from other status tools by naming the Collector-specific resource.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to use this tool 'after run_collector returned 202/async', tying it to the run_collector workflow. It doesn't name exclusions or alternatives, but the async handoff condition is clear enough for an agent to choose this over launch tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
crawlARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Seed URL | |
| depth | No | Max link depth (default 3) | |
| limit | No | Max pages (default 50) | |
| country | No | ISO country code for the proxy exit | |
| exclude | No | URL substrings/globs to exclude | |
| include | No | URL substrings/globs to include | |
| content_mode | No | Per-page content scope: smart (default) | article | full |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint and openWorldHint, and the description adds meaningful behavioral context: the crawl is asynchronous, returns a job id, converts pages to Markdown, and requires polling via crawl_status. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two efficient sentences capture the core action, the async nature, the output format, and the follow-up polling step. Every phrase 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.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is complete for correct invocation: it names the required resource (seed URL), explains what will happen asynchronously, and tells the agent how to track progress via crawl_status. With the schema covering parameters and annotations covering read-only/open-world semantics, nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all seven parameters are already documented in the schema. The description adds general context (seed URL, BFS crawl) but does not need to explain individual parameters further.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('crawl'), the resource ('a site from a seed URL'), and the key behavior (asynchronous BFS, converting pages to Markdown). It also differentiates itself from siblings by describing a site-wide crawl while referencing crawl_status for polling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description establishes clear usage context: start an asynchronous BFS crawl from a seed URL, then poll with crawl_status. It does not explicitly name alternatives like scrape or map, but the intended use case is clear enough for an agent to select this tool over single-page tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
crawl_statusARead-onlyIdempotentInspect
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).
| Name | Required | Description | Default |
|---|---|---|---|
| jobId | Yes | The crawl job id returned by crawl | |
| since | No | Page cursor from the previous poll's `nextCursor` — returns only newer pages | |
| include_content | No | Include each page's full content (default false — metadata only) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint and idempotentHint annotations, the description discloses key behaviors: incremental polling with a cursor, pages omitting content by default, and a concrete size warning for include_content. This is valuable operational context an agent needs before invoking the tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences: the first defines the tool's purpose and core polling behavior, the second covers the cursor contract and the content-size caveat. Every sentence earns its place, with no filler or repetition of schema details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, but the description references nextCursor, pages crawled so far, and metadata-only default, which tells the agent what to expect from responses. Combined with full parameter coverage and clear behavioral notes, nothing essential is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds meaning beyond the schema: it explains how since relates to nextCursor from a previous poll and when include_content is worth the cost. This materially improves parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Poll a crawl job for progress and the pages crawled so far.' This clearly identifies the tool's function and scope, and the resource 'crawl job' differentiates it from sibling status tools like batch_status or collector_run_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for use: polling is incremental and should build on a previous response's nextCursor. It does not explicitly name alternatives or state when not to use it, but the polling mechanics and incremental contract make the intended usage evident.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_datasetAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limits | No | ||
| prompt | Yes | What dataset you want, in plain language (e.g. 'coffee roasters in Portland with email and phone') | |
| columns | No | Columns to extract; omit to let the planner infer them | |
| country | No | ISO country code for the proxy exit geo | |
| sources | No | Domain allow/deny lists | |
| webhook | No | Public URL to POST the finished dataset to |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only signal readOnlyHint=false and openWorldHint=true, but the description discloses key runtime behavior: it performs live web searches, scrapes external sites, returns an async job id, requires polling via dataset_status, and has a billing model with a hard cost cap and refund. This is substantial behavioral context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four tight sentences: purpose, pipeline, async/polling behavior, and cost model. It is front-loaded with the core purpose and every sentence adds necessary operational information without fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex async, billed, web-scraping tool with no output schema, the description covers the critical operational points: job id, polling endpoint, cost model, and budget safety. It relies on the input schema for parametric details, which is reasonable given 83% schema coverage, though it does not explain the final dataset delivery format or webhook behavior beyond the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is high (83%), so the baseline is 3, and the description adds extra meaning for the cost-related parameters: email/phone fields are premium and billed only when found, and limits.max_cost_usd is a hard cap with refunds for unspent budget. This clarifies semantics that the bare schema descriptions ('Budget cap for the run') do not fully convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('Build') and resource ('structured dataset') and describes the full pipeline: planning queries, searching multiple engines, mapping sites, and scraping validated rows. This clearly distinguishes it from sibling tools like search, scrape, crawl, or map, since it is end-to-end dataset construction from a plain-language prompt.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear context: use this tool when you want a structured dataset from a natural-language prompt, and it explains that the tool itself handles search and scraping. However, it does not explicitly name alternatives or state when NOT to use it, 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.
dataset_statusARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | summary: progress + steps only, no rows | |
| jobId | Yes | The dataset job id returned by create_dataset | |
| since | No | Row cursor from the previous poll's `nextCursor` — returns only newer rows |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, and the description adds useful behavior beyond that: polls are incremental, summary mode reduces payload, and completed jobs return signed CSV/JSON download URLs. This gives the agent a solid behavioral model without contradicting annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences each carry essential information: what the tool returns, how incremental polling works, how to lighten the poll, and what completion yields. There is no filler or repetition of annotation data.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the key outputs an agent needs to know: progress, steps, rows, `nextCursor`, and signed download URLs. There is no output schema, so a bit more detail on status values or pagination edge cases could be helpful, but this is complete enough for correct invocation and basic handling of responses.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the description does not need to compensate for missing parameter docs. It does add a small amount of context, such as calling summary mode a 'light poll' and tying `since` to the prior response's `nextCursor`, but this largely mirrors the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Poll a dataset job' for progress, collection trace, and rows. This clearly distinguishes dataset_status from sibling status tools like batch_status, crawl_status, and collector_run_status by naming the exact job type it targets.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context: incremental polling with `since`, the `summary` mode for lighter polls, and download URLs on completion. It does not explicitly name alternatives or say when not to use this tool, but the dataset job framing makes the intended context unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_parserARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | The page to learn the layout from | |
| html | No | Markup you already have, instead of fetching a URL (no proxy bandwidth used) | |
| fields | No | What to extract, as { field_name: "plain-English description" } — e.g. { "price": "the product price", "specs": "every spec bullet, as a list" }. Max 25. | |
| prompt | No | Free-text alternative to `fields` — the model picks and names the fields itself | |
| render | No | Learn from the browser-rendered DOM instead of the raw HTML (needed for SPA pages) | |
| country | No | ISO country code for the proxy exit |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint and openWorldHint annotations, the description adds valuable behavioral context: the LLM runs only once, later extraction is deterministic and free, selectors are validated against the page before being returned, and report/coverage indicate field reliability. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each earning its place: how it works, when to use it, and what reliability signals to expect. The core action is front-loaded, and there is no fluff or repetition of schema details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema, the description explains what is returned (CSS selectors), how to use it, and how to judge reliability via report/coverage. It could describe the report/coverage value shapes more precisely, but the essential invocation information is present and well integrated with the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all six parameters thoroughly. The description adds general context about the returned parser being used as an `extract` argument, but it does not need to add parameter-level semantics; baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Look at a page ONCE with an LLM and get back CSS selectors') and explains the tool's output and lifecycle. It also distinguishes it from ai_prompt by describing when each is appropriate, so an agent can separate it from the alternative without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use guidance: 'Use this instead of ai_prompt whenever you will scrape more than a couple of pages of the same shape.' It also implies the exclusion case (one-off scrapes) and tells the agent how to use the result on later scrapes via the `extract` argument.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_proxiesAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| ip | No | Mobile V2 only: a whitelisted IP (see whitelist_ip) to fetch the IP-auth proxy list instead of user:pass proxies | |
| asn | No | ASN for Residential/Datacenter Basic targeting, e.g. 'AS12345' | |
| isp | No | ISP code for Residential Premium / Mobile V2 targeting (from proxy_locations tree, e.g. 'tmobile') | |
| city | No | City (slug from proxy_locations where applicable; 'all' for any) | |
| state | No | State/region (Residential Premium & Mobile V2: use the slug from proxy_locations; 'all' for any) | |
| filter | No | Residential Premium / Mobile V2 pool filter (omit for the full pool) | |
| format | No | Output string format (default user:pass@host:port) | |
| strict | No | Residential/Datacenter Basic: true allows fallback to nearby locations when the exact target has no IPs | |
| country | No | Country code for geo targeting, lowercase, e.g. 'us' | |
| gateway | No | Mobile V2 region gateway (default ww) | |
| orderId | Yes | The proxy service's orderId (from list_proxies) | |
| protocol | No | Proxy protocol (default http) | |
| quantity | No | Number of proxy strings (default 10) | |
| rotation | No | rotating (default): new IP per request. sticky: keep the IP for sessionTime. static: IPv6 only, fixed session with no TTL. | |
| sessionTime | No | Sticky session duration in minutes (default 10; Residential Basic/Datacenter minimum 3) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already signal readOnlyHint=false and destructiveHint=false. The description adds useful behavioral context: generated strings include credentials, are ready-to-use, and 'plug straight into any HTTP client, e.g. curl -x'. It does not mention potential side effects like quota consumption, but it does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four focused sentences: purpose, supported capabilities, prerequisites, and output usability. Every sentence earns its place, with the most important action and resource stated first. No filler or repetition of schema details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 15 parameters and no output schema, the description covers the essential context: what it produces, which sibling tools supply required inputs, supported modes, and how the output can be consumed. It does not explicitly state that the result is an array, but the quantity parameter and 'proxy endpoint strings' phrasing make that inferable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds value beyond the schema by mapping orderId to list_proxies and targeting codes to proxy_locations, which helps an agent know where parameter values come from. It also usefully summarizes geo targeting and output format capabilities, though the schema already documents individual fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Generate ready-to-use proxy endpoint strings (credentials included) from one of the account's active proxy services'. It also lists the covered proxy types and clearly separates this tool from sibling tools like list_proxies and proxy_locations by focusing on generation of endpoint strings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Use list_proxies first to get the orderId, and proxy_locations for valid targeting codes,' giving clear sequencing and prerequisite guidance. It does not enumerate when to avoid this tool, but the prerequisite direction is clear enough to prevent improper use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
heal_parser_presetAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | Bypass the cooldown between heals | |
| preset_id | Yes | The preset id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond the annotations by disclosing that the tool refetches the source page, only adopts new selectors if they extract more than current ones, leaves the preset untouched otherwise, and is not billed in that case. This is meaningful behavioral context that the annotations (readOnlyHint false, destructiveHint false, openWorldHint true) do not provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the action and then packs in the key behavioral, conditional, and billing details. Every clause earns its place with no repetition or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter mutation tool with full schema coverage, the description explains the trigger, the refetch behavior, the acceptance condition, and the billing consequence. No output schema exists, but the description sufficiently conveys what will happen for an agent to decide and invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both `preset_id` and `force` are already documented in the input schema. The description does not add anything about parameter meanings beyond the schema, so it does not need to compensate. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with a specific verb and resource: 'Regenerate a preset's selectors now'. It clarifies this is the manual trigger for the automatic repair, which distinguishes it from any automatic repair process and from sibling tools like save_parser_preset or generate_parser. The `heal` framing and the condition about adopting selectors only if they extract more makes the tool's unique role unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context by calling this 'the manual trigger for the automatic repair', so an agent can infer it is for manually forcing a repair that would otherwise happen automatically. However, it does not explicitly state when to prefer this over alternatives, nor does it mention any conditions or exclusions beyond the improvement check.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_collectorsARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | Optional category filter (e.g. 'local', 'ecommerce', 'jobs', 'news', 'travel', 'leads', 'finance', 'dev', 'gaming', 'osint', 'research', 'classifieds', 'knowledge') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, and non-open-world behavior. The description adds the return fields (slug, input/output schema, example input, price, health) and the pay-per-success billing model, which are not conveyed by the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single unwieldy paragraph with dozens of example collector names, which buries the key facts. While the examples provide useful context, the length hurts scannability and the structure is not front-loaded beyond the first sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with one optional filter and no output schema, the description adequately covers what is returned, the billing model, and the nature of the collectors. A formal return type or pagination behavior would be nice but is not essential here.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema fully documents the optional category parameter with examples (100% coverage). The description adds nothing about the parameter itself, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ('List the ready-made Collectors') and then defines what Collectors are with concrete examples. This clearly distinguishes it from siblings like run_collector, scrape, or 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains that Collectors are run with a semantic input instead of URLs, which implies when this tool is useful for discovering them. However, it does not explicitly state when to use this over alternatives or mention exclusions, 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_parser_presetsARead-onlyIdempotentInspect
List your stored parser presets with their version, health stats and changelog.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, and the description is consistent with those. It adds some useful context about the response contents (version, health stats, changelog), but does not mention pagination, ordering, or any operational quirks. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single efficient sentence with no filler. The action and key output details are front-loaded, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only, idempotent list tool with no output schema, the description gives enough to invoke it correctly: what is listed and what fields are returned. There are no serious gaps for this level of complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so there are no parameter semantics to document. The description focuses on the output instead, which is appropriate for a parameterless list operation. This aligns with the baseline for 0-param tools.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List'), names the exact resource ('your stored parser presets'), and states the included fields (version, health stats, changelog). This makes the tool's purpose immediately clear and distinguishes it from other parser-related siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this tool should be used for getting an inventory/overview of stored presets, but it does not explicitly state when it should be used over alternatives like parser_preset_stats or save_parser_preset. This is acceptable but leaves routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_proxiesARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max services returned (default 50) | |
| active | No | true: only non-expired services (recommended). false: only expired. Omit for all. | |
| offset | No | Pagination offset (default 0) | |
| planType | No | Only services of this plan type |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, so the safety profile is covered. The description adds useful behavioral context by specifying the breadth of the list and the key output fields, including the orderId needed downstream. It does not cover pagination behavior, but the schema documents the relevant parameters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler. The core action and scope are front-loaded, followed by the useful downstream pointer. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only listing tool with no output schema, the description compensates well by naming the returned fields, enumerating proxy types, and explaining why an agent should call it first. Combined with the fully documented optional parameters and safe annotations, nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with all four parameters already clearly explained and the planType enum fully listed. The description adds no additional parameter-level meaning beyond contextualizing the orderId in the output, 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') with a precise resource ('the account's proxy services'), enumerates all covered types, and lists the returned fields. It clearly differentiates itself from siblings like generate_proxies by explicitly naming that tool as the follow-up consumer of the returned orderId.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context with 'Call this first to see which proxy plans are available' and ties directly to generate_proxies. It does not mention exclusions or alternative tools for proxy locations, but the intended sequencing is explicit enough for an agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mapARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The site URL to map | |
| limit | No | Max URLs returned (default 100). `total`/`summary` always cover the whole site. | |
| search | No | Only return URLs containing this substring — use this to narrow before raising limit | |
| group_by | No | path: return the path tree with per-prefix counts instead of the flat URL list | |
| includeSubdomains | No | Include subdomains of the seed host |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark readOnlyHint and openWorldHint as true, and the description adds valuable behavioral context: the URL discovery sources, default limit, return of `total` and `summary`, and the `group_by` path-tree mode. It goes beyond annotations by describing the output shape and narrowing semantics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose and uses three focused sentences. It packs return-shape details and parameter guidance without redundancy, though it is slightly dense in the middle.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description adequately explains what the tool returns (limit, total, summary, path tree). It covers the main behaviors and parameter semantics, but does not mention any rate limits or auth needs; for a read-only mapping tool this is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds meaningful semantic detail beyond the schema, particularly for `search` ('substring filter — the primary way to find specific pages') and `group_by` ('path tree with counts instead of URLs').
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Discover a site's URLs fast' using robots.txt/sitemaps/homepage links. Explicitly differentiates from a full crawl, which distinguishes it 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Offers clear guidance: use map for fast URL discovery without a full crawl. It also explains when to use the `search` parameter as the primary way to find specific pages, giving the agent actionable routing criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
parser_preset_statsARead-onlyIdempotentInspect
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).
| Name | Required | Description | Default |
|---|---|---|---|
| preset_id | Yes | The preset id returned by save_parser_preset |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the safety profile is covered. The description adds valuable behavioral detail beyond that: it computes success rate, mean coverage, and a decayed flag, and even explains the practical meaning of decayed ('the site probably changed'). This goes beyond the structured annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, well-structured sentence that opens with the core purpose and then lists the specific metrics after a colon. There is no filler, repetition, or unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read-only tool, the description conveys the essential output semantics: success rate per field, mean coverage, and decayed status. It does not specify exact return field names or the exact window for 'recent runs', but overall it gives an agent enough context to call the tool and interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema is fully documented at 100% coverage, with preset_id described as 'The preset id returned by save_parser_preset'. The tool description itself does not expand on the parameter, but because the schema already covers it, the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource (a stored parser preset) and the purpose (assessing how well it is still working). It names the specific output concepts—success rate per field, mean coverage, and decayed status—which distinguishes it from action-oriented siblings like heal_parser_preset and save_parser_preset.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when this tool is relevant: checking whether a stored parser is still reliable or has decayed. It does not explicitly name alternatives or state when not to use it, but the health/status framing is sufficient for an agent to infer its role among sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
proxy_locationsARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| level | No | countries (default) | states (needs country) | cities (needs country) | asns | tree (full location tree: residentialpremium, mobile/mobile_v2, datacenter) | |
| state | No | Cities only: filter by state | |
| country | No | Country code, required for states/cities, optional filter for asns | |
| planType | Yes | The plan type to look up (same value as list_proxies planType) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, so the safety profile is covered. The description adds genuine behavioral context beyond annotations: the tree returns a hierarchy (countries → regions → cities → ISPs), is tied to specific plan categories, and can be large. This helps the agent anticipate response size and structure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loads the core purpose, and every clause earns its place: the value categories, the generate_proxies relationship, the tree-level guidance, and the size warning. No redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the rich schema, helpful annotations, and the tool's read-only lookup nature, the description is largely complete. It states what the tool returns, when to call it, and calls out the large-tree caveat. The absence of an output schema is partially mitigated by the description naming the returned value categories.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters. The description adds useful high-level context about level values and the tree's purpose, but it does not materially deepen parameter semantics beyond 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Discover') and a clear resource ('valid geo-targeting values for a proxy plan type'), and explicitly ties the tool to a downstream sibling ('before calling generate_proxies'). It also enumerates the exact kinds of values returned, which distinguishes it from proxy-generation and proxy-listing siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description tells the agent when to use the tool ('before calling generate_proxies') and gives concrete sub-guidance on when to choose level 'tree' for specific plan types and for the datacenter gateway list. It does not explicitly name excluded cases or alternative sibling tools, but the usage context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_collectorAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Collector slug from list_collectors, e.g. 'google_maps_places' | |
| async | No | Force background execution and return a run_id to poll | |
| input | Yes | Input fields matching the collector's inputSchema (e.g. { keyword: 'dentist', location: 'Austin, TX', max_results: 20 }) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial behavior beyond annotations: short runs return rows inline, long runs return 202 with run_id and statusUrl, results are billed per delivered row (never for failures), and async forces background execution. This complements the openWorldHint and readOnlyHint annotations effectively.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tightly written sentences with no filler. The action is front-loaded, followed by behavior, billing, and async guidance—each sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema, the description explains the return contract (inline rows vs 202 + run_id/statusUrl), the polling path, billing, and async behavior. An agent has everything needed to call and follow up on the run.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds a concrete input example, references list_collectors for per-collector inputSchema, and explains the async parameter's behavioral effect, going beyond the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Run a Collector by slug with a semantic input.' It names the related tools list_collectors and collector_run_status, which clarifies its distinct role in the workflow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context: consult list_collectors for the inputSchema and example, poll with collector_run_status after long runs, and set async true to force background execution. It does not explicitly contrast against alternative run/execute tools, but the collector-specific workflow is well defined.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_parser_presetAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | A name you'll recognise, e.g. 'amazon product page' | |
| fields | No | The original field descriptions, so a self-heal regenerates the same shape | |
| parser | Yes | The parser to store — normally the `parser` object returned by generate_parser | |
| render | No | The page needs a browser render to show its content | |
| auto_heal | No | Regenerate automatically on decay (default true when source_url is set) | |
| source_url | No | Page to relearn from when the parser decays — required for self-healing |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses a notable behavioral trait: every preset is scored per field, and on decay it automatically regenerates from `source_url` and bumps a version. It also warns that without `source_url` the preset can never self-heal. This adds genuinely useful runtime behavior context beyond the simple read/write hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each earning its place: what the tool does, how it is used later, and the key self-healing caveat. The most actionable information (store, reuse, source_url) is front-loaded, with no filler or redundant restatement of the name or schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with six parameters and nested objects, the description covers the important behavioral consequences (self-healing, version bumps, inability to heal without source_url) while the schema covers parameter details. The only minor gap is that the return value is not explicitly described, but 'reused by id' strongly implies a preset id is returned, so the description remains adequately complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3; the schema already documents `name`, `parser`, `fields`, `render`, `auto_heal`, and `source_url`. The description adds emphasis on `source_url` for self-healing, but that is already reflected in the schema. No significant new parameter meaning is introduced beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Store a generated parser under a name so it can be reused by id.' This clearly distinguishes saving a preset from sibling tools like generate_parser, heal_parser_preset, and list_parser_presets. It also immediately conveys the post-condition (future reuse via preset_id).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear practical context: save a parser if you want to reuse it in scrape via `preset_id` instead of repeating selectors. It also advises providing `source_url` to enable self-healing. It does not explicitly contrast with heal_parser_preset, but the intended workflow is evident enough that no exclusions are needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scrapeARead-onlyInspect
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'.
| Name | Required | Description | Default |
|---|---|---|---|
| toc | No | Prepend a table of contents built from the page headings | |
| url | No | The page URL to scrape (optional only when you pass `html` to convert) | |
| xhr | No | Record 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. | |
| html | No | Convert 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. | |
| mode | No | summary: return only metadata (title, description, canonical, contentLength, status, engine, bytes) with no page content — use this when auditing pages instead of reading them | |
| chunk | No | Segment 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. | |
| query | No | What 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. | |
| engine | No | auto (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. | |
| format | No | Output format (default markdown) | |
| parser | No | Your 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. | |
| render | No | Force the headless browser (JS execution) | |
| actions | No | Ordered 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. | |
| cookies | No | Cookies to send as name→value — the simple way to scrape behind a login | |
| country | No | ISO country code for the proxy exit, e.g. 'us' | |
| extract | No | Structured-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. | |
| formats | No | Additional formats to return together in payload.formats, e.g. ['markdown','text'] | |
| ai_prompt | No | Natural-language instruction — the LLM turns the page into structured JSON | |
| ai_schema | No | JSON Schema for deterministic AI extraction; returned under payload.ai.data | |
| app_state | No | Mine 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_id | No | Run 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. | |
| highlights | No | With `query`: also return the N most relevant passages in payload.highlights | |
| links_mode | No | Link 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_tokens | No | Cap the markdown at ~this many tokens, cutting at a section boundary (never inside a table or code block) and noting how much was omitted | |
| frontmatter | No | Prepend YAML front-matter (title, url, canonical, description, author, date) so the markdown is self-contained for RAG/Obsidian pipelines | |
| images_mode | No | inline (default) keeps ; 'alt' keeps only alt text; 'strip' removes images | |
| content_mode | No | smart (default): whole page minus nav/footer/cookie chrome. article: Readability main article only (news/blogs). full: entire body as-is. | |
| content_modes | No | Return several content scopes from ONE fetch under payload.contents (e.g. compare smart vs full) | |
| include_links | No | Return all de-duplicated absolute page links in payload.links | |
| reveal_hidden | No | Render 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_resource | No | Regex 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_sections | No | Append 'Links on this page' / 'Images on this page' sections — handy when deciding the next hop |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint/openWorldHint annotations, the description reveals useful behavioral details: residential proxy use, Chrome TLS fingerprint default, browser escalation only when bot-challenged, the smart content_mode default, and the raw no-JS/SEO fallback via format 'html'. This gives an agent a genuine model of how the tool behaves at runtime.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but not bloated, front-loading the core action and output first. Each sentence adds meaningful context about defaults, render behavior, extraction, or format nuances, though the final sentence is a bit long.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 31 mostly-optional parameters and no output schema, the description provides a strong high-level mental model while the schema supplies detailed parameter semantics. It does not enumerate every output payload, but the parameter descriptions compensate well, so the overall context is sufficient for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema coverage is 100%, so the schema carries most parameter meaning. The description still adds value beyond the schema, particularly by explaining that format 'html' is the raw no-JS/SEO fallback and by framing content_mode 'smart' as the default page-preserving behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Scrape a single web page' and states the primary output ('clean Markdown (or HTML/text)'). It clearly distinguishes itself from site-level siblings like crawl and batch by emphasizing 'single' page.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a clear context: scraping a single page with proxy, TLS fingerprinting, and optional extraction. However, it does not explicitly say when to choose scrape over crawl, search, or map, or when not to use it, so the routing guidance is mostly implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchARead-onlyInspect
Run structured Google, Bing or DuckDuckGo searches through a residential proxy. Bing supports web, shopping, images, news, videos, places/maps and autocomplete over HTTP, including Copilot AI answers and citations when Bing returns them. Google web search also parses rich blocks directly from its HTTP response.
| Name | Required | Description | Default |
|---|---|---|---|
| num | No | How many organic results to aim for (default 10, max 100). Google serves ~10 per page, so a larger num is satisfied by fetching consecutive pages and merging them — it is NOT ignored. `search_metadata.search_url` is necessarily the first page's URL and therefore shows num=<page size>; `search_metadata.paging` reports what was actually requested, the page size, and how many pages were fetched. Getting fewer results than requested means Google ran out, not that num was dropped. Use `page` to address one specific page, or search_bulk for many queries. | |
| lang | No | Search UI language, e.g. 'en' or 'it' | |
| nfpr | No | Disable Google spelling correction | |
| page | No | Result page, 1-based (default 1). The response's pagination.available_pages lists which pages exist; use search_bulk to fetch many pages at once. | |
| safe | No | Google SafeSearch setting | |
| uule | No | Geo token: encoded uule, or raw coordinates 'lat,lon' / 'lat,lon,radius_m' (encoded server-side) | |
| query | No | The search query (optional for place_details/product/flights/lens/reviews, which are ID/URL-addressed) | |
| start | No | Result offset alias (0, 10, 20…) | |
| adults | No | Hotels: number of adults | |
| device | No | SERP device shape (default desktop) | |
| engine | No | Search engine (default google) | |
| filter | No | Reviews: only reviews whose text contains this keyword | |
| render | No | Force browser rendering where supported; Google/Bing web search rich blocks are parsed over HTTP | |
| browser | No | TLS/browser identity for the fetch path | |
| country | No | ISO country code, e.g. 'us' | |
| data_id | No | Maps data id, hex fid '0x…:0x…' (from maps/place_details results) — required for reviews | |
| sort_by | No | Reviews: sort order (default relevance) | |
| currency | No | Hotels/Flights: price currency, e.g. 'EUR' | |
| location | No | Search from this location, e.g. 'Milan, Italy' (encoded to Google's uule server-side) | |
| place_id | No | Google Maps place id (from maps/places results) for place_details | |
| wait_for | No | Rendered path: wait for this CSS selector before parsing late panels | |
| image_url | No | Lens: publicly reachable image URL to reverse-search | |
| timeframe | No | Trends only: Google timeframe token — 'today 12-m' (default), 'now 7-d', or an explicit 'YYYY-MM-DD YYYY-MM-DD' range | |
| arrival_id | No | Flights: arrival airport IATA code, e.g. 'LAX' | |
| product_id | No | Google Shopping product id for product details | |
| return_date | No | Flights: return date YYYY-MM-DD (omit for one-way) | |
| search_type | No | Vertical (default search). Bing supports shopping/images/news/videos/places/maps/autocomplete. Google additionally supports scholar/jobs/place_details/hotels/flights/events/product/lens/reviews; maps accepts gps_coordinates, place_details uses place_id, and reviews uses data_id. | |
| departure_id | No | Flights: departure airport IATA code, e.g. 'JFK' | |
| check_in_date | No | Hotels: check-in date YYYY-MM-DD | |
| children_ages | No | Hotels: children's ages, e.g. [5, 7] | |
| exact_matches | No | Lens: return the exact-matches tab (pages using this exact image) instead of visual matches | |
| google_params | No | Additional Google query parameters not modeled above | |
| outbound_date | No | Flights: outbound date YYYY-MM-DD | |
| check_out_date | No | Hotels: check-out date YYYY-MM-DD | |
| gps_coordinates | No | Maps: center the search on 'lat,lon' or 'lat,lon,zoom' (zoom 3-21) | |
| next_page_token | No | Reviews: continuation token from the previous response's serpapi_pagination | |
| free_cancellation | No | Hotels: only offers with free cancellation | |
| accommodation_type | No | Hotels: property kind (default hotels) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Given readOnlyHint and openWorldHint already declare safety, the description adds meaningful behavioral context: residential proxy use, Bing's HTTP-only verticals, Copilot answers/citations, and Google's direct parsing of rich blocks. This gives an agent a realistic model of how results are obtained without contradicting the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the core action. The Bing vertical enumeration in sentence 2 partly duplicates what the search_type parameter description already states, which prevents a perfect conciseness score, but the overall length is still reasonable and free of filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 38-parameter tool with no output schema, the description plus the extremely detailed input schema provides enough orientation to select engines and verticals correctly. It does not describe the overall response envelope, but the rich schema carries most of the burden and mentions pagination metadata in parameter docs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides 100% description coverage for all 38 parameters, including detailed semantics for num, page, search_type, and vertical-specific fields. The main description largely restates engine/vertical support already present in the search_type parameter description, adding no new parameter-level meaning, so the schema-covered baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a clear verb and resource: 'Run structured Google, Bing or DuckDuckGo searches through a residential proxy.' It conveys a specific, multi-engine search capability, but it does not explicitly differentiate this tool from the sibling search_bulk or search_and_read tools, so it stops short of full sibling disambiguation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The main description provides context about engine-specific verticals and HTTP vs rendered behavior, implying when the tool is appropriate. Parameter descriptions add explicit routing guidance, e.g. num says 'Use page to address one specific page, or search_bulk for many queries.' No explicit when-not-to-use exclusions are given, so not a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_and_readARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Search UI language, e.g. 'en' or 'it' | |
| query | Yes | The research/search query | |
| top_n | No | Top organic pages to fetch (default 3, max 5) | |
| engine | No | Search engine (default google) | |
| country | No | ISO country code for search and proxy geo | |
| max_tokens | No | Maximum estimated tokens in the assembled context (default 8000) | |
| fetch_content | No | False returns snippet-only context without fetching result pages |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark readOnlyHint=true and openWorldHint=true. The description adds meaningful behavioral context: live-web freshness, Markdown conversion, numbered citations, and token-bounded context assembly. It doesn't disclose all edge behaviors (e.g., fetch failures or citation formatting nuances), but for a read-only search tool this is sufficient and does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core operation and output shape, followed by the usage distinction. Every sentence earns its place, and there is no redundant fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description clearly explains what the caller receives: numbered sources and one token-bounded context string. It could add more detail on the exact format or behavior on sparse results, but the fully documented input schema, read-only annotation, and precise sibling comparison make this definition largely complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already documents all seven parameters with defaults, ranges, and enums. The description indirectly reinforces top_n and max_tokens through 'top organic pages' and 'token-bounded context,' but it does not add substantial parameter-level meaning beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource: 'Search the live web, fetch the top organic pages as clean Markdown, and return citation-ready numbered sources plus one token-bounded context string.' It clearly distinguishes itself from the sibling 'search' by contrasting raw SERP needs, so an agent can tell them apart immediately.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states when to use the tool: 'Use this when the goal is answering/researching.' It also gives a clear exclusion: 'use `search` when raw SERP structure or a specialized vertical is needed.' This gives the agent both positive and negative usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_bulkARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | UI language, e.g. 'en' | |
| nfpr | No | Disable Google spelling correction | |
| safe | No | Google SafeSearch setting | |
| uule | No | Encoded geo token or raw coordinates | |
| query | Yes | The search query to paginate | |
| device | No | SERP device shape | |
| engine | No | Search engine (default google) | |
| render | No | Force rendering to capture page-one Google JS enrichments | |
| browser | No | Fetch-path browser identity | |
| country | No | ISO country code, e.g. 'us' | |
| webhook | No | Public URL to POST the finished job to | |
| location | No | Search location, e.g. 'Milan, Italy' | |
| wait_for | No | Rendered path CSS selector for late panels | |
| max_pages | No | Max pages to fetch (1-10, default 5). Stops early when Google has no more pages. | |
| search_type | No | Vertical to paginate (default search) | |
| google_params | No | Additional Google query parameters |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint and openWorldHint annotations, the description discloses asynchronous execution, deduplication, retention of page-one enrichments, the render requirement for JS blocks, and per-page billing with refunds for unavailable pages. These are meaningful behavioral details an agent could not infer from the annotations alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the core operation, then enrichment behavior, then billing. Every sentence adds distinct value; no filler or restatement of the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the operation, billing, and enrichment behavior well, which is strong for an asynchronous tool. However, since there is no output schema, it does not mention what the actual response contains, such as a job handle or status reference, which is a relevant missing piece for an async flow.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds extra meaning by explaining that render:true is needed for Google JS enrichments and that billing is per actually fetched page. This semantic context goes beyond the parameter names and schema comments.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description leads with a specific verb and resource: 'Paginate ONE search query asynchronously'. It also defines the output behavior ('merge deduplicated organic results') and names retained SERP enrichments, making it distinct from synchronous or single-page search siblings without needing to open the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The first sentence makes the intended use case clear: asynchronous pagination of a single query. The description also gives conditional guidance for render:true, but it does not explicitly name alternatives or state when not to use this tool versus search or search_and_read.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_bulk_statusARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| jobId | Yes | The bulk search job id returned by search_bulk | |
| since | No | Organic cursor from the previous poll's `nextCursor` — returns only newer results |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly and idempotent behavior. The description adds useful behavioral context beyond that: polling is incremental, `since` yields only new organic results, and the response merges results since the last poll. This tells the agent how repeated calls behave.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with no filler. The core purpose comes first, and the incremental polling nuance is explained immediately after, making it easy for an agent to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter, read-only tool, the description covers how to initiate polling and how to continue polling incrementally. It omits terminal/error state details, but the annotations and schema provide enough safety and parameter context for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameter meaning is already fully documented in the schema. The description adds a minor framing by tying `since` to the previous response's `nextCursor`, but this largely restates the schema description rather than introducing new semantic detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names an explicit action ('Poll'), a specific resource ('a bulk search job'), and what is returned ('progress and merged organic results'). This clearly distinguishes it from sibling status tools such as batch_status or crawl_status by focusing on bulk search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a concrete usage pattern: poll an existing bulk search job and advance incrementally by passing the previous `nextCursor` as `since`. It does not explicitly name when-not-to-use alternatives, but the schema's jobId provenance and the incremental polling instructions supply enough context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
seo_auditARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The page URL to audit | |
| country | No | ISO country code for the proxy exit, e.g. 'us' | |
| no_render | No | Skip the rendered pass (cheaper — returns the no-JS view only, no diff) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the dual-fetch behavior (pure HTTP and fully rendered), the exact return elements (title, description, canonical, h1, word count, diff, bot-facing meta), and the effect of the no_render parameter. This goes well beyond the readOnlyHint annotation and gives a precise mental model.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is succinct but information-dense. It leads with the core purpose, then lists the outputs and diff, and ends with a usage hint. It avoids redundancy and each sentence adds value, though it could be slightly more streamlined by omitting parentheticals.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is no output schema, the description thoroughly covers what the tool returns (both views and diff) and the filtering options. It explains the dual-fetch logic and the bot-facing meta, providing enough context for an agent to decide when and how to call it. No critical aspects are missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already fully documents all three parameters with descriptions (url, country, no_render). The tool description adds no additional meaning—e.g., it does not clarify the purpose of the country parameter or explain default behavior beyond what the schema states. Since coverage is 100%, baseline is 3 and no extra value is added.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool audits a URL's SEO in one call, specifying the resource (URL) and the action (audit). It distinguishes from manual scraping by offering a comprehensive alternative, making the purpose immediately obvious.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly recommends using this tool instead of manual scraping when checking how a page indexes, providing a clear scenario. However, it does not compare against other sibling tools like 'scrape' or 'crawl', leaving some ambiguity about when to prefer this over those.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
whitelist_ipADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| ip | No | The IP to add/remove (required for add and remove) | |
| isp | No | Mobile add: ISP code, e.g. 'tmobile' | |
| ttl | No | Mobile add: sticky session TTL in seconds | |
| city | No | Mobile add: city slug | |
| action | Yes | What to do with the order's whitelist | |
| region | No | Mobile add: region slug | |
| sticky | No | Mobile add: keep the same IP per port | |
| country | No | Mobile add: geo targeting for the ports, e.g. 'us' | |
| orderId | Yes | The proxy service's orderId (from list_proxies) | |
| protocol | No | Mobile add: protocol for the allocated ports | |
| ports_count | No | Mobile add: number of ports to allocate |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true. The description adds context that whitelisted machines use proxies without credentials and that it's required for Mobile V2 IP-auth list, which clarifies the impact. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the purpose, then the auth context. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description gives enough high-level context: what the tool does, when to use it, and which auth methods it applies to. The schema covers parameter details. It lacks explicit prerequisites like needing an existing order, but this is implied by orderId from list_proxies.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of parameters with descriptions, so the description adds little beyond the schema. It provides context about the auth method that relates to orderId, but no new parameter-specific details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb (manage) and resource (IP-auth whitelisting) and specifies the actions (add, remove, list). It distinguishes from sibling proxy tools by focusing on whitelisting specifically.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance on when to use (for IP-auth proxy types, required for Mobile V2) and when not (Residential Premium/Private with user:pass auth). This gives agents 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.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
25 tool updates
- First observed
batch - First observed
batch_status - First observed
collector_run_status - First observed
crawl - First observed
crawl_status - First observed
create_dataset - First observed
dataset_status - First observed
generate_parser - First observed
generate_proxies - First observed
heal_parser_preset - First observed
list_collectors - First observed
list_parser_presets - First observed
list_proxies - First observed
map - First observed
parser_preset_stats - First observed
proxy_locations - First observed
run_collector - First observed
save_parser_preset - First observed
scrape - First observed
search - First observed
search_and_read - First observed
search_bulk - First observed
search_bulk_status - First observed
seo_audit - First observed
whitelist_ip
Frequently Asked Questions
Claiming proves that you control a remote MCP connector. It does not move, proxy, or interrupt the server.
Open the connector listing, choose Claim ownership, and sign in to Glama.
Complete one verification method:
GitHub identity — fastest for official registry listings. For a namespace such as
io.github.alice/server, link the matching GitHub user, then choose Claim with GitHub. An organization namespace such asio.github.acme/serveralso needs that organization to have installed the Glama AI GitHub App and approved its permissions, because GitHub discloses organization membership only to apps it has installed. Use HTTP or DNS when it has not.HTTP challenge — works when you can deploy a public file. Generate a token, publish the exact JSON Glama shows at
/.well-known/glama.jsonon the same origin as the connector, then choose Check HTTP challenge.DNS challenge — works when you control DNS but cannot change the server. Generate a token, create the exact TXT record Glama shows, wait for it to propagate, then choose Check DNS challenge.
After verification, Glama sends a confirmation email and gives you access to listing details, thumbnails, health checks, and analytics. Keep the HTTP file or DNS record in place: Glama periodically checks it and ownership remains verified while the token is discoverable.
The HTTP ownership file has this structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"claim": "glama_claim_..."
}Claim tokens are opaque, stable, and bound to the signed-in Glama account. They contain no email address or other personal information. If Glama can no longer discover a verified HTTP or DNS token, it starts a seven-day grace period before removing claim-based access. Restore the same token during that period to keep ownership verified. Never publish an email address, Glama session token, GitHub token, or connector credential as ownership proof.
If verification fails, confirm that you copied the current token exactly. The HTTP file must be public, return valid JSON with a successful HTTP response, and stay on the connector's origin. DNS changes may need more time to propagate. A claim cannot transfer to a different origin or hostname: if the connector target changes, Glama starts the grace period and the new target must be claimed separately after the previous claim is released.
For a connector linked to the official MCP Registry, registry updates continue to replace its name, description, and URL by default. After claiming, open Manage connector and enable Use Glama listing details as the source of truth if edits made on Glama should be preserved. Categories and thumbnails are always managed on Glama; registry linkage and technical connection settings continue to sync.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
To improve your MCP server's ranking:
Claim ownership of the server listing
Complete the server profile with an accurate description and thumbnail
Provide a test profile so Glama can connect to and evaluate the server
Keep tool definitions clear and complete to earn a high Tool Definition Quality Score (TDQS)
Route real usage through the Glama Gateway; more recorded successful server uses also improve the ranking
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Connectors
Direct access to 40+ scraping and search tools. Extract structured data from Google (Search, Maps, Trends), Amazon, Airbnb, Social Media, and any web page directly into your AI agent.
Give your agent web search and authoritative datasets: S&P Global, FRED, OECD, SimilarWeb & more.
Web data tools for AI agents: pages as markdown, search, maps, commerce, jobs, AI answers.
Agent-native search engine with live web research optimized for AI agents.
Related MCP Servers
AlicenseNot gradedqualityBmaintenanceWeb data for AI agents: scrape, crawl, search, deep research, site monitoring, browser automation1003Apache 2.0- AlicenseAqualityFmaintenanceEnables AI agents to crawl, scrape, search, and automate browsers with anti-bot bypass, providing fast web access via 22 tools.22503MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to search the web, read and extract content from webpages, fetch JSON from REST APIs, and collect links while bypassing anti-bot protections.36ISC
- AlicenseBqualityDmaintenanceEnables LLMs and AI agents to access real-time web data, search websites, and navigate the web without getting blocked. Includes 5,000 free monthly requests and supports web scraping, browser automation, and bypassing geo-restrictions.608,7541MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.
TDQS
Each tool targets a distinct resource or action: single scrape, batch scrape, crawl, search, dataset creation, parser lifecycle, proxy management, and SEO audit. Even the five status pollers are clearly differentiated by job type and their descriptions explicitly state which job they poll, so an agent can reliably select the right tool.
Most names follow a verb-first pattern (create_dataset, generate_parser, run_collector, save_parser_preset, whitelist_ip) and listing tools consistently use the 'list_' prefix. However, a few are noun-first (parser_preset_stats, proxy_locations, collector_run_status) and the status polling tool for collectors breaks the otherwise consistent '<job>_status' convention ('collector_run_status' instead of 'run_collector_status').
At 25 tools, the set is at the upper edge of the 'heavy' range. The tools all serve distinct functions, reflecting a broad platform covering scraping, crawling, search, datasets, parsers, proxies, and SEO, but the count borders on overwhelming for an agent, and some consolidation (e.g., a generic async job status endpoint) could reduce the surface.
The tool surface covers the core data-extraction lifecycle well: discovery (map, search), acquisition (scrape, batch, crawl), structured extraction (generate_parser, save_parser_preset, parser stats/heal), proxy management, and result aggregation (datasets, collectors). Notable gaps are the absence of any cancellation/abort mechanism for long-running async jobs and no way to delete a parser preset, but these are minor for most workflows.