AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
SKILL verified MIT Self-run

Captchasonic Solve

skill-captcha-sonic-agent-skills-captchasonic-solve · by Captcha-Sonic

Solve a CAPTCHA using the CaptchaSonic MCP server. Supports all types — PopularCaptcha, reCAPTCHA, Geetest, OCR, AWS WAF, TikTok, Binance, Cloudflare Turnstile, and more. Provide an image (path, URL, or base64) and captcha type.

No reviews yet
0 installs
19 views
0.0% view→install

Install

$ agentstack add skill-captcha-sonic-agent-skills-captchasonic-solve

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access Used
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/skill-captcha-sonic-agent-skills-captchasonic-solve)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
2mo ago

Declared compatibility

Claude CodeClaude Desktop

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Captchasonic Solve? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

Solve a CAPTCHA with CaptchaSonic

Use the CaptchaSonic MCP solve_captcha tool to solve any supported CAPTCHA type.

Prerequisites

The CaptchaSonic MCP server must be connected. If not set up yet, read references/mcp-setup.md or use the captchasonic-setup skill first.

Step 1: Identify the CAPTCHA Type

Determine the correct type parameter from the user's request:

| User Says | type Parameter | Category | |---|---|---| | "PopularCaptcha grid" / "select all X" | PopularCaptchaImage | Image (sync) | | "reCAPTCHA v2 grid" | PopularCaptchaImage | Image (sync) | | "Geetest slide" | geetest_slide | Image (sync) | | "Geetest click" | geetest_click | Image (sync) | | "Geetest nine-grid" | geetest_nine | Image (sync) | | "OCR" / "text captcha" | ocr | Image (sync) | | "AWS WAF" | aws | Image (sync) | | "TikTok" | tiktok | Image (sync) | | "Binance slide" | binance | Image (sync) | | "Cloudflare Turnstile" | turnstile | Token (async) | | "reCAPTCHA v2 token" | recaptcha_v2 | Token (async) | | "reCAPTCHA v3 token" | recaptcha_v3 | Token (async) |

Step 2: Gather Required Information

For image-based CAPTCHAs (sync):

  • type — the captcha type from the table above
  • question — the challenge text shown to the user (e.g., "Select all traffic lights")
  • image_base64 — base64-encoded PNG/JPEG image bytes
  • OR image_url — public URL of the captcha image

For token-based CAPTCHAs (async):

  • type — the captcha type (e.g., turnstile)
  • question — can be empty or describe the task
  • website_url — the page URL where the captcha appears

Step 3: Call the MCP Tool

Use the solve_captcha MCP tool with the gathered parameters.

Example for image captcha:

Tool: solve_captcha
Arguments:
  type: "PopularCaptchaImage"
  question: "Select all traffic lights"
  image_base64: ""

Example for token captcha:

Tool: solve_captcha
Arguments:
  type: "turnstile"
  question: "Cloudflare Turnstile"
  website_url: "https://example.com"

If the user provides a file path, read the image and base64-encode it:

base64 -i /path/to/captcha.png

If the user provides a URL, pass it as image_url:

Tool: solve_captcha
Arguments:
  type: "PopularCaptchaImage"
  question: "Select all traffic lights"
  image_url: "https://example.com/captcha.png"

Step 4: Interpret the Solution

The MCP tool returns a JSON result. Interpret based on the type field:

| Solution Type | Meaning | Example | |---|---|---| | grid | Click tiles at these 0-indexed positions (left→right, top→bottom) | objects: [1, 3, 5] → click tiles 2nd, 4th, 6th | | text | Type this text into the captcha field | texts: ["abc123"] | | slide | Drag the slider this many pixels to the right | x: 42 → drag 42px right | | click | Click at these (x, y) pixel coordinates on the image | clicks: [{x: 120, y: 45}] | | single | Boolean per tile — select the true ones | hasObject: [true, false, true] |

Step 5: Present the Answer

Explain the solution clearly to the user:

  • For grid: "Click tiles at positions 1, 3, 5 (0-indexed, counting left-to-right, top-to-bottom)"
  • For text: "Enter the text: abc123"
  • For slide: "Drag the slider 42 pixels to the right"
  • For click: "Click at coordinates (120, 45) and (200, 80) on the image"

Fallback: Python SDK

If the MCP server is not available, fall back to the Python SDK:

pip install captchasonic
from captchasonic import SonicClient
from pathlib import Path

client = SonicClient(api_key="sonic_xxxx")
result = client.create_task({
    "type": "PopularCaptchaImage",
    "question": "Select all traffic lights",
    "images": [open("captcha.png", "rb").read()],
})

ts = result.typed_solution
if ts.HasField("grid"):
    print("Grid objects:", list(ts.grid.objects))
elif ts.HasField("text"):
    print("Text:", list(ts.text.texts))
elif ts.HasField("slide"):
    print("Slide X:", ts.slide.x, "px")
elif ts.HasField("click"):
    print("Clicks:", [(c.x, c.y) for g in ts.click.groups for c in g.coords])
client.close()

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.