Skip to main content
Glama

Solve a captcha

solve_captcha

Solve reCAPTCHA v2/v3/Enterprise, Cloudflare Turnstile, DataDome, or image captchas during browser/HTTP automation; return the token, cookie, or text needed to pass the page.

Instructions

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.

Input Schema

TableJSON 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

TableJSON Schema
NameRequiredDescriptionDefault
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).

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.0.0

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.

Deploy Server

Other Tools