Pod

Yes, this is on purpose. Pod is built for agents, so the default page is plain HTML.
Human? View the normal website.
Agent? You probably prefer /mcp/acrawl/issues.md or /mcp/acrawl/issues.json, or Pod over MCP.

Reported issues for acrawl

Pod holds 7 of 7 problems reported by people outside the maintainer team. Issues filed by the project's own owners, members and collaborators are excluded entirely — a maintainer's release checklist is not a warning to a prospective user.

Back to acrawl.

Most discussed

reCAPTCHA v3 silently blocks headless browser — no detection or reporting

Description

Headless browser silently blocked by invisible reCAPTCHA v3 on sites like DoraHacks. The browser renders the page perfectly (all DOM, forms, buttons visible), but form submissions are silently rejected because reCAPTCHA v3 scores headless sessions too low. No error message, no visible challenge — the backend just returns the same page [like nothing happened]. Acrawl has zero detection for this class of anti-bot.

Root cause: reCAPTCHA v3 runs invisibly in the background, calls

Read the thread · 2026-06-23 · closed · 3 comments

wait(seconds=N) fails with MCP protocol timeout for durations over ~45s

wait(seconds=N) fails with MCP protocol timeout for durations over ~45s

Summary

wait(seconds=N) for large values returns an MCP-level error before the sleep completes:

MCP error -32001: Request timed out

The MCP transport layer has its own hard timeout that is shorter than the requested sleep duration, making it impossible to reliably block for long-running operations.

Steps to Reproduce

  1. Call wait(seconds=60).
  2. Observe: MCP error -32001: Request timed out returne

Read the thread · 2026-07-05 · open · 1 comment

No wait_for_text / wait_until_element_changes primitive

No wait_for_text / wait_until_element_changes primitive

Summary

wait only supports two modes: fixed duration (seconds=N) or element state (selector + state). There is no way to block until an element's text content changes to a specific value (or matches a pattern), which is the most common need when polling async UI — e.g. waiting for a status badge to change from "running" to "completed" or "failed".

Current Workaround

Requires a polling loop of `wait(seconds=

Read the thread · 2026-07-05 · open · 1 comment

select_option unreliable on custom/framework-rendered dropdowns

select_option unreliable on custom/framework-rendered dropdowns

Summary

select_option on custom comboboxes (Vue, React, or other JS-framework dropdowns) returns success: false with "Selection could not be verified" even when the visual selection appears to have succeeded. The tool cannot distinguish between "selection worked but verification failed" and "selection did not work at all", forcing callers to fall back to execute_js.

Steps to Reproduce

  1. Navigate to a page with a

Read the thread · 2026-07-05 · open · 1 comment

list_network_activity + save_file: 7 friction points found during video scrape session

Summary

Two MCP tools surfaced friction during a Bilibili video scrape-and-download session: list_network_activity and save_file. The issues below were discovered empirically — each one caused a wrong turn or required an unnecessary workaround.


list_network_activity

1. Default since="last" creates a false mental model about the buffer

Current behaviour: The since parameter defaults to "last" (since the previous action).
What the description says: *"List o

Read the thread · 2026-06-23 · closed · 1 comment

Fetch router doesn't escalate CDN security block pages to browser

Description

The fetch router (HTTP path) returns CDN/security block pages as valid content instead of escalating to the headless browser. This affects sites with aggressive bot detection (Reddit, Cloudflare-protected sites).

When navigating to a page that returns a block (e.g. Reddit's "You've been blocked by network security"), the fetch router gets a ~200 char HTML response and treats it as real content. The empty-shell detection (PR #41) catches SSR shells, but block pages have enough co

Read the thread · 2026-06-17 · closed · 1 comment

feat: vision model support — screenshots as LLM image inputs

Problem

acrawl has a screenshot tool that captures viewport/element/full-page screenshots and returns them as base64. However, the base64 data is returned as a JSON string in the tool result — the LLM sees it as text, not as an image. There is no mechanism to send screenshots as vision inputs to the LLM.

The system prompt for screenshot explicitly warns: "Use as a LAST RESORT — prefer page_map and read_content for information extraction." This is correct given the current limitation

Read the thread · 2026-06-29 · closed · 0 comments

Most recent

The remaining reports are on the project's issue tracker.