{"_id":"@2captcha/mcp","_rev":"2-4b7fb0ad28ba34727a489b15e15186cc","name":"@2captcha/mcp","dist-tags":{"latest":"0.1.2"},"versions":{"0.1.0":{"name":"@2captcha/mcp","version":"0.1.0","keywords":["mcp","2captcha","web-scraping","captcha","marketplace","data-extraction","browser-automation"],"author":{"name":"2Captcha"},"license":"MIT","_id":"@2captcha/mcp@0.1.0","maintainers":[{"name":"khivrin","email":"director@altwebgroup.com"},{"name":"kratzky","email":"kratzky@gmail.com"},{"name":"dima6699","email":"dzmitry.duboyski@gmail.com"},{"name":"rickby999","email":"rustem@2captcha.com"},{"name":"maksim_s","email":"poplers24@gmail.com"}],"homepage":"https://2captcha.com","bugs":{"url":"https://github.com/2captcha/2captcha-mcp/issues"},"bin":{"2captcha-mcp":"server.js"},"dist":{"shasum":"6429c24b6af9d7fb10530838d5c44bbbe3463c51","tarball":"https://registry.npmjs.org/@2captcha/mcp/-/mcp-0.1.0.tgz","fileCount":8,"integrity":"sha512-/pilmIcG4a8cG109Av5hUFlThlDhAW1ULuOLu1s+N1/n7iV1UsHpmQ73ftXGUw/G0TXnmflf6oiOdq4U0ZpvZw==","signatures":[{"sig":"MEYCIQCuqRZ9qamuNzcWqYv90yW2XE/mzuwdOL7YMMTFG6Tq7QIhAOW1qo2KtOJbb2Zmm3dfnsAnW4/EBzGVR0lvbzE086ab","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":55900},"main":"./server.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"ad5d5477b53472eb01cc9c11e9aafc2725671e97","mcpName":"com.2captcha/mcp","scripts":{"test":"node --test","start":"node server.js"},"_npmUser":{"name":"rickby999","email":"rustem@2captcha.com"},"repository":{"url":"git+https://github.com/2captcha/2captcha-mcp.git","type":"git"},"_npmVersion":"10.8.2","description":"Official 2Captcha MCP server — web scraping, marketplace parsing, structured extraction, browser automation and CAPTCHA solving for AI agents","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.24.2","@modelcontextprotocol/sdk":"^1.21.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mcp_0.1.0_1788251689160_0.13339776214557375","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@2captcha/mcp","version":"0.1.2","description":"Official 2Captcha MCP server — web scraping, marketplace parsing, structured extraction, browser automation and CAPTCHA solving for AI agents","type":"module","main":"./server.js","bin":{"2captcha-mcp":"server.js"},"scripts":{"start":"node server.js","test":"node --test"},"keywords":["mcp","2captcha","web-scraping","captcha","marketplace","data-extraction","browser-automation"],"author":{"name":"2Captcha"},"repository":{"type":"git","url":"git+https://github.com/2captcha/2captcha-mcp.git"},"bugs":{"url":"https://github.com/2captcha/2captcha-mcp/issues"},"homepage":"https://2captcha.com","license":"MIT","engines":{"node":">=18.0.0"},"dependencies":{"@modelcontextprotocol/sdk":"^1.21.2","zod":"^3.24.2"},"publishConfig":{"access":"public"},"mcpName":"com.2captcha/mcp","_id":"@2captcha/mcp@0.1.2","gitHead":"96ce825941d15d90f4174f2ee0c016d9c6b1b93b","_nodeVersion":"20.20.2","_npmVersion":"10.8.2","dist":{"integrity":"sha512-KToSxoR1a2mi+K62npzdkPrnw5vDhXQlE6YErQQeyT+fGJJJlMox3C8htd30n/R8tVj+cXzhrpsB5NAhdFcE1A==","shasum":"9b73c9508425286d6af3c54c1b49baf400827f47","tarball":"https://registry.npmjs.org/@2captcha/mcp/-/mcp-0.1.2.tgz","fileCount":8,"unpackedSize":55904,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIH64txEQwKX6nbZBU7wyTNJAzFw+r3CQPDsV53G5IyNEAiEAtllpR+3+6+K9wyekIGaGAxDJw5wAEpV8rwc/H5iGd9E="}]},"_npmUser":{"name":"rickby999","email":"rustem@2captcha.com"},"directories":{},"maintainers":[{"name":"khivrin","email":"director@altwebgroup.com"},{"name":"kratzky","email":"kratzky@gmail.com"},{"name":"dima6699","email":"dzmitry.duboyski@gmail.com"},{"name":"rickby999","email":"rustem@2captcha.com"},{"name":"maksim_s","email":"poplers24@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mcp_0.1.2_1788337324393_0.8194304838252584"},"_hasShrinkwrap":false}},"time":{"created":"2026-09-01T08:34:48.981Z","modified":"2026-09-02T08:22:04.795Z","0.1.0":"2026-09-01T08:34:49.312Z","0.1.2":"2026-09-02T08:22:04.558Z"},"bugs":{"url":"https://github.com/2captcha/2captcha-mcp/issues"},"author":{"name":"2Captcha"},"license":"MIT","homepage":"https://2captcha.com","keywords":["mcp","2captcha","web-scraping","captcha","marketplace","data-extraction","browser-automation"],"repository":{"type":"git","url":"git+https://github.com/2captcha/2captcha-mcp.git"},"description":"Official 2Captcha MCP server — web scraping, marketplace parsing, structured extraction, browser automation and CAPTCHA solving for AI agents","maintainers":[{"name":"khivrin","email":"director@altwebgroup.com"},{"name":"kratzky","email":"kratzky@gmail.com"},{"name":"dima6699","email":"dzmitry.duboyski@gmail.com"},{"name":"rickby999","email":"rustem@2captcha.com"},{"name":"maksim_s","email":"poplers24@gmail.com"}],"readme":"<div align=\"center\">\n\n<h1>2Captcha MCP</h1>\n\n<p><strong>Web scraping with anti-bot bypass, marketplace parsing to structured JSON, and CAPTCHA solving for AI agents over the Model Context Protocol.</strong></p>\n<p>Works with Claude, Cursor, coding agents, and any MCP-compatible client.</p>\n\n<p>\n  <strong>Free monthly allowance on every account</strong> — sign up, add your API key, and the\n  first 200 calls a month are on us. <a href=\"#free-tier-whats-included\">What's included</a>\n</p>\n\n<p>\n  <a href=\"#free-tier-whats-included\">Free Tier</a> •\n  <a href=\"#quick-start\">Quick Start</a> •\n  <a href=\"#tool-selection-groups\">Tool Groups</a> •\n  <a href=\"#tools-reference-40-tools\">Tools</a> •\n  <a href=\"#configuration\">Configuration</a> •\n  <a href=\"#troubleshooting\">Troubleshooting</a>\n</p>\n\n</div>\n\n> [!IMPORTANT]\n> The official 2Captcha MCP package is **`@2captcha/mcp`** (published under the [@2captcha](https://www.npmjs.com/org/2captcha) npm organization). The unscoped `2captcha-mcp` package on npm is **not affiliated with 2Captcha** — don't put your API key into it.\n\n---\n\n## Overview\n\nThe 2Captcha MCP server gives AI agents real-time access to web data that blocks ordinary HTTP clients. It exposes **40 tools** covering:\n\n- **Web search** — ranked organic results (title, URL, snippet) for a query\n- **Page scraping** — any URL as clean Markdown or raw HTML. Every request runs through a tiered anti-bot ladder: hidden JSON APIs, a TLS-impersonating HTTP client, rotating residential proxies, and a managed browser with CAPTCHA solving — escalating only as far as the page requires, so easy pages stay fast and cheap.\n- **Marketplace parsing** — product pages and search listings as structured JSON (title, price, rating, seller, stock, offers). Deterministic tiers first (hidden marketplace APIs, JSON-LD, learned selectors); an LLM extraction pass only when they miss.\n- **Structured extraction** — any URL or raw text plus your own JSON Schema in, matching JSON out.\n- **Batch jobs** — run the scraping/parsing tools over many URLs as a background job: submit, poll, cancel.\n- **CAPTCHA solving, including in *your* browser** — solve any type 2Captcha supports (reCAPTCHA, Turnstile, hCaptcha, DataDome, images, …). `detect_captcha` names the wall on a page you are already driving in Playwright MCP, browser-use or an extension — free, from HTML you paste in — and `solve_captcha_on_page` solves it and hands back the exact JavaScript or cookie to apply in **your own session**. Nothing has to move to our browser.\n- **Browser logins** — opt-in. Sign in to a site whose login form is behind a CAPTCHA, in a managed browser, and save the session for later.\n\nTwo deployment options: the **hosted remote server** (one URL, no installation) or a **local instance** via `npx @2captcha/mcp`.\n\n---\n\n## Free tier: what's included\n\nSigning up for 2Captcha is free, and an account comes with a monthly allowance on this server:\n**200 calls or $0.50 of measured spend per 30 days**, whichever comes first, across the **whole**\ntool surface — scraping, marketplace parsing, structured extraction, batch jobs, the browser tools\nand CAPTCHA solving. No card, no separate plan, no feature gating.\n\nThe window is rolling rather than calendar-monthly, so capacity returns continuously instead of\neveryone's quota resetting on the 1st.\n\nThe allowance is metered **per account**, which is why a credential is required: the identity is\nwhat it is counted against. There is no anonymous mode — an IP address is not an identity, and a\nfree tier keyed to one is a free tier keyed to a proxy pool.\n\n`get_account` reports what is left, so an agent can plan around the limit instead of discovering it\nas a failure halfway through a task:\n\n```json\n{\"tenant\": \"2captcha:8f14e45fceea167a\",\n \"free_tier\": {\"allowance\": {\"max_calls\": 200, \"calls\": 12, \"remaining_calls\": 188,\n                             \"max_spend_usd\": 0.5, \"remaining_spend_usd\": 0.4871,\n                             \"window_hours\": 720}}}\n```\n\nNothing else on this server bills per call: CAPTCHA solves are charged to your 2Captcha balance as\nthey always were, and `include_meta: true` reports what any call actually cost. So when the\nallowance runs out, calls are refused until the window refills — the message says so, and says the\noperator can raise it. Need more than the allowance? Talk to the operator; on the hosted service\nthat is [2Captcha support](https://2captcha.com/support).\n\n---\n\n## Quick Start\n\n### Hosted server — no installation\n\nAdd the URL to your MCP client with an `Authorization` header:\n\n```\nURL:    https://mcp.2captcha.com/mcp\nHeader: Authorization: Bearer YOUR_API_TOKEN\n```\n\nYour token is your **2Captcha API key** ([account settings](https://2captcha.com/setting)) or the bearer token your server operator issued. Signing up is free and brings the [monthly allowance](#free-tier-whats-included) with it.\n\n### Local server via npx\n\n```json\n{\n  \"mcpServers\": {\n    \"2captcha\": {\n      \"command\": \"npx\",\n      \"args\": [\"@2captcha/mcp\"],\n      \"env\": {\n        \"API_TOKEN\": \"<your-api-token-here>\"\n      }\n    }\n  }\n}\n```\n\nThe local server mirrors the hosted tool surface over stdio — use it with clients that can't send auth headers or only launch local MCP servers.\n\n<details>\n<summary><b>Claude Code</b></summary>\n\n```bash\nclaude mcp add --transport http 2captcha https://mcp.2captcha.com/mcp \\\n  --header \"Authorization: Bearer YOUR_API_TOKEN\"\n```\n\nOr locally:\n\n```bash\nclaude mcp add 2captcha -e API_TOKEN=YOUR_API_TOKEN -- npx @2captcha/mcp\n```\n\n</details>\n\n<details>\n<summary><b>Claude Desktop</b></summary>\n\nEdit the config file (macOS `~/Library/Application Support/Claude/claude_desktop_config.json`, Windows `%APPDATA%\\Claude\\claude_desktop_config.json`) and restart the app:\n\n```json\n{\n  \"mcpServers\": {\n    \"2captcha\": {\n      \"command\": \"npx\",\n      \"args\": [\"@2captcha/mcp\"],\n      \"env\": { \"API_TOKEN\": \"YOUR_API_TOKEN\" }\n    }\n  }\n}\n```\n\n</details>\n\n<details>\n<summary><b>Cursor</b></summary>\n\nAdd to `~/.cursor/mcp.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"2captcha\": {\n      \"command\": \"npx\",\n      \"args\": [\"@2captcha/mcp\"],\n      \"env\": { \"API_TOKEN\": \"YOUR_API_TOKEN\" }\n    }\n  }\n}\n```\n\n</details>\n\n<details>\n<summary><b>VS Code (GitHub Copilot)</b></summary>\n\nAdd to `.vscode/mcp.json`:\n\n```json\n{\n  \"servers\": {\n    \"2captcha\": {\n      \"command\": \"npx\",\n      \"args\": [\"@2captcha/mcp\"],\n      \"env\": { \"API_TOKEN\": \"YOUR_API_TOKEN\" }\n    }\n  }\n}\n```\n\n</details>\n\n<details>\n<summary><b>MCP Inspector (explore the tools by hand)</b></summary>\n\n```bash\nAPI_TOKEN=YOUR_API_TOKEN npx @modelcontextprotocol/inspector npx @2captcha/mcp\n```\n\nOr connect the Inspector directly to `https://mcp.2captcha.com/mcp` (transport **Streamable HTTP**, header `Authorization: Bearer YOUR_API_TOKEN`).\n\n</details>\n\n### Try it\n\nAsk your agent:\n\n> Parse https://www.wildberries.ru/catalog/0/search.aspx?search=coffee as search results and list the five cheapest items.\n\n> Scrape https://news.ycombinator.com and summarize the top stories.\n\n> What's my 2Captcha balance?\n\n---\n\n## Tool Selection: Groups\n\nBy default the server exposes the **parsing, batch, and captcha** groups (17 tools). The browser groups are opt-in: they are the one part of the surface that costs a client real context every turn, and most tasks never touch it.\n\nMeasured cost of each group, as the tool definitions a client puts on every request (name +\ndescription + JSON Schema, tiktoken `o200k_base` — regenerate with the service repo's\n`benchmarks/scripts/tool_surface_tokens.py`):\n\n| Group | Tools | Tokens |\n|---|---:|---:|\n| `parsing` | 7 | 3,936 |\n| `batch` | 4 | 1,759 |\n| `captcha` | 6 | 2,180 |\n| **default (the three above)** | **17** | **7,875** |\n| `browser` | 11 | +2,842 |\n| `browser_full` | 23 | +5,201 |\n| `all` | 40 | 13,076 |\n\n| Group | Tools | What it's for |\n|---|---|---|\n| `parsing` | `scrape_page`, `search_web`, `discover_urls`, `discover_search_params`, `parse_marketplace`, `extract`, `get_account` | Search the web, scrape pages, discover a site's URLs and its search parameters, parse marketplaces, extract structured JSON |\n| `batch` | `scrape_pages`, `parse_pages`, `get_job`, `cancel_job` | The parsing tools over many URLs as background jobs |\n| `captcha` | `list_captcha_types`, `solve_captcha`, `detect_captcha`, `solve_captcha_on_page`, `captcha_report`, `captcha_balance` | Solve any CAPTCHA type 2Captcha supports — including one on a page in **your own** browser |\n| `browser` | 11 `browser_*` tools | Sign in behind a CAPTCHA in a managed browser and save the session |\n| `browser_full` | all 23 `browser_*` tools | The complete Playwright-style surface, when you actually want it here |\n| `all` | everything the server advertises | No filtering — includes tools added server-side in the future |\n\n**Why `captcha` is a default and `browser` is not.** `detect_captcha` and `solve_captcha_on_page`\nwork on HTML from whatever browser you are *already* driving, so they are useful to a client that\nnever opens ours — which is the common case. See [Driving your own\nbrowser](#driving-your-own-browser-recommended).\n\n### Configuration examples\n\n```json\n{\n  \"mcpServers\": {\n    \"2captcha\": {\n      \"command\": \"npx\",\n      \"args\": [\"@2captcha/mcp\"],\n      \"env\": {\n        \"API_TOKEN\": \"YOUR_API_TOKEN\",\n        \"GROUPS\": \"parsing,browser\"\n      }\n    }\n  }\n}\n```\n\nIndividual tools, no groups:\n\n```json\n\"env\": {\n  \"API_TOKEN\": \"YOUR_API_TOKEN\",\n  \"TOOLS\": \"scrape_page,solve_captcha\"\n}\n```\n\n`GROUPS` and `TOOLS` combine (union). Tool availability is ultimately the server's decision — a group named here only filters what the server actually advertises.\n\n---\n\n## Tools Reference (40 Tools)\n\n### Which tool to use\n\n- **Looking for pages to scrape?** → `search_web` (query → ranked URLs)\n- **Just need the page content?** → `scrape_page` (no LLM, cheapest)\n- **Need a URL inventory before batching?** → `discover_urls` (robots.txt + sitemaps, no crawling)\n- **Building a search URL for a site?** → `discover_search_params` (its real parameter names, not a guess)\n- **Product or search page → JSON?** → `parse_marketplace` (deterministic tiers first, LLM fallback)\n- **Your own schema from any page/text?** → `extract` (always one LLM call, or cache)\n- **Many URLs?** → `scrape_pages` / `parse_pages` + `get_job`\n- **Hit a CAPTCHA in your own browser?** → `detect_captcha` (free) then `solve_captcha_on_page`\n- **A CAPTCHA token for your own automation?** → `list_captcha_types` then `solve_captcha`\n- **Log in past a CAPTCHA and keep the session?** → `GROUPS=browser`, then `browser_navigate` → `browser_fill` → `browser_click` → `browser_save_session`\n\n### Parsing\n\n| Tool | Description | Costs money? |\n|---|---|---|\n| `scrape_page` | Fetch a page and return its readable content as markdown (or raw HTML with `clean=false`). Options: `render`, `keep_links`, `structured_data`, `country`, `max_chars`/`offset` windowing, per-call `freshness_seconds` caching. | proxy/browser only |\n| `search_web` | Find URLs for a query: ranked organic results with title, url and snippet. Options: `count`, `country`, `engine`. | no LLM |\n| `discover_urls` | List the URLs a site publishes in robots.txt and XML sitemaps — a reviewable inventory for `scrape_pages`/`parse_pages`, with `pattern`/`prefix` filters. Not a crawler. | no LLM |\n| `discover_search_params` | A site's real URL search parameters, read off one page: the query parameters its own links use (with values known to work) plus any `<form>` controls. Use it instead of guessing a search URL. | no LLM |\n| `parse_marketplace` | Product page (`target=\"product\"`) or listing (`target=\"search_results\"`) → structured JSON. Pass `schema` for your own shape, `include_offers` for Amazon Buy-Box data, `include_meta` for cost/provenance metadata. | LLM only when the deterministic tiers miss |\n| `extract` | Any URL or raw text + your JSON Schema → extracted JSON. `instructions` steers the extraction. | always one LLM call (or cache) |\n| `get_account` | Tenant identity, configured capabilities, session spend counters. | no |\n\n### Batch jobs\n\n| Tool | Description |\n|---|---|\n| `scrape_pages` / `parse_pages` | The tools above over many URLs; return a `job_id` immediately (or wait up to `wait_seconds`). |\n| `get_job` | Poll status and collect per-item results. |\n| `cancel_job` | Stop a running job (stops the spending). |\n\n### Driving your own browser (recommended)\n\nIf you already have a browser — Playwright MCP, browser-use, a Chrome extension, your own\nPlaywright script — **keep it**, and use these two tools for the part that needs a solver account:\n\n```\nyour browser hits a wall\n  -> browser_get_html / page.content()      your session, your IP\n  -> detect_captcha(url, html=...)          free: \"recaptcha, sitekey 6Lc..., solvable\"\n  -> solve_captcha_on_page(url, html=...)   one solve\n  -> run apply.javascript in your page      returns 'callback' / 'submit' / 'set'\n```\n\n`apply.javascript` is a complete expression with the token already inlined — it is the same\ninjector this service's own render tier uses — so it drops straight into `page.evaluate`, a\ndevtools console, or any run-JS tool. When the answer is a cookie instead (DataDome, AWS WAF) you\nget the parsed cookie and the instruction to re-request rather than reload.\n\nTwo things worth knowing. Pass `html` from **your** browser, because anti-bot walls are raised per\nclient and our address sees a different page than yours. And for DataDome or CaptchaFox pass your\nown `proxy` and `user_agent`: those answers are minted for the identity that solved them, so one\nsolved as us is refused in your session even though it is technically correct.\n\n### Browser logins (`GROUPS=browser`, 11 tools)\n\nThe managed browser is not trying to out-Playwright Playwright. That surface is free and you\nprobably already have it, and this one holds **one live page per account**, so it is the wrong tool\nfor anything parallel. What it has that a plain browser does not is that it solves the CAPTCHA in\nthe login form, and it can keep the cookies afterwards — so the group is scoped to exactly that,\nat **2,842 tokens instead of 5,201**:\n\n| Category | Tools |\n|---|---|\n| Navigate & interact | `browser_navigate`, `browser_click`, `browser_fill`, `browser_type`, `browser_press_key` |\n| Read | `browser_snapshot` (accessibility tree with element `ref`s), `browser_get_text`, `browser_get_html` |\n| Sessions | `browser_save_session`, `browser_load_session`, `browser_list_sessions` |\n\nSet `GROUPS=browser_full` for the complete 23-tool surface — adding history (`browser_go_back`,\n`browser_go_forward`, `browser_reload`), `browser_scroll`, `browser_select_option`,\n`browser_hover`, `browser_drag`, `browser_console_messages`, `browser_evaluate`,\n`browser_snapshot_items`, `browser_screenshot` and `browser_save_as_pdf`.\n\n### CAPTCHA\n\n| Tool | Description | Costs money? |\n|---|---|---|\n| `list_captcha_types` | The catalogue of solvable types with their required parameters — call it before `solve_captcha` instead of guessing. | no |\n| `solve_captcha` | Solve a CAPTCHA of any supported kind; returns the token/answer, a `captcha_id`, and the cost. | **yes — one solve per call** |\n| `detect_captcha` | Identify the wall on a page — widget type, sitekey, whether a solvable task can be built from it, and the exact `solve_captcha` call to issue. Pass `html` from your own browser. Never solves. | no (free with `html`) |\n| `solve_captcha_on_page` | Detect + solve in one step, and return an `apply` block: a self-contained JS expression to `evaluate`, or a cookie to add and a URL to re-request. | **yes — one solve per call** |\n| `captcha_report` | Report a solution good/bad (bad reports refund). | no |\n| `captcha_balance` | Current balance in USD. | no |\n\n### Local\n\n| Tool | Description |\n|---|---|\n| `session_stats` | Tool usage during this session (calls per tool, rate-limit window). Handled locally, free. |\n\n---\n\n## Configuration\n\n### Environment variables\n\n| Variable | Required | Default | Description |\n|---|---|---|---|\n| `API_TOKEN` | **yes** | — | Your 2Captcha API key, or the bearer token your server operator issued. Signing up is free and includes the [monthly allowance](#free-tier-whats-included) |\n| `GROUPS` | no | `parsing,batch,captcha` | Comma-separated tool groups (see above): `browser` adds the 11 login tools, `browser_full` all 23, `all` disables filtering |\n| `TOOLS` | no | — | Comma-separated individual tool names to enable |\n| `MCP_URL` | no | `https://mcp.2captcha.com/mcp` | The remote MCP endpoint — set it for a self-hosted server |\n| `POLLING_TIMEOUT` | no | `600` | Per-tool-call timeout in seconds (renders, batch jobs and CAPTCHA solves can take minutes) |\n| `RATE_LIMIT` | no | — | Client-side call limiter, e.g. `100/1h` or `50/30m` |\n\n---\n\n## How it works\n\nThis package is a thin stdio bridge to the remote service: tool schemas are fetched live from the server at startup and on every `tools/list`, so the package never drifts from the deployed tool surface, and new server-side tools appear automatically under `GROUPS=all`. Calls are forwarded verbatim — including `structuredContent`, images (screenshots), and tool errors — with automatic reconnection if the connection drops mid-session.\n\nCosts are metered server-side against your token: scraping spends proxy/browser resources, `solve_captcha` spends one solve per call, and the LLM extraction in `parse_marketplace`/`extract` bills your own LLM key when you have one vaulted (BYOK), the server default otherwise. Pass `include_meta: true` to the parsing tools to see exactly what a call spent — this service is the only one that reports the price of a call to the agent making it, rather than only in a dashboard afterwards.\n\nThe [free-tier allowance](#free-tier-whats-included) runs on that same meter, keyed to your account over its own 30-day window — which is why `get_account` can tell you exactly how many calls and how much spend you have left.\n\n---\n\n## Troubleshooting\n\n### \"Cannot run without the API_TOKEN env\"\n\nSet `API_TOKEN` in the `env` block of your client config to your 2Captcha API key ([account\nsettings](https://2captcha.com/setting)). The free allowance is metered per account, so it needs\nthe credential — signing up is free.\n\n### \"Authentication to … failed\"\n\nThe server rejected the token. Check for whitespace, and confirm which credential your deployment accepts (2Captcha API key vs. an operator-issued token).\n\n### \"has used N of N calls allowed per 720h\"\n\nYour account's [monthly allowance](#free-tier-whats-included) is spent. The window is rolling, so\ncapacity returns as older calls age out; `get_account` shows how much is left and when. On a\nself-hosted server the operator raises `WEBPARSE_FREE_TIER_MAX_CALLS` /\n`WEBPARSE_FREE_TIER_MAX_SPEND_USD`, or exempts the account entirely.\n\n### \"is outside this server's allowance, which covers: …\"\n\nThe operator narrowed the allowance to a subset of tools (`WEBPARSE_FREE_TIER_TOOLS`). That is a\nserver-wide restriction, not something a different credential lifts — ask them to widen it.\n`get_account` lists the tools your account can reach.\n\n### \"spawn npx ENOENT\"\n\nYour MCP client can't find Node. Install [Node.js ≥ 18](https://nodejs.org) and make sure `npx` is on the PATH the client uses (on macOS GUI apps, use an absolute path to `npx`).\n\n### Timeouts on hard sites\n\nPages that force the full ladder (managed browser + CAPTCHA solve) can take minutes. Raise `POLLING_TIMEOUT` (seconds), and prefer `scrape_pages`/`parse_pages` for many URLs so the waiting happens server-side.\n\n### A tool I expect is missing\n\nThe default exposes `parsing,batch,captcha`. For a browser tool, set `GROUPS=browser` (the 11\nlogin tools) or `GROUPS=browser_full` (all 23); `GROUPS=all` disables filtering entirely. If it is\nstill missing, the server itself has that tool set disabled — or the operator narrowed the\nallowance to a subset of tools (`get_account` will say).\n\n---\n\n## License\n\nMIT — © 2Captcha. See [LICENSE](./LICENSE).\n","readmeFilename":"README.md"}