Skip to main content
Glama

CaptchaNo MCP server

npm License: MIT

The official Model Context Protocol server for CaptchaNo. It lets AI agents (Claude, Cursor, VS Code Copilot and any other MCP client) solve reCAPTCHA v2 / v3 / Enterprise, Cloudflare Turnstile, DataDome and image captchas while running a browser or HTTP automation.

Solves run on CaptchaNo's own solving infrastructure and are billed to your CaptchaNo balance. Failed solves are never billed.

Use it only for authorised automation. Solve captchas only on sites you own, sites you have permission to automate, or sites whose terms allow it (QA of your own forms, accessibility, monitoring your own properties, research with permission). You are responsible for how you use it.

Quick start

  1. Create an API key at https://captchano.com/dashboard. Keys start with cn-.

  2. Add the server to your MCP client (snippets below). It runs with npx -y captchano-mcp. Node.js 20.3 or newer is required.

  3. Ask your agent something like "Open the signup page, solve the captcha and submit the form."

Claude Code

claude mcp add captchano -e CAPTCHANO_API_KEY=cn-... -- npx -y captchano-mcp

Add --scope user to make it available in every project.

Claude Desktop

Edit claude_desktop_config.json (Settings → Developer → Edit Config):

{
  "mcpServers": {
    "captchano": {
      "command": "npx",
      "args": ["-y", "captchano-mcp"],
      "env": {
        "CAPTCHANO_API_KEY": "cn-...",
        "CAPTCHANO_MAX_SPEND_USD": "1.00"
      }
    }
  }
}

Cursor

~/.cursor/mcp.json (global) or .cursor/mcp.json (project):

{
  "mcpServers": {
    "captchano": {
      "command": "npx",
      "args": ["-y", "captchano-mcp"],
      "env": { "CAPTCHANO_API_KEY": "cn-..." }
    }
  }
}

VS Code (GitHub Copilot agent mode)

.vscode/mcp.json. VS Code asks for the key the first time and stores it securely:

{
  "inputs": [
    {
      "type": "promptString",
      "id": "captchano-api-key",
      "description": "CaptchaNo API key (cn-...)",
      "password": true
    }
  ],
  "servers": {
    "captchano": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "captchano-mcp"],
      "env": { "CAPTCHANO_API_KEY": "${input:captchano-api-key}" }
    }
  }
}

Windsurf, Cline, Zed and other clients

Use the same command / args / env as above: command npx, args ["-y", "captchano-mcp"], env CAPTCHANO_API_KEY.

Docker

docker build -t captchano-mcp .
docker run -i --rm -e CAPTCHANO_API_KEY=cn-... captchano-mcp

Related MCP server: praisonai-captcha-solver-mcp-tool

Configuration

All configuration is read from environment variables. The API key is never accepted as a tool argument.

Variable

Required

Default

Description

CAPTCHANO_API_KEY

yes

–

Your API key (cn-...).

CAPTCHANO_MAX_SPEND_USD

no

unlimited

Spend ceiling for this server process, in USD. See Budget.

CAPTCHANO_WAIT

no

45

Seconds the API blocks on each solve request (?wait=N, max 120) before the server switches to polling.

CAPTCHANO_TOOL_TIMEOUT

no

50

Max seconds one solve_captcha call takes before returning a resumable solving result. Many MCP clients cancel tool calls at 60 s; raise this only if yours allows longer.

CAPTCHANO_API_BASE

no

https://api.captchano.com

API base URL.

CAPTCHANO_MCP_HTTP_TOKEN

no

–

In --http mode, require Authorization: Bearer <token> on /mcp.

CAPTCHANO_LOG_LEVEL

no

info

debug, info, warn, error or silent. Logs go to stderr only.

Tools

solve_captcha

Solves a captcha and returns the value the page needs. Billed per successful solve.

Argument

Types

Notes

type

all

recaptcha_v2, recaptcha_v3, recaptcha_enterprise, turnstile, datadome, image

url

all except image

Full URL of the page that shows the captcha

sitekey

recaptcha_*, turnstile

From data-sitekey, the k= iframe parameter or the render= script parameter

action

recaptcha_v3, recaptcha_enterprise, turnstile

The action name the page uses

minScore

recaptcha_v3

0.1–0.9

invisible

recaptcha_v2, recaptcha_enterprise

true for invisible widgets

cData, pageData

turnstile

data-cdata; pageData for Cloudflare challenge pages

challengeUrl

datadome (required)

Full captcha URL from the blocked response

proxy

datadome (required), optional for token types

"http://user:pass@host:port" (http, socks4, socks5) or { scheme, host, port, username, password }

body

image (required)

Base64 image. A data:image/...;base64, prefix is accepted

userAgent

all except image

The User-Agent of the client that will use the solution

How a call runs: the server sends POST /v1/solve?wait=N. If the API answers 202 (still solving), the server polls GET /v1/task/{id} every 5 seconds, for up to 50 seconds in total by default (CAPTCHANO_TOOL_TIMEOUT). If the task is still solving after that, the result has status: "solving" and the task id, and the agent should call get_task with that id rather than solving again.

The result comes back as text (token, cookie or text, userAgent, cost, solveTime and the next step) and as structuredContent:

{
  "id": "…",
  "type": "recaptcha_v2",
  "status": "ready",
  "token": "03AFcWeA…",
  "cost": "…",
  "solveTime": "…",
  "sessionSpend": { "spentUsd": "…", "limitUsd": "1.0000", "remainingUsd": "…" }
}

get_task

{ id } → the same object. Use it to resume a solve that is still solving, or to read a result again. Solutions are kept for 10 minutes. Read-only and free.

get_balance

Returns { balance, currency, sessionSpend }. Read-only and free.

list_captcha_types

A static list of every supported type: its required and optional fields, which solution field it returns, and a one-line hint on where to find the sitekey (or other inputs) on the page. It makes no network call.

Errors

API errors come back as tool results with isError: true. Each one includes the error code, the API's message and a hint for what to do next. For example:

Error insufficient_balance: Insufficient balance
Hint: The CaptchaNo account has no balance left. Ask the user to top up at https://captchano.com/dashboard/topup, then retry. Failed solves are never billed.

API codes: invalid_api_key, insufficient_balance, unsupported_type, invalid_sitekey, proxy_required, proxy_unreachable, score_not_met, unsolvable, capacity_unavailable, rate_limited, task_not_found, upstream_error. Codes from this server: invalid_arguments (caught before any request is sent), budget_exhausted, network_error, timeout, cancelled, http_error.

Budget

Set CAPTCHANO_MAX_SPEND_USD to cap what one server process can spend. The server adds up the cost the API returns for every task it submitted, counting each task once. Once the total reaches the limit, solve_captcha returns budget_exhausted without contacting the API. get_task, get_balance and list_captcha_types keep working.

Notes:

  • The cap applies to each process. Restarting the server or the MCP client resets it. For a hard account-wide cap, keep only a small balance on the key.

  • The cap is checked before each solve. A solve that starts just under the limit can finish slightly over it, by at most the cost of the solves already in flight.

HTTP mode

CAPTCHANO_API_KEY=cn-... CAPTCHANO_MCP_HTTP_TOKEN=$(openssl rand -hex 24) \
  npx -y captchano-mcp --http --port 8080            # serves http://127.0.0.1:8080/mcp
  • Stateless Streamable HTTP at /mcp, plus GET /healthz.

  • Binds to 127.0.0.1 by default. Use --host 0.0.0.0 only behind TLS and with CAPTCHANO_MCP_HTTP_TOKEN set: anyone who can reach the endpoint can spend your balance.

  • The key always comes from the server's environment, never from callers.

Security

  • Keys: CAPTCHANO_API_KEY is read from the environment only. It is never a tool argument, never included in tool results, and never logged. Log lines are also scrubbed of anything that looks like a cn- key, a bearer token or proxy credentials.

  • stdout is the protocol channel. All logging goes to stderr.

  • Spending: every successful solve_captcha is billed. Use CAPTCHANO_MAX_SPEND_USD and a dedicated key with a small balance for autonomous agents. The tool is annotated as a non-read-only, open-world tool, so clients that ask for confirmation will ask before it runs.

  • Proxies: proxy credentials are sent to the CaptchaNo API only, over HTTPS, and are never repeated in results or logs.

  • Prompt injection: a page an agent visits can try to make it solve captchas on other sites. Keep a human in the loop for solve calls you did not expect, and use the spend cap.

  • Report vulnerabilities to support@captchano.com.

Development

npm install
npm test          # unit tests (node:test, mocked fetch)
npm run e2e       # builds, then drives dist/ over stdio and HTTP with the official MCP client
npm run check     # typecheck + tests + build

npm run e2e calls get_balance against the real API with a dummy key and expects a clean invalid_api_key result. If CAPTCHANO_TEST_API_KEY is set, it also runs one live solve of the public reCAPTCHA v2 demo, with a $0.05 cap.

License

MIT © DishIs Technologies LLC

Available Tools

4 tools
get_balanceGet CaptchaNo balanceA
Read-onlyIdempotent

Return the CaptchaNo account balance (USD) and how much this MCP server has spent in the current session against its optional CAPTCHANO_MAX_SPEND_USD limit. Use before a large batch of solves, or after an insufficient_balance error. Free and read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
balanceYesAccount balance as a decimal string.
currencyYes
sessionSpendYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false. The description adds value beyond them by disclosing that the call is free (no spend incurred), that the returned spend figure is session-scoped, and that it is compared against an environment-configured cap — behavioral context the annotations do not carry.

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

Conciseness5/5

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

Two sentences, both earning their place: the first front-loads what is returned, the second states when to call it. No filler, no repetition of the title.

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

Completeness5/5

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

Zero parameters, an output schema that already documents the return shape, and annotations covering the safety profile — the description supplies the remaining needed context (cost-free, session-scoped spend, the limit it is measured against, and trigger conditions). Nothing an agent needs to invoke it correctly is absent.

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

Parameters4/5

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

The tool takes zero parameters, so the baseline is 4 and there is no parameter semantics the description could add or omit. Nothing here is misleading or missing.

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

Purpose5/5

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

States a specific verb (return) and resource (CaptchaNo account balance in USD), plus a second scope detail — session spend against the optional CAPTCHANO_MAX_SPEND_USD limit. It is unmistakably distinct from the siblings solve_captcha, get_task, and list_captcha_types, none of which report account state.

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

Usage Guidelines4/5

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

Gives two concrete, actionable triggers: before a large batch of solves, and after an insufficient_balance error. That is clear contextual guidance, though it never names an alternative tool or states when not to call it, keeping it short of a full 5.

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

get_taskGet a captcha taskA
Read-onlyIdempotent

Fetch the current status and solution of a task created by solve_captcha. Use when solve_captcha returned status "solving" (call again every ~5 s), or to re-read a solution you already received. Results are kept for 10 minutes. Free and read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesTask id returned by solve_captcha.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYesTask id; pass to get_task to fetch the result again (kept 10 minutes).
costNoAmount billed in USD (decimal string).
textNoRecognised text for image captchas.
typeYes
errorNo
tokenNoToken for recaptcha_* / turnstile.
cookieNoCookie for datadome.
statusYes
createdAtNo
solveTimeNo
userAgentNoUser-Agent the solution is bound to; reuse it when present.
billedFromNo
sessionSpendNoSpend tracked by this MCP server process (CAPTCHANO_MAX_SPEND_USD).

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint, so the safety profile is covered; the description correctly reinforces 'read-only' rather than contradicting it. It adds genuinely new behavioral context beyond the annotations – a 10-minute result retention window and a ~5-second polling cadence – plus that the call is free. It stops short of describing failure states, such as what happens when the id has expired.

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

Conciseness5/5

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

Three short sentences: what it does, when to call it (with polling guidance), then retention and cost traits. The action and the trigger are front-loaded and every sentence carries distinct information.

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

Completeness5/5

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

For a single-parameter polling tool with a full output schema, the description supplies everything an agent needs to decide to call it: the trigger, the poll interval, the retention window, and the cost. Return-value details are correctly left to the output schema.

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

Parameters3/5

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

Schema description coverage is 100% and the single parameter is documented as 'Task id returned by solve_captcha.' The description reinforces the same provenance ('a task created by solve_captcha') but adds no format, length, or validity semantics beyond the schema, so the baseline of 3 applies.

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

Purpose5/5

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

The description states a specific verb and resource: 'Fetch the current status and solution of a task created by solve_captcha.' It explicitly ties the tool to the sibling that creates the task, so an agent can distinguish get_task from solve_captcha without opening any schema.

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

Usage Guidelines5/5

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

It gives explicit trigger conditions: call when solve_captcha returned status "solving" and poll roughly every 5 seconds, or use it to re-read an already received solution. It also names the sibling tool that produces the id, leaving nothing to inference.

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

list_captcha_typesList supported captcha typesA
Read-onlyIdempotent

List every captcha type solve_captcha supports, with its required and optional fields, which solution field it returns, and how to find the sitekey (or other inputs) on the page. Use when you are unsure which type a page uses or which arguments to pass. Static, free, no network call.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
typesYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already establish readOnly, idempotent, non-destructive, and closed-world. The description adds genuinely new behavioral context beyond them: it is static, free, and makes no network call, which tells an agent it can call this speculatively without cost or latency. Missing only details like output size, which the output schema likely covers.

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

Conciseness5/5

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

Two sentences, no filler. The value proposition is front-loaded in sentence one and the usage trigger in sentence two, with the cost/no-network note compressed into a short trailing clause.

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

Completeness5/5

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

For a zero-arg, read-only discovery tool with an output schema and full annotation coverage, this description supplies everything an agent needs: what it enumerates, when to reach for it, and that calling it is cheap and side-effect free.

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

Parameters4/5

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

The tool takes zero parameters, so per the rubric the baseline is 4. The description correctly introduces no parameter guidance, which is appropriate here, and instead points at where inputs live in the return value rather than in the call.

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

Purpose5/5

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

The description names a specific verb+resource ('List every captcha type solve_captcha supports') and immediately scopes what the listing contains (required/optional fields, solution field, sitekey discovery). This clearly separates it from solve_captcha, get_task, and get_balance, which are action/state tools rather than a discovery lookup.

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

Usage Guidelines4/5

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

It states the trigger condition explicitly: 'Use when you are unsure which type a page uses or which arguments to pass.' That covers when to use it well. It stops short of an explicit when-not (e.g. skip if you already know the type), though the zero-arg, no-network framing makes the exclusion self-evident.

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

solve_captchaSolve a captchaA

Solve a captcha on a web page and return the token / cookie / text needed to pass it. Use when an authorised browser or HTTP automation is blocked by reCAPTCHA (v2, v3, Enterprise), Cloudflare Turnstile, DataDome or an image captcha. Before calling: identify the type and read the sitekey from the page (call list_captcha_types for where to find it and which fields each type needs). Required: recaptcha_* and turnstile → url + sitekey; datadome → url + challengeUrl + proxy; image → body (base64). Waits for the result (up to ~50 s by default, polling automatically). If it is still solving at the end, it returns the task id: call get_task with it instead of solving again. Each successful solve is billed to the CaptchaNo balance (cost is returned); failed solves are free. Do not call repeatedly for the same captcha: one token is valid for one submission and expires in about 2 minutes, so use it right away.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoFull URL of the page that shows the captcha. Required for every type except image.
bodyNoimage only (required): the captcha image, base64-encoded (a data:image/...;base64, prefix is accepted).
typeYesCaptcha kind: recaptcha_v2 (checkbox / invisible), recaptcha_v3 (score, no widget), recaptcha_enterprise, turnstile (Cloudflare), datadome, image (OCR).
cDataNoTurnstile only: value of data-cdata / the cData render option, if present.
proxyNoProxy the solve should run through: "http://user:pass@host:port" (schemes http, socks4, socks5) or an object. Required for datadome; optional otherwise.
actionNoAction name for recaptcha_v3 / recaptcha_enterprise (from grecaptcha.execute) or Turnstile data-action.
sitekeyNoSite key from the page (data-sitekey / k= / render= parameter). Required for recaptcha_* and turnstile.
minScoreNorecaptcha_v3 only: minimum score the token must reach, 0.1-0.9.
pageDataNoTurnstile only: chlPageData value when the captcha is a Cloudflare challenge page rather than a widget.
invisibleNorecaptcha_v2 / recaptcha_enterprise: true when the widget is invisible (no checkbox).
userAgentNoUser-Agent of the browser/HTTP client that will use the solution. Recommended so the solution matches your client.
challengeUrlNoDataDome only (required): the full captcha URL from the blocked response (iframe src / redirect), including its query string.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYesTask id; pass to get_task to fetch the result again (kept 10 minutes).
costNoAmount billed in USD (decimal string).
textNoRecognised text for image captchas.
typeYes
errorNo
tokenNoToken for recaptcha_* / turnstile.
cookieNoCookie for datadome.
statusYes
createdAtNo
solveTimeNo
userAgentNoUser-Agent the solution is bound to; reuse it when present.
billedFromNo
sessionSpendNoSpend tracked by this MCP server process (CAPTCHANO_MAX_SPEND_USD).

TDQS

A4.9/5.0
Behavior5/5

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

Goes well beyond the annotations (readOnly=false, idempotent=false, openWorld=true) by disclosing wait behaviour ('up to ~50 s by default, polling automatically'), the graceful-degradation path (returns the task id), cost/billing semantics (billed to CaptchaNo, failed solves free), and token lifetime/one-use constraint ('valid for one submission and expires in about 2 minutes'). These are exactly the operational traits annotations cannot express, and they are consistent with the declared non-idempotent, non-readOnly profile.

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

Conciseness5/5

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

Front-loads purpose, then usage, then prerequisites, then per-type requirements, then timing/billing/pitfalls. Despite being a long description for a 12-parameter tool, every sentence carries distinct actionable content (a required-field rule, a timing limit, a billing rule, or a misuse warning) with no filler.

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

Completeness5/5

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

With 12 parameters, an output schema present, and non-idempotent semantics, the description covers the gaps that matter: per-type required inputs, wait/timeout behaviour, the fallback to get_task, billing, and token reuse limits. Return values are deferred to the output schema, so nothing an agent needs to invoke this correctly is missing.

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

Parameters4/5

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

Schema description coverage is 100%, which sets a baseline of 3, but the description adds genuine cross-field conditional logic the schema cannot express per-property: which fields are required per type (recaptcha_*/turnstile → url + sitekey; datadome → url + challengeUrl + proxy; image → body). It also points to list_captcha_types for sitekey discovery, which the schema does not.

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

Purpose5/5

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

States a specific verb and resource (solve a captcha) plus the deliverable ('return the token / cookie / text needed to pass it'), and enumerates the covered captcha families (reCAPTCHA v2/v3/Enterprise, Turnstile, DataDome, image). An agent can distinguish this from get_task, get_balance and list_captcha_types without opening a schema.

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

Usage Guidelines5/5

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

Gives an explicit trigger condition ('Use when an authorised browser or HTTP automation is blocked by...'), names the alternative when the call outlives its window ('call get_task with it instead of solving again'), and adds an exclusion ('Do not call repeatedly for the same captcha'). Nothing about when to use or avoid this tool is left to inference.

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.

  1. 4 tool updatesv1.0.0
    • First observedget_balance
    • First observedget_task
    • First observedlist_captcha_types
    • First observedsolve_captcha

TDQS

A4.6/5.0

Scored across 4 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: solve_captcha performs solving, get_task polls task status, get_balance reads account funds, and list_captcha_types enumerates supported types. The descriptions explicitly delineate when to use each and how they chain together, leaving no room for misselection.

Naming Consistency5/5

All four names follow a strict verb_noun snake_case pattern (solve_captcha, get_task, get_balance, list_captcha_types). The convention is uniform and predictable throughout.

Tool Count4/5

Four tools is a tight, well-scoped set for a focused captcha-solving service, and each earns its place in the solve/poll/balance/discover workflow. It is slightly lean, with no dedicated cancel or error-report tool, but nothing is redundant.

Completeness4/5

The surface covers the full lifecycle: discovering supported types and required fields, solving, polling asynchronous tasks, and checking balance/spend limits. Minor gaps exist (no explicit task cancellation or failure-report operation), but these are handled by expiry and free-failed-solve semantics.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    Enables AI agents to drive your real, logged-in Chrome browser with existing sessions and cookies, bypassing CAPTCHA and anti-bot measures, with support for multi-session and human-in-the-loop workflows.
    40
    58
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables solving CAPTCHAs in MCP workflows with authorization, bounded attempts, and structured result validation.
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to perform stealth browser automation and anti-detection web interaction, including session management, humanized interactions, and bypassing anti-bot/WAF protections.
    MIT