io.github.quantumproxies/quantumproxies-mcp
NPM · QUANTUMPROXIES-MCP · 2 COMPONENTS
Web scraping, SERP search, crawl/map and 74 Collectors through residential proxies. 25 tools.
Available components
Last scanned (17 hours ago)
Scores higher than 48% of npm servers
Category Web Scraping
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security81
- No malware found by supply-chain analysis.Pass
- CVE check failed: a known high-severity CVE affects zod 3.25.76, a direct dependency. A fixed version is available. View diagnostics → Fail
- No install/post-install scripts declared.Pass
- 30 of 97 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency19
- Repository check failed: no source repository is declared. See how to fix → View diagnostics → Fail
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 33 days ago).Pass
- Security-disclosure policy not yet verified: we couldn't inspect the source repository.Unverified
Schema Quality & AI Usability77
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 8587 tokens (~306/item across 28 items; 28 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
- No destabilizing schema changes in the last 30 days.Pass
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- All 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 28 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 31 Oct 26 0
- Stability: 0.97 → pass security
- 30 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.
- 28 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 87 to 90. That category is still filling its 30-day observation window: 26 days of observed history at the previous scan, 27 at this one. The score rises as the window fills, whether or not the server changes.
- 26 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 80 to 83. That category is still filling its 30-day observation window: 24 days of observed history at the previous scan, 25 at this one. The score rises as the window fills, whether or not the server changes.
- 24 Oct 26 −4
- CVE-2023-54404 affects this package: high ▼ security
- Known CVEs: pass → fail ▼ security
- 22 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 67 to 70. That category is still filling its 30-day observation window: 20 days of observed history at the previous scan, 21 at this one. The score rises as the window fills, whether or not the server changes.
- 20 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 60 to 63. That category is still filling its 30-day observation window: 18 days of observed history at the previous scan, 19 at this one. The score rises as the window fills, whether or not the server changes.
- 18 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 53 to 57. That category is still filling its 30-day observation window: 16 days of observed history at the previous scan, 17 at this one. The score rises as the window fills, whether or not the server changes.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 4 Nov 2026 · Analysed npm/quantumproxies-mcp@0.11.4
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | npm |
Background: How many MCP packages publish verified provenance →
Vulnerabilities 1 finding
| ID | CVE | Severity | Vector | Fix available |
|---|---|---|---|---|
| GHSA-mrhx-c7xc-m3w5 | CVE-2023-54404 | high | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H | yes |
Background: What a vulnerability scan can and cannot prove →
Dependencies 97 packages
| Packages resolved | 97 |
|---|---|
| Stale | 30 |
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
ai_visibility ~757
Use this when the user asks whether AI assistants (ChatGPT, Claude, Perplexity, Google AI Overview, Bing Copilot) can find, read and cite a page; use seo_audit for classic Google indexing questions. On-page pass (always): the live robots.txt resolved for 24 AI crawlers per RFC 9309 with the deciding line, Content-Signal, one request sent with the GPTBot user-agent to check whether the site answers AI crawlers differently (skip it with no_bot_fetch), noindex/nosnippet/noai/data-nosnippet, text present without JavaScript, JSON-LD types and resolvable Organization/Person entities, heading outline, question-shaped headings, answer-first paragraph, lists/tables, numeric facts and quotes, chunk-sized sections, dateModified with age, author, outbound sources. Also readability grade, paragraph length, definitional openers, named-entity density, keyword stuffing, first-hand content, images/video, paywall and retired robots tokens. Retrievability: where Google ranks the page for its own H1 question and whether it is indexed (2 SERPs); a page that is not indexed is reported as a blocker. Google AI Overview and Bing Copilot report brand mentions only, because their no-JS results expose no sources. Returns a 0-100 score per pillar (retrievability, access, readability, structure, answerability, trust, plus offsite when requested), blockers that cap the score, every check with evidence and fix, and topFixes. Citation panel (when `queries` is set): asks each engine the questions and reports cited / mentioned / rank per (query × engine), share of voice across all cited domains, and the domains cited where the page is absent.
| Name | Type | Req | Description |
|---|---|---|---|
| brand | string | – | Brand name to look for in the answer text ('mentioned' even when not cited). Defaults to the page's og:site_name / Organization name. |
| competitors | array | – | Competitor domains to flag in the share of voice, e.g. ['example.com'] |
| country | string | – | ISO country code for the proxy exit, e.g. 'us' — also the locale of the AI Overview / Copilot SERP |
| engines | array | – | Engines to ask (default: all). aio = Google AI Overview read from a live SERP, copilot = Bing's generative answer, openai/anthropic = the vendors' APIs with web search (an approximation of ChatGPT/Cl… |
| no_bot_fetch | boolean | – | Skip the extra request sent with the GPTBot user-agent |
| no_render | boolean | – | Skip the rendered pass (cheaper — the two JS-parity checks are reported as skipped) |
| no_retrieval | boolean | – | Skip the retrievability probe (2 SERPs: Google rank of the page for its own H1 question, and whether it is indexed). On by default; a page that is not indexed is reported as a blocker. |
| offsite | boolean | – | Also measure mentions of the brand off the page with five searches ("brand" site:youtube.com / reddit.com / wikipedia.org / linkedin.com / review sites). Adds an `offsite` pillar; billed as 5 SERP ca… |
| queries | array | – | Questions to ask the AI engines (max 10). Omit for the on-page audit only — each (query × engine) pair is a billed engine call. |
| url | string | yes | The page URL to audit |
No output schema declared.
No examples provided.
batch ~152
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 | Type | Req | Description |
|---|---|---|---|
| content_mode | string | – | Per-URL content scope: smart (default) | article | full |
| country | string | – | ISO country code for the proxy exit |
| engine | string | – | Fetch engine (default auto) |
| format | string | – | Output format (default markdown) |
| mode | string | – | summary: per-URL metadata only, no page content — the light mode for audits |
| urls | array | yes | URLs to scrape |
No output schema declared.
No examples provided.
batch_status ~126
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 | Type | Req | Description |
|---|---|---|---|
| include_content | boolean | – | Include each item's full page content (default false — metadata only) |
| jobId | string | yes | The batch job id returned by batch |
| since | integer | – | Item cursor from the previous poll's `nextCursor` — returns only newer items |
No output schema declared.
No examples provided.
collector_run_status ~96
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 | Type | Req | Description |
|---|---|---|---|
| format | string | – | Return rows as JSON (default) or CSV text |
| run_id | string | yes | The run id returned by run_collector |
No output schema declared.
No examples provided.
crawl ~135
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 | Type | Req | Description |
|---|---|---|---|
| content_mode | string | – | Per-page content scope: smart (default) | article | full |
| country | string | – | ISO country code for the proxy exit |
| depth | integer | – | Max link depth (default 3) |
| exclude | array | – | URL substrings/globs to exclude |
| include | array | – | URL substrings/globs to include |
| limit | integer | – | Max pages (default 50) |
| url | string | yes | Seed URL |
No output schema declared.
No examples provided.
crawl_status ~141
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 | Type | Req | Description |
|---|---|---|---|
| include_content | boolean | – | Include each page's full content (default false — metadata only) |
| jobId | string | yes | The crawl job id returned by crawl |
| since | integer | – | Page cursor from the previous poll's `nextCursor` — returns only newer pages |
No output schema declared.
No examples provided.
create_dataset ~195
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 | Type | Req | Description |
|---|---|---|---|
| columns | array | – | Columns to extract; omit to let the planner infer them |
| country | string | – | ISO country code for the proxy exit geo |
| limits | object | – | – |
| prompt | string | yes | What dataset you want, in plain language (e.g. 'coffee roasters in Portland with email and phone') |
| sources | object | – | Domain allow/deny lists |
| webhook | string | – | Public URL to POST the finished dataset to |
No output schema declared.
No examples provided.
dataset_status ~143
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 | Type | Req | Description |
|---|---|---|---|
| jobId | string | yes | The dataset job id returned by create_dataset |
| mode | string | – | summary: progress + steps only, no rows |
| since | integer | – | Row cursor from the previous poll's `nextCursor` — returns only newer rows |
No output schema declared.
No examples provided.
generate_parser ~267
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, deterministic extraction with no AI cost. 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 | Type | Req | Description |
|---|---|---|---|
| country | string | – | ISO country code for the proxy exit |
| fields | object | – | What to extract, as { field_name: "plain-English description" } — e.g. { "price": "the product price", "specs": "every spec bullet, as a list" }. Max 25. |
| html | string | – | Markup you already have, instead of fetching a URL (no proxy bandwidth used) |
| prompt | string | – | Free-text alternative to `fields` — the model picks and names the fields itself |
| render | boolean | – | Learn from the browser-rendered DOM instead of the raw HTML (needed for SPA pages) |
| url | string | – | The page to learn the layout from |
No output schema declared.
No examples provided.
generate_proxies ~463
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 | Type | Req | Description |
|---|---|---|---|
| asn | string | – | ASN for Residential/Datacenter Basic targeting, e.g. 'AS12345' |
| city | string | – | City (slug from proxy_locations where applicable; 'all' for any) |
| country | string | – | Country code for geo targeting, lowercase, e.g. 'us' |
| filter | string | – | Residential Premium / Mobile V2 pool filter (omit for the full pool) |
| format | string | – | Output string format (default user:pass@host:port) |
| gateway | string | – | Mobile V2 region gateway (default ww) |
| ip | string | – | Mobile V2 only: a whitelisted IP (see whitelist_ip) to fetch the IP-auth proxy list instead of user:pass proxies |
| isp | string | – | ISP code for Residential Premium / Mobile V2 targeting (from proxy_locations tree, e.g. 'tmobile') |
| orderId | string | yes | The proxy service's orderId (from list_proxies) |
| protocol | string | – | Proxy protocol (default http) |
| quantity | integer | – | Number of proxy strings (default 10) |
| rotation | string | – | rotating (default): new IP per request. sticky: keep the IP for sessionTime. static: IPv6 only, fixed session with no TTL. |
| sessionTime | integer | – | Sticky session duration in minutes (default 10; Residential Basic/Datacenter minimum 3) |
| state | string | – | State/region (Residential Premium & Mobile V2: use the slug from proxy_locations; 'all' for any) |
| strict | boolean | – | Residential/Datacenter Basic: true allows fallback to nearby locations when the exact target has no IPs |
No output schema declared.
No examples provided.
heal_parser_preset ~84
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 | Type | Req | Description |
|---|---|---|---|
| force | boolean | – | Skip the cooldown between heals |
| preset_id | string | yes | The preset id |
No output schema declared.
No examples provided.
list_collectors ~241
Use this to find a ready-made Collector for a task before calling run_collector. Collectors are paid, versioned scrapers you run with a semantic input (keyword + location, place id, product id, domain…) instead of URLs, grouped in categories such as local businesses and maps, e-commerce, jobs, news, travel, finance, developer registries, research, classifieds, public records and domain/DNS data. Returns a compact catalog (slug, name, category, tagline, price per delivered result, required input fields, health), optionally filtered by `category`; pass `slug` to get one collector's full input/output schema and example input. Billing is pay-per-success: only delivered rows are charged.
| Name | Type | Req | Description |
|---|---|---|---|
| category | string | – | Optional category filter (e.g. 'local', 'ecommerce', 'jobs', 'news', 'travel', 'leads', 'finance', 'dev', 'gaming', 'osint', 'research', 'classifieds', 'knowledge') |
| slug | string | – | Return ONE collector's full definition (input and output schema, example input, price, health) instead of the compact catalog |
No output schema declared.
No examples provided.
list_parser_presets ~25
List your stored parser presets with their version, health stats and changelog.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_proxies ~163
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. Passwords are not listed here: generate_proxies returns ready-to-use credentials. Call this first to see which proxy plans are available.
| Name | Type | Req | Description |
|---|---|---|---|
| active | boolean | – | true: only non-expired services (recommended). false: only expired. Omit for all. |
| limit | integer | – | Max services returned (default 50) |
| offset | integer | – | Pagination offset (default 0) |
| planType | string | – | Only services of this plan type |
No output schema declared.
No examples provided.
map ~214
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 | Type | Req | Description |
|---|---|---|---|
| group_by | string | – | path: return the path tree with per-prefix counts instead of the flat URL list |
| includeSubdomains | boolean | – | Include subdomains of the seed host |
| limit | integer | – | Max URLs returned (default 100). `total`/`summary` always cover the whole site. |
| search | string | – | Only return URLs containing this substring — use this to narrow before raising limit |
| url | string | yes | The site URL to map |
No output schema declared.
No examples provided.
parser_preset_stats ~65
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 | Type | Req | Description |
|---|---|---|---|
| preset_id | string | yes | The preset id returned by save_parser_preset |
No output schema declared.
No examples provided.
proxy_locations ~183
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 | Type | Req | Description |
|---|---|---|---|
| country | string | – | Country code, required for states/cities, optional filter for asns |
| level | string | – | countries (default) | states (needs country) | cities (needs country) | asns | tree (full location tree: residentialpremium, mobile/mobile_v2, datacenter) |
| planType | string | yes | The plan type to look up (same value as list_proxies planType) |
| state | string | – | Cities only: filter by state |
No output schema declared.
No examples provided.
report ~418
Send feedback to the QuantumProxies team: a bug (a result that is wrong or empty after a retry, a broken parser, a blocked page that should work), a missing tool, site, option or collector, or a question about behaviour or pricing. Use it when the user asks to report something. When a tool here clearly failed at its job, or the user needs something no tool here covers, offer to send a report and call it only if the user agrees. Do NOT call it for a missing, rejected or unset API key, for the no-key trial or the balance being used up, for a network timeout, or for your own wrong input: those are fixed by the user, not by the team, and the tool that failed already said how. One report per issue, never one per retry. The report (the fields below, plus the account it comes from when the call is authenticated) is stored and forwarded to the QuantumProxies support team; it cannot be recalled. Works without an API key.
| Name | Type | Req | Description |
|---|---|---|---|
| actual | string | – | What actually came back (error text, empty payload, wrong fields…). Trim page content; a short excerpt is enough. |
| contact | string | – | Optional email or handle to follow up on — ask the user before sending it; never send it unasked. |
| expected | string | – | What the user needed to get back |
| kind | string | yes | bug: something returned wrong/empty/errored. feature: a missing tool, option, site or collector. question: unclear behaviour or pricing. other: anything else. |
| message | string | yes | What happened or what is missing, in plain words. Include the URL/query/collector involved when there is one. |
| tool | string | – | Name of the tool involved, e.g. 'scrape' or 'run_collector' (omit for general feedback) |
| tool_input | object | – | The arguments passed to the failing tool, so the team can reproduce it. Leave out cookies, credentials and anything private. |
No output schema declared.
No examples provided.
run_collector ~155
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 | Type | Req | Description |
|---|---|---|---|
| async | boolean | – | Force background execution and return a run_id to poll |
| input | object | yes | Input fields matching the collector's inputSchema (e.g. { keyword: 'dentist', location: 'Austin, TX', max_results: 20 }) |
| slug | string | yes | Collector slug from list_collectors, e.g. 'google_maps_places' |
No output schema declared.
No examples provided.
save_parser_preset ~220
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 | Type | Req | Description |
|---|---|---|---|
| auto_heal | boolean | – | Regenerate automatically on decay (default true when source_url is set) |
| fields | object | – | The original field descriptions, so a self-heal regenerates the same shape |
| name | string | yes | A name you'll recognise, e.g. 'shop product page' |
| parser | object | yes | The parser to store — normally the `parser` object returned by generate_parser |
| render | boolean | – | The page needs a browser render to show its content |
| source_url | string | – | Page to relearn from when the parser decays — required for self-healing |
No output schema declared.
No examples provided.
scrape ~1,550
Use this when the user wants the content of one web page. Fetches the page from a residential IP and returns it as clean Markdown (or HTML/text). It tries a plain HTTP request with a Chrome-compatible TLS profile first and uses a headless browser only when the page needs JavaScript or the plain request is refused. Optionally runs structured extraction (CSS selectors or a stored preset) or AI extraction (natural-language prompt). Markdown keeps the complete page by default (content_mode 'smart': everything except nav/footer/cookie banners, with GFM tables and absolute links); use format 'html' to inspect the raw no-JS page. Optional browser `actions` (click, type) can submit forms on the target site. Use it only for pages the user is permitted to access.
| Name | Type | Req | Description |
|---|---|---|---|
| actions | array | – | 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), {… |
| ai_prompt | string | – | Natural-language instruction — the LLM turns the page into structured JSON |
| ai_schema | object | – | JSON Schema for deterministic AI extraction; returned under payload.ai.data |
| app_state | – | – | 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, downloa… |
| chunk | object | – | 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. |
| content_mode | string | – | smart (default): whole page minus nav/footer/cookie chrome. article: Readability main article only (news/blogs). full: entire body as-is. |
| content_modes | array | – | Return several content scopes from ONE fetch under payload.contents (e.g. compare smart vs full) |
| cookies | object | – | Cookies to send with the request as name→value (e.g. a consent or locale cookie). Only send cookies the user provided for this site. |
| country | string | – | ISO country code for the proxy exit, e.g. 'us' |
| engine | string | – | auto (default): plain HTTP first, headless browser when the page needs JavaScript or the HTTP request is refused. tls: plain HTTP only, never a browser — what a crawler without JavaScript sees, right… |
| extract | object | – | 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_s… |
| fetch_resource | string | – | 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… |
| format | string | – | Output format (default markdown) |
| formats | array | – | Additional formats to return together in payload.formats, e.g. ['markdown','text'] |
| frontmatter | boolean | – | Prepend YAML front-matter (title, url, canonical, description, author, date) so the markdown is self-contained for RAG/Obsidian pipelines |
| highlights | integer | – | With `query`: also return the N most relevant passages in payload.highlights |
| html | string | – | 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. |
| images_mode | string | – | inline (default) keeps ; 'alt' keeps only alt text; 'strip' removes images |
| include_links | boolean | – | Return all de-duplicated absolute page links in payload.links |
| links_mode | string | – | 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 on… |
| max_tokens | integer | – | 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 |
| mode | string | – | summary: return only metadata (title, description, canonical, contentLength, status, engine, bytes) with no page content — use this when auditing pages instead of reading them |
| parser | object | – | 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']).… |
| preset_id | string | – | 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… |
| query | string | – | 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 budge… |
| render | boolean | – | Force the headless browser (JS execution) |
| reveal_hidden | boolean | – | 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 r… |
| summary_sections | boolean | – | Append 'Links on this page' / 'Images on this page' sections — handy when deciding the next hop |
| toc | boolean | – | Prepend a table of contents built from the page headings |
| url | string | – | The page URL to scrape (optional only when you pass `html` to convert) |
| xhr | boolean | – | 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 th… |
No output schema declared.
No examples provided.
search ~1,156
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 | Type | Req | Description |
|---|---|---|---|
| accommodation_type | string | – | Hotels: property kind (default hotels) |
| adults | integer | – | Hotels: number of adults |
| arrival_id | string | – | Flights: arrival airport IATA code, e.g. 'LAX' |
| browser | string | – | TLS/browser identity for the fetch path |
| check_in_date | string | – | Hotels: check-in date YYYY-MM-DD |
| check_out_date | string | – | Hotels: check-out date YYYY-MM-DD |
| children_ages | array | – | Hotels: children's ages, e.g. [5, 7] |
| country | string | – | ISO country code, e.g. 'us' |
| currency | string | – | Hotels/Flights: price currency, e.g. 'EUR' |
| data_id | string | – | Maps data id, hex fid '0x…:0x…' (from maps/place_details results) — required for reviews |
| departure_id | string | – | Flights: departure airport IATA code, e.g. 'JFK' |
| device | string | – | SERP device shape (default desktop) |
| engine | string | – | Search engine (default google) |
| exact_matches | boolean | – | Lens: return the exact-matches tab (pages using this exact image) instead of visual matches |
| filter | string | – | Reviews: only reviews whose text contains this keyword |
| free_cancellation | boolean | – | Hotels: only offers with free cancellation |
| google_params | object | – | Additional Google query parameters not modeled above |
| gps_coordinates | string | – | Maps: center the search on 'lat,lon' or 'lat,lon,zoom' (zoom 3-21) |
| image_url | string | – | Lens: publicly reachable image URL to reverse-search |
| lang | string | – | Search UI language, e.g. 'en' or 'it' |
| location | string | – | Search from this location, e.g. 'Milan, Italy' (encoded to Google's uule server-side) |
| next_page_token | string | – | Reviews: the next_page_token from the previous reviews response's pagination block |
| nfpr | boolean | – | Disable Google spelling correction |
| num | integer | – | 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_metadat… |
| outbound_date | string | – | Flights: outbound date YYYY-MM-DD |
| page | integer | – | 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. |
| place_id | string | – | Google Maps place id for place_details — the hex '0x…:0x…' fid from maps/places results, a 'ChIJ…' place id or a numeric cid all work; served from Maps' place card over HTTP (name, address, phone, we… |
| product_id | string | – | Google Shopping product id (the product_id of a shopping result — the rendered grid carries it) for search_type=product: the seller list with price, old price, discount, stock and delivery per mercha… |
| product_ids | boolean | – | shopping only: render the Shopping grid so each result carries product_id/offer_id (the input of search_type=product). Costs a render; the default no-JS shopping page has no ids. |
| query | string | – | The search query (optional for place_details/product/flights/lens/reviews, which are ID/URL-addressed) |
| render | boolean | – | Force browser rendering where supported; Google/Bing web search rich blocks are parsed over HTTP |
| return_date | string | – | Flights: return date YYYY-MM-DD (omit for one-way) |
| safe | string | – | Google SafeSearch setting |
| search_type | string | – | 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… |
| sort_by | string | – | Reviews: sort order (default relevance) |
| start | integer | – | Result offset alias (0, 10, 20…) |
| timeframe | string | – | Trends only: Google timeframe token — 'today 12-m' (default), 'now 7-d', or an explicit 'YYYY-MM-DD YYYY-MM-DD' range |
| uule | string | – | Geo token: encoded uule, or raw coordinates 'lat,lon' / 'lat,lon,radius_m' (encoded server-side) |
| wait_for | string | – | Rendered path: wait for this CSS selector before parsing late panels |
No output schema declared.
No examples provided.
search_and_read ~188
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 | Type | Req | Description |
|---|---|---|---|
| country | string | – | ISO country code for search and proxy geo |
| engine | string | – | Search engine (default google) |
| fetch_content | boolean | – | False returns snippet-only context without fetching result pages |
| lang | string | – | Search UI language, e.g. 'en' or 'it' |
| max_tokens | integer | – | Maximum estimated tokens in the assembled context (default 8000) |
| query | string | yes | The research/search query |
| top_n | integer | – | Top organic pages to fetch (default 3, max 5) |
No output schema declared.
No examples provided.
search_bulk ~296
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 | Type | Req | Description |
|---|---|---|---|
| browser | string | – | Fetch-path browser identity |
| country | string | – | ISO country code, e.g. 'us' |
| device | string | – | SERP device shape |
| engine | string | – | Search engine (default google) |
| google_params | object | – | Additional Google query parameters |
| lang | string | – | UI language, e.g. 'en' |
| location | string | – | Search location, e.g. 'Milan, Italy' |
| max_pages | integer | – | Max pages to fetch (1-10, default 5). Stops early when Google has no more pages. |
| nfpr | boolean | – | Disable Google spelling correction |
| query | string | yes | The search query to paginate |
| render | boolean | – | Force rendering to capture page-one Google JS enrichments |
| safe | string | – | Google SafeSearch setting |
| search_type | string | – | Vertical to paginate (default search) |
| uule | string | – | Encoded geo token or raw coordinates |
| wait_for | string | – | Rendered path CSS selector for late panels |
| webhook | string | – | Public URL to POST the finished job to |
No output schema declared.
No examples provided.
search_bulk_status ~91
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 | Type | Req | Description |
|---|---|---|---|
| jobId | string | yes | The bulk search job id returned by search_bulk |
| since | integer | – | Organic cursor from the previous poll's `nextCursor` — returns only newer results |
No output schema declared.
No examples provided.
seo_audit ~157
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 | Type | Req | Description |
|---|---|---|---|
| country | string | – | ISO country code for the proxy exit, e.g. 'us' |
| no_render | boolean | – | Skip the rendered pass (cheaper — returns the no-JS view only, no diff) |
| url | string | yes | The page URL to audit |
No output schema declared.
No examples provided.
unlock ~648
Use this when the user needs a site's raw HTTP response (a JSON API, a form POST, a page exactly as served) rather than scrape's Markdown. Sends the request (method, headers, body) from a residential IP with a browser-compatible TLS profile and returns status, headers, body (bodyBase64 for binary) and finalUrl. A GET or HEAD the site refuses is retried from another IP and, for GET, once in a headless browser; other methods get exactly one attempt. If the site still refuses, the response is marked `blocked` with the reason (`blockClass`, `vendor`) instead of being reported as a success; captchas are never solved. POST, PUT, PATCH and DELETE can change or delete data on the target site. Use it only for sites and data the user is permitted to access.
| Name | Type | Req | Description |
|---|---|---|---|
| auto_render | boolean | – | false: never retry a refused GET in the headless browser (default true) |
| body | string | – | Request body as a UTF-8 string (JSON, form data, …) |
| cookies | object | – | Cookies to send as name→value (e.g. a consent cookie). Only send cookies the user provided for this site. |
| country | string | – | ISO country code for the proxy exit, e.g. 'us' |
| fail_on_block | boolean | – | true: a request the site still refuses is returned as an error (HTTP 502) instead of a 200 payload with blocked: true |
| headers | object | – | Headers your own client would send. Browser identity headers (User-Agent, Accept, Sec-Fetch-*) are set to match the TLS profile unless keep_headers is set; auth, cookie, content-type and custom heade… |
| keep_headers | boolean | – | Send your own identity headers verbatim instead of the fingerprint's |
| method | string | – | HTTP method (default GET). Only GET/HEAD are retried and escalated: any other method gets exactly one attempt. |
| render | string | – | Run the page in a headless browser instead of the TLS tier (GET only): 'html' returns the rendered DOM, 'png' a screenshot in bodyBase64 |
| return_cookies | boolean | – | Return the cookies set by the origin as name→value in payload.cookies |
| session_id | string | – | Sticky session id — reuse it across calls to keep the same exit IP |
| success_status_codes | array | – | Origin statuses to accept as success: never treated as a block, never retried, relayed as-is (e.g. [404]) |
| tier | string | – | Exit network: premium (default, residential) or mobile. Each tier bills its own prepaid unlocker balance. |
| timeout_ms | integer | – | Per-attempt timeout at the target, in ms |
| tls_profile | string | – | Browser TLS profile for the connection (default chrome) |
| url | string | yes | Target URL |
| wait_for_selector | string | – | With render: wait for this CSS selector before capturing the page |
| wait_ms | integer | – | With render: extra wait after load, in ms |
No output schema declared.
No examples provided.
whitelist_ip ~258
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 | Type | Req | Description |
|---|---|---|---|
| action | string | yes | What to do with the order's whitelist |
| city | string | – | Mobile add: city slug |
| country | string | – | Mobile add: geo targeting for the ports, e.g. 'us' |
| ip | string | – | The IP to add/remove (required for add and remove) |
| isp | string | – | Mobile add: ISP code, e.g. 'tmobile' |
| orderId | string | yes | The proxy service's orderId (from list_proxies) |
| ports_count | integer | – | Mobile add: number of ports to allocate |
| protocol | string | – | Mobile add: protocol for the allocated ports |
| region | string | – | Mobile add: region slug |
| sticky | boolean | – | Mobile add: keep the same IP per port |
| ttl | integer | – | Mobile add: sticky session TTL in seconds |
No output schema declared.
No examples provided.
How do I install the io.github.quantumproxies/quantumproxies-mcp server?
io.github.quantumproxies/quantumproxies-mcp runs locally as an npm package, launched with npx -y quantumproxies-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
npm · quantumproxies-mcp
claude mcp add quantumproxies-quantumproxies-mcp -- npx -y quantumproxies-mcp
What is the io.github.quantumproxies/quantumproxies-mcp server?
io.github.quantumproxies/quantumproxies-mcp is listed in the public MCP registry as io.github.quantumproxies/quantumproxies-mcp. Web scraping, SERP search, crawl/map and 74 Collectors through residential proxies. 25 tools. This page covers its npm package (quantumproxies-mcp).
Is the io.github.quantumproxies/quantumproxies-mcp server safe to use?
io.github.quantumproxies/quantumproxies-mcp scores 74 out of 100 on VerifyMCP. We recorded 1 known advisory against it as of 4 November 2026. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the io.github.quantumproxies/quantumproxies-mcp server expose?
io.github.quantumproxies/quantumproxies-mcp exposes 28 tools: scrape, unlock, generate_parser, save_parser_preset, list_parser_presets, and 23 more. Their descriptions and schemas cost roughly 8,587 tokens of context every time the server is loaded.
Is the io.github.quantumproxies/quantumproxies-mcp server still maintained?
io.github.quantumproxies/quantumproxies-mcp is still listed as active in the MCP registry. We last reached this channel on 4 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the io.github.quantumproxies/quantumproxies-mcp server under?
io.github.quantumproxies/quantumproxies-mcp declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.