Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

acrawl

MCPB · LINUX-X64

Autonomous web crawler. 17 browser tools + goal-driven run_goal agent. Single binary, stealth.

Available components

+3 this week 46 Trust /100

Last scanned (5 hours ago)

Scores higher than 76% of MCPB servers

Category Web Scraping

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security0
  • No malware scan is available for this kind of package: the supply-chain vendors we use do not cover it. This is a permanent gap in our coverage, not a finding about the package.Unverified
  • Known CVEs could not be checked: we found no dependency list to check in this bundle: either it runs a compiled binary, whose bundled manifests we do not read, or none of the package.json, requirements.txt, pyproject.toml or uv.lock files it ships for its runtime declares a dependency we can read (a requirements.txt that only points at a setup.py project, a local path, or a nested requirements file we cannot follow counts as none).Unverified
  • Install-script risk not yet assessed.Unverified
  • Dependency health could not be checked: we found no dependency list to check in this bundle: either it runs a compiled binary, whose bundled manifests we do not read, or none of the package.json, requirements.txt, pyproject.toml or uv.lock files it ships for its runtime declares a dependency we can read (a requirements.txt that only points at a setup.py project, a local path, or a nested requirements file we cannot follow counts as none).Unverified
Provenance & Transparency48
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
  • Clear OSI-approved license (MIT).Pass
  • Actively maintained (last published 8 days ago).Pass
  • Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability69
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 6886 tokens (~172/item across 40 items; 40 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management77
  • Stability observed for 23 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage98
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 93% of tool parameters carry a description.Partial
Tool Safety75
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • 0 of 2 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "execute_js" implies "execute" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Fail
  • An AI judge read all 40 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities20
  • Spec-recency check failed: implements MCP spec 2024-11-05; the latest is 2026-07-28. See how to fix → Fail

Unverified: 1 category

A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.

Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 5 Nov 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 73 to 77. That category is still filling its 30-day observation window: 22 days of observed history at the previous scan, 23 at this one. The score rises as the window fills, whether or not the server changes.

  • 2 Nov 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 63 to 67. That category is still filling its 30-day observation window: 19 days of observed history at the previous scan, 20 at this one. The score rises as the window fills, whether or not the server changes.

  • 31 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 57 to 60. That category is still filling its 30-day observation window: 17 days of observed history at the previous scan, 18 at this one. The score rises as the window fills, whether or not the server changes.

  • 29 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 50 to 53. That category is still filling its 30-day observation window: 15 days of observed history at the previous scan, 16 at this one. The score rises as the window fills, whether or not the server changes.

  • 27 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 43 to 47. That category is still filling its 30-day observation window: 13 days of observed history at the previous scan, 14 at this one. The score rises as the window fills, whether or not the server changes.

  • 25 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 37 to 40. That category is still filling its 30-day observation window: 11 days of observed history at the previous scan, 12 at this one. The score rises as the window fills, whether or not the server changes.

  • 23 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 30 to 33. That category is still filling its 30-day observation window: 9 days of observed history at the previous scan, 10 at this one. The score rises as the window fills, whether or not the server changes.

  • 21 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 5 Nov 2026 · Analysed mcpb/https://github.com/Mingye-Lu/AgenticCrawler/releases/download/v0.17.0/acrawl-mcp-linux-x64.mcpb

Provenance No attestation

The registry publishes no build provenance for this version, so there is nothing to verify.

Result No attestation
Ecosystem mcpb
Reason No attestation published

Background: How many MCP packages publish verified provenance →

MCP tools · 40 exposed · ~6,886 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
audit_accessibility ~75

Run axe-core WCAG accessibility audit on the current page. Returns violations grouped by impact level with selectors and descriptions. Use scope to limit to a specific DOM subtree.

NameTypeReqDescription
impactstring––
scopestring–CSS selector to limit audit (e.g. '#main-content')
standardstring––

No output schema declared.

No examples provided.

cancel_script ~85

Abort a running script immediately, closing its browser tab and discarding any partial results not yet yielded. The script transitions to 'cancelled' status. Use when a script is stuck, taking too long, or its results are no longer needed.

NameTypeReqDescription
script_idstringyesScript ID to cancel (format: scr_XXXXXXXX). Obtain from the run_script response or list_scripts.

No output schema declared.

No examples provided.

click ~260

Click on a page element identified by CSS selector, @eN reference, or visible label text. May trigger navigation, form submission, or dynamic content changes. Returns post-action page_state. Use 'selector' for CSS/ref-based targeting; use 'text' (with optional 'role' and 'region') to activate a button, tab, checkbox, or link by its visible label — useful for SPA admin UIs and modals where CSS paths are fragile.

NameTypeReqDescription
regionstring–Optional [ref=eN] or semantic token to constrain label matching.
rolestring–Optional ARIA role filter when using 'text' (e.g. 'button', 'tab', 'checkbox', 'menuitem'). Narrows the match.
selectorstring–CSS selector or @eN element reference from page_map (e.g. "@e3", "button.submit", "#login-btn"). Mutually exclusive with 'text'.
textstring–Activate by visible label text instead of a selector. Finds the interactive element whose accessible name best matches this text. Mutually exclusive with 'selector'.
widenboolean–When true, return the full-page diff instead of scoping to the interacted container. Default: false.

No output schema declared.

No examples provided.

click_at ~169

Click at specific viewport coordinates (x, y) using a real mouse event. Use exclusively for elements without stable CSS selectors: canvas drawings, interactive maps, SVG regions, or coordinate-based UIs. Returns post-action page_state. Prefer the selector-based 'click' tool for normal DOM elements — it is more reliable and does not require coordinate calculation.

NameTypeReqDescription
widenboolean–When true, return the full-page diff instead of scoping to the interacted container. Default: false.
xnumberyesX coordinate in viewport pixels (0 = left edge). Obtain via execute_js with getBoundingClientRect() on the target element.
ynumberyesY coordinate in viewport pixels (0 = top edge). Obtain via execute_js with getBoundingClientRect() on the target element.

No output schema declared.

No examples provided.

execute_js ~396

Execute arbitrary JavaScript in the page context and return the evaluation result. The script runs in the browser's main frame with full access to the DOM, window, and page APIs. Use as a last resort when CSS selectors and other tools cannot achieve the interaction — prefer click, fill_form, and select_option for standard interactions. Optionally accepts `hover_selector` to hover over an element before executing the script, enabling inspection of CSS :hover styles and hover-triggered DOM changes. When the script triggers reactive DOM changes (e.g., .click() on a toggle), the return value may reflect pre-mutation state because frameworks schedule updates asynchronously. Set settle_ms (e.g., 50) to wait for reactivity to flush before capturing the result.

NameTypeReqDescription
hover_selectorstring–Optional CSS selector or @eN ref (from page_map) of an element to hover over BEFORE executing the script. When provided, the mouse is moved over the element (triggering :hover CSS pseudo-class), then…
scriptstringyesJavaScript code to execute in the page context, serialized to JSON on return. Accepts an expression ("document.title"), a statement list whose final expression is the result ("const t = document.titl…
settle_msinteger–Milliseconds to wait after script execution before capturing the return value (max 5000). Use when the script triggers DOM mutations that a reactive framework (Vue, React, etc.) processes asynchronou…

No output schema declared.

No examples provided.

fill_form ~245

Fill one or more form fields with values and optionally submit the form. Accepts field identifiers as CSS selectors, field names/IDs, or @eN references from page_map. Also resolves fields by visible label text page-wide — works in modals and div-based UIs without a <form> boundary. Returns post-action page_state with the resulting URL and structural diff. Use form_selector to disambiguate when the page contains multiple forms.

NameTypeReqDescription
fieldsobjectyesMap of field identifiers to values. Keys can be CSS selectors ("input[name='email']"), field name/ID attributes ("email"), or @eN refs from page_map ("@e5"). Values are the text to type into each fie…
form_selectorstring–CSS selector or @eN ref targeting a specific <form> element. Required when the page has multiple forms to disambiguate which form to fill.
submitboolean–If true, submit the form after filling all fields (triggers form submission event). Default: false.
widenboolean–When true, return the full-page diff instead of scoping to the interacted container. Default: false.

No output schema declared.

No examples provided.

get_page_info ~139

Get the current page URL, title, and readyState without any DOM traversal or page refetch. Returns lightweight metadata ideal for confirming navigation or redirect outcomes between steps. Use this instead of navigate() or page_map() when you only need to verify the current page identity. Set all_tabs=true to also list every tab you can use (index, url, title) and see which one you are working on; it never switches tabs.

NameTypeReqDescription
all_tabsboolean–Also list every tab available to you as {index, url, title, active}; `active` marks the tab you are working on. Does not switch tabs. Default false.

No output schema declared.

No examples provided.

get_page_performance ~51

Get page performance metrics using Navigation Timing and Resource Timing APIs. Returns TTFB, DOM timings, and a breakdown of the top 20 resources by transfer size. Works on both browsers and SPAs.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

go_back ~72

Navigate the browser back to the previous page in history (equivalent to the browser back button). Returns the URL navigated to and a page_state object with headings, landmarks, and links of the resulting page. Use after clicking into a page to return to a listing or search results without re-navigating by URL.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

hover ~132

Hover the mouse over a page element to trigger hover-dependent UI such as tooltips, dropdown menus, or expandable content. Returns post-action page_state showing any newly revealed elements. Use this before click when content only appears on mouseover; use click instead if the element needs activation rather than hover.

NameTypeReqDescription
selectorstringyesCSS selector or @eN element reference from page_map targeting the element to hover over (e.g. "@e2", ".menu-trigger", "nav li").
widenboolean–When true, return the full-page diff instead of scoping to the interacted container. Default: false.

No output schema declared.

No examples provided.

inspect_cookies ~102

Inspect cookies on the current page with security analysis. Returns all cookies with domain, path, expiry, secure/httponly flags, and detected security issues (missing_secure, missing_httponly, sameSite_none_without_secure, excessive_lifetime, overly_broad_domain). Includes third-party detection and filtering options.

NameTypeReqDescription
domainstring–Filter by domain substring
issues_onlyboolean–If true, return only cookies with detected security issues

No output schema declared.

No examples provided.

inspect_log ~74

Inspect a deduplicated console log group from list_page_logs and return concrete instances with timestamps, stack traces, and source locations.

NameTypeReqDescription
idstringyes@logN ID from list_page_logs when group_by='message'.
limitinteger–Maximum number of individual log instances to return. Default: 5.

No output schema declared.

No examples provided.

inspect_request ~70

Inspect a previously listed network request by its @rN id from list_network_activity. Returns the captured request metadata, coarse timing summary, initiator type, and notes about unavailable headers/bodies.

NameTypeReqDescription
idstringyes@rN ID from list_network_activity
include_bodyboolean––

No output schema declared.

No examples provided.

inspect_storage ~84

Inspect browser storage (localStorage and sessionStorage) on the current page. Returns all key-value pairs with size information. Supports filtering by storage type and key pattern.

NameTypeReqDescription
patternstring–Filter by key name substring
targetstring–Which storage to inspect: 'local' for localStorage, 'session' for sessionStorage, 'all' for both

No output schema declared.

No examples provided.

inspect_websocket ~97

Inspect actual WebSocket messages for a connection. Provide @wsN ID from list_websocket_activity. Supports direction filter, pattern search, and sort_by (newest/oldest).

NameTypeReqDescription
directionstring––
idstringyes@wsN ID from list_websocket_activity
limitinteger––
patternstring–Substring match on message data
sort_bystring––

No output schema declared.

No examples provided.

intercept_network ~191

Manage network interception rules. Block or mock requests matching URL glob patterns. Rules are additive — each call adds a rule. Use refresh() after adding rules to replay the page load with rules active.

NameTypeReqDescription
actionstringyesblock: abort matching requests. mock_response: return synthetic response. remove_rule: remove by rule_id. clear_all: remove all rules.
mockobject–Synthetic response for mock_response action.
patternstring–URL glob matched against the full request URL. '*' matches across path separators (e.g. '*ads.com*' blocks any URL containing ads.com; '*/api/v2/*' matches that path on any host). Prefix with 're:' f…
rule_idstring–Rule ID to remove (for remove_rule action).

No output schema declared.

No examples provided.

list_network_activity ~336

List observed network requests buffered during this browser session. Supports temporal filtering by seq window, request-state filters, URL substring filtering, adjective-based sorting such as slowest/fastest or newest/oldest, and an inline content_type field on each row. Returns stable @rN refs for follow-up inspection with inspect_request.

NameTypeReqDescription
filterstring––
limitinteger––
max_size_kbinteger–Only include requests whose response size is at most this many kilobytes.
methodstring–Filter by HTTP method (case-insensitive), e.g. 'GET', 'POST'.
min_size_kbinteger–Only include requests whose response size is at least this many kilobytes.
patternstring–URL substring filter
sincestring|number–Start of time window. 'all' = entire session, 'last' = since last action (default), or a seq number from a previous action response. Network capture starts automatically at browser launch — use `sinc…
sort_byarray–Sort order. First element = primary, rest = tiebreakers. Default: ['oldest']
unique_urlsboolean–Collapse multiple requests to the same URL into one row. The representative row is the one with the largest response size (ties broken by most recent). Includes request_count.
untilstring|number–'now' = up to present (default), or a seq number (exclusive upper bound).

No output schema declared.

No examples provided.

list_page_logs ~204

List buffered console logs for the current page with optional level filtering and seq-based temporal filtering. Group by exact message text (default, deduplicated with @logN IDs), source, or level.

NameTypeReqDescription
group_bystring–Grouping dimension. 'message' (default) deduplicates exact text and assigns @logN IDs for inspect_log; 'source' groups by file/source; 'level' groups by severity.
levelstring–Log level filter. Use 'all' (default) to include every console message, or narrow to error, warning, info, or debug.
sincestring|number–Temporal lower bound: 'all', 'last' (default), or a seq number. Uses half-open interval filtering on seq_at_initiation.
untilstring|number–Temporal upper bound: 'now' (default) or a seq number. Uses half-open interval filtering on seq_at_initiation.

No output schema declared.

No examples provided.

list_resources ~70

List all discoverable resources on the current page: links (with href and text), images (with src and alt), and forms (with action and method). Returns the complete set without caps — use this when page_map's 50-link limit is insufficient or when you need image URLs. No parameters required.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

list_scripts ~55

List all previously saved scripts with their metadata (name, creation date, last modified, size). Returns a JSON array. Use to discover available scripts before running them with run_script by name, or to audit what scripts exist on disk.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

list_websocket_activity ~78

Overview of WebSocket connections and message counts. Returns connections with @wsN IDs. Use inspect_websocket to see actual message content.

NameTypeReqDescription
sincestring|number–'all', 'last' (default), or seq number
untilstring|number–'now' (default) or seq number (exclusive)

No output schema declared.

No examples provided.

measure_coverage ~104

Measure JavaScript and CSS code coverage on the current page. Returns per-file byte usage showing how much code was actually executed/applied versus total loaded. Useful for identifying unused bundles, oversized dependencies, and performance optimization opportunities.

NameTypeReqDescription
resetboolean–Stop any in-progress coverage, clear data, and restart fresh
typestring–Which coverage to measure: 'js' for JavaScript only, 'css' for CSS only, 'all' for both

No output schema declared.

No examples provided.

navigate ~414

Navigate to a URL and return the page content as fit_markdown (default, prunes boilerplate for token efficiency), structured markdown, plain text, or raw HTML. Automatically escalates from fast HTTP fetch to full headless browser when JavaScript rendering is detected (React, Next.js, Vue, Angular markers, or short <noscript> bodies). Returns prose content (fit_markdown) plus a YAML accessibility tree structural section for subsequent tool calls. Use this as the primary tool for accessing any web page.

NameTypeReqDescription
content_depthstring–Controls how much page content to return. 'main' (default) extracts article/main content only; 'full' returns everything; 'slim' returns first 2000 chars of main content; 'none' skips content entirel…
focus––What you are looking for on this page: a short phrase, or a list of them. When semantic pruning is enabled, blocks unrelated to the focus are replaced by '[N blocks pruned]' markers.
formatstring–Output format for page content. 'fit_markdown' (default) prunes boilerplate (navs, footers, ads) before conversion for ~40% token savings; 'markdown' preserves full content with structure; 'text' str…
page_map_depthstring–Controls page_map verbosity. 'slim' (default) omits CSS selectors from elements (use @eN refs instead); 'full' includes raw CSS selectors for all elements; 'none' omits the page_map entirely.
strip_imagesboolean–If true (default), removes image references from output to save context tokens. Set false only when you need image URLs or alt text.
urlstringyesFully qualified URL to navigate to (must include protocol, e.g. https://example.com). Relative URLs are not supported.

No output schema declared.

No examples provided.

page_map ~124

Get the page's YAML accessibility tree (primary structural view). Each node: `- role "name" [state...] [ref=eN]:`. Scope by [ref=eN] or semantic token. `depth` controls tree depth.

NameTypeReqDescription
depthinteger–Maximum tree depth (default: 5, max: 10). At max depth, omitted children are counted.
scopestring–Limit output to a subtree: `[ref=eN]` (subtree rooted at that node) or semantic token (`dialog`, `main`, `sidebar`).

No output schema declared.

No examples provided.

press_key ~202

Dispatch a keyboard key press event on the page or a targeted element. Supports named keys (Enter, Escape, Tab, ArrowDown, Backspace) and character keys. Returns post-action page_state reflecting any DOM changes caused by the keypress. Use for form submission (Enter), closing modals (Escape), focus navigation (Tab), or keyboard shortcuts.

NameTypeReqDescription
keystringyesKey to press — use Playwright key names: "Enter", "Escape", "Tab", "ArrowDown", "ArrowUp", "Backspace", "Space", or single characters like "a". Modifier combos: "Control+a", "Shift+Tab".
selectorstring–Optional CSS selector or @eN ref to focus before pressing the key. If omitted, the key is dispatched to the currently focused element or the page.
widenboolean–When true, return the full-page diff instead of scoping to the interacted container. Default: false.

No output schema declared.

No examples provided.

read_content ~223

Extract plain text content from a specific page section identified by heading name or CSS selector. Supports pagination via offset and max_chars for large sections. Returns content, total character count, and whether more content is available. Use after page_map to read specific sections without re-fetching the entire page; use navigate instead when you need the full page content.

NameTypeReqDescription
headingstring–Exact heading text to find (case-insensitive match). Extracts all content under that heading until the next heading of equal or higher level. If not found, the response lists available headings as a…
max_charsinteger–Maximum characters to return (default: 10000). Reduce for token efficiency; increase to get more content in one call.
offsetinteger–Character offset to start reading from (default: 0). Use with max_chars to paginate through large sections.
selectorstring–CSS selector to extract content from (e.g. ".article-body", "#main-content"). Use when content isn't under a heading or you need a precise DOM target.

No output schema declared.

No examples provided.

read_script ~85

Read the full JSON definition of a previously saved script. Returns the complete script object including version, steps, and limits. Use to inspect a saved script's logic before running it, or to understand what an existing script does before modifying and re-saving it.

NameTypeReqDescription
namestringyesName of the saved script to read (as shown in list_scripts output, without .json extension).

No output schema declared.

No examples provided.

refresh ~38

Reload the current page. Returns page_state after reload. Use after setting intercept rules to replay the page with rules active. Seq increments for temporal observation queries.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

run_goal ~131

Execute a high-level crawl goal autonomously. The agent plans, navigates, and extracts data using its own LLM loop. Returns structured results when done. Use this for complex multi-page tasks; use individual tools (navigate, click, etc.) for fine-grained control.

NameTypeReqDescription
allowed_toolsarray–Restrict which built-in tools the agent can use (optional)
goalstringyesNatural-language crawl goal
max_stepsinteger–Maximum agent steps (optional; default from settings)
modelstring–Model to use (optional; uses default from credentials if omitted)

No output schema declared.

No examples provided.

run_script ~590

Execute a deterministic multi-step script without per-step LLM round-trips, running on a cloned browser tab. Scripts support loops (for/while/forEach), conditionals (if/else), error handling (try/catch), parallel branches, and variable capture. Returns a script_id immediately — use wait_for_scripts to collect results. Provide either an inline script definition or a name to load a previously saved script. Use when you detect a repetitive pattern (same operation on 3+ pages/items).

NameTypeReqDescription
limitsobject–Override execution limits; omitted keys keep their defaults and values are capped by settings. Keys: max_steps (200), max_timeout_secs (300), max_output_bytes (10485760), max_parallel_branches (10),…
namestring–Name of a previously saved script to run (alternative to inline 'script'). Mutually exclusive with 'script' — provide one or the other.
save_asstring–Validate and save the script under this name before running it, for later runs by `name` (alphanumeric, underscore, hyphen). Persists to the scripts directory (default ~/.acrawl/scripts/<name>.json).
scriptobject–Inline script definition: {"schema_version": 1, "steps": [...]}. Each step has a snake_case `type`: tool_call {tool, input, output?}, assign {variable, value}, collect {value}, yield {value}, for_loo…

No output schema declared.

No examples provided.

save_file ~243

Download a resource from a URL and save it to the local output directory. Handles any file type (images, PDFs, CSVs, etc.) via HTTP GET. Returns the absolute path of the saved file. Use to persist crawl artifacts; path traversal is blocked for security.

NameTypeReqDescription
filenamestring–Custom filename to save as (e.g. "report.pdf"). If omitted, derived from the URL's last path segment. Path traversal characters (../) are rejected.
headersobject–Optional HTTP request headers to send with the download (e.g. Referer, Origin, User-Agent). Use for CDNs that reject requests lacking a Referer.
output_dirstring–Override the default output directory. Can be relative (resolved against CWD) or absolute. If omitted, uses the configured output_dir from settings.
subdirstring–Subdirectory within the output directory to save into (e.g. "images", "data/csv"). Created automatically if it doesn't exist.
urlstringyesFully qualified URL of the resource to download (e.g. "https://example.com/report.pdf"). Must include protocol.

No output schema declared.

No examples provided.

save_script ~128

Persist a script definition to disk at ~/.acrawl/scripts/<name>.json for reuse across sessions. Once saved, run it later with run_script using name instead of providing the full inline definition. Use for complex extraction patterns you want to apply repeatedly.

NameTypeReqDescription
namestringyesName to save the script under (alphanumeric characters and underscores only, no file extension). Must be unique — overwrites any existing script with the same name.
scriptobjectyesScript definition object (same format as the 'script' parameter in run_script). Must include version, steps, and optionally limits.

No output schema declared.

No examples provided.

screenshot ~321

Capture a screenshot of the current page viewport, a specific element, or the full scrollable page. Returns base64-encoded image data by default, or saves to disk when save=true. Use as a LAST RESORT only after text-based tools (page_map, read_content, execute_js) have failed to provide the needed information — screenshots are expensive and cannot be searched or parsed programmatically.

NameTypeReqDescription
filenamestring–Custom filename for the saved image (e.g. "homepage.png"). Only used when save=true. Defaults to a timestamped name if omitted.
formatstring–Image format. 'png' (default) supports transparency; 'jpeg'/'webp' produce smaller files for photos. Default: png.
full_pageboolean–If true, capture the full scrollable page height (not just the visible viewport). Ignored when selector is provided. Default: false.
output_dirstring–Directory to save the screenshot in (absolute or relative to CWD). Only used when save=true. Overrides the default output directory.
qualityinteger–Compression quality 0–100 for jpeg/webp formats only (ignored for png). Lower values = smaller files. Default: 80.
saveboolean–If true, save the screenshot to the output directory and return the file path instead of base64 data. Default: false.
selectorstring–CSS selector to screenshot a specific element (e.g. "#chart", ".product-image"). If omitted, captures the full viewport.

No output schema declared.

No examples provided.

script_status ~96

Check the current execution status of a running or completed script without blocking. Returns the script's state (running, completed, failed, cancelled), current step count, extracted data so far, and any error message. Use to monitor long-running scripts between other actions; use wait_for_scripts to block until completion.

NameTypeReqDescription
script_idstringyesScript ID returned by run_script (format: scr_XXXXXXXX). Obtain from the run_script response.

No output schema declared.

No examples provided.

scroll ~126

Scroll the current page up or down by a specified pixel amount to reveal content beyond the visible viewport. Returns updated page_state after scrolling, reflecting any newly loaded lazy content. Use to reveal below-the-fold content, trigger infinite scroll loading, or navigate long pages section by section.

NameTypeReqDescription
directionstring–Scroll direction. 'down' reveals content below the viewport; 'up' scrolls back toward the top.
pixelsinteger–Number of pixels to scroll (default: 500). Use 300–800 for a normal page scroll; larger values for quickly reaching page bottom.

No output schema declared.

No examples provided.

select_option ~278

Select an option from a native <select> or custom ARIA/portal dropdown. Identify the target control via CSS selector or @eN ref, then specify which option to select by its value attribute, visible label text, or zero-based index. Omit value, label, and index to open the dropdown, enumerate the currently available options, and return them without selecting. Returns post-action page_state showing any page changes triggered by the selection (e.g. dependent dropdowns updating).

NameTypeReqDescription
indexinteger–Zero-based index of the <option> to select (0 = first option). Use when value/label are unknown.
labelstring–The visible text of the option to select (e.g. "United States", "Medium"). Use when you know the display text.
selectorstringyesCSS selector or @eN ref targeting the native select or custom dropdown trigger (e.g. "@e4", "select#country", "button[role='combobox']").
valuestring–The value attribute of the option to select (e.g. "us", "medium"). For custom dropdowns without exposed values, this is matched against visible option text.
widenboolean–When true, return the full-page diff instead of scoping to the interacted container. Default: false.

No output schema declared.

No examples provided.

set_device ~293

Switch browser device emulation between mobile and desktop modes. Recreates the browser context with new user agent and touch settings. Mobile presets emulate an exact viewport; desktop-class presets resize the real browser window (headed mode), so the page keeps following manual window resizes. 'desktop' imposes no size. Cookies and localStorage are preserved. Use preset device names for convenience or provide custom parameters. Returns page_state showing the page as rendered in the new device mode. Cannot be used while sub-agents are running.

NameTypeReqDescription
devicestring–Device preset name: 'iphone_15', 'iphone_se', 'iphone_15_pro_max', 'pixel_7', 'galaxy_s24', 'ipad_pro', 'ipad', 'galaxy_tab_s9', 'desktop', 'desktop_hd'. Use 'desktop' to reset to default mode. Canno…
deviceScaleFactornumber–Device pixel ratio (e.g., 2 for retina, 3 for iPhone). Cannot be used with 'device'.
hasTouchboolean–Enable touch event support. Cannot be used with 'device'.
isMobileboolean–Enable mobile viewport behavior. Cannot be used with 'device'.
userAgentstring–Custom user agent string. Cannot be used with 'device'.
viewportobject–Custom viewport dimensions. Cannot be used with 'device'.

No output schema declared.

No examples provided.

switch_tab ~117

Switch the browser focus to a different open tab by its zero-based index. Returns the tab count (plus page_indices, the valid indices, when they are not contiguous) and a page_state object reflecting the switched-to tab's content (headings, landmarks, links). Use to access pages opened by link targets, popups, or forked sub-agents without re-navigating.

NameTypeReqDescription
indexinteger–Zero-based tab index to switch to (0 = first tab). Use the tab count from previous responses to determine valid indices.

No output schema declared.

No examples provided.

wait ~289

Wait for a DOM element to reach a specified state (visible, hidden, attached, detached) or pause for a fixed duration. Use after actions that trigger asynchronous page changes such as form submissions, AJAX requests, or animations. Returns post-action page_state showing the resulting URL, title, and structural diff once the condition is met or the timeout expires, unless `silent: true` is set for a time-only wait, in which case only the completion signal is returned.

NameTypeReqDescription
secondsnumber–Fixed number of seconds to wait (max 300). Use when no specific element signals completion. Mutually exclusive with 'selector'.
selectorstring–CSS selector of the element to wait for (e.g. ".results-loaded", "#spinner"). Mutually exclusive with 'seconds' — provide one or the other.
silentboolean–When true, suppress the page_state payload from the response. Use for simple timed pauses where you don't need a structural diff — saves context tokens. Only effective for time-only waits (no selecto…
statestring–Target state to wait for. 'attached' (default) = element exists in DOM; 'visible' = element is rendered and not hidden; 'hidden' = element is no longer visible; 'detached' = element removed from DOM.…

No output schema declared.

No examples provided.

wait_for_scripts ~99

Block until one or more scripts finish execution and return their collected results. Returns a JSON array of ScriptResult objects with extracted_data, yielded checkpoints, step count, and status. If script_ids is omitted, waits for ALL active scripts. Use after run_script to collect final results.

NameTypeReqDescription
script_idsarray–List of script IDs to wait for (format: scr_XXXXXXXX each). If omitted, waits for all currently active scripts to finish.

No output schema declared.

No examples provided.

Install

How do I install the acrawl MCP server?

acrawl ships as an MCPB bundle, a single file you download and open in an MCP host that supports MCPB bundles, such as Claude Desktop. The host reads the launch command from the bundle's own manifest, so there is no command to copy. Before opening it, check the file's SHA-256 matches the one the MCP registry declares for it, 3b658e55cb9f8887aef51e8895fe63311a9a31b5cec53aca636ae3c12c0c07aa; the commands to do that are on this page. If it does not match, do not open it.

mcpb · linux-x64

Download bundle

Check the download matches the SHA-256 the MCP registry declares before you open it. If it does not match, do not open the file.

SHA-256

3b658e55cb9f8887aef51e8895fe63311a9a31b5cec53aca636ae3c12c0c07aa

macOS / Linux

echo "3b658e55cb9f8887aef51e8895fe63311a9a31b5cec53aca636ae3c12c0c07aa  acrawl-mcp-linux-x64.mcpb" | shasum -a 256 -c

Windows (PowerShell)

(Get-FileHash -Algorithm SHA256 .\acrawl-mcp-linux-x64.mcpb).Hash -eq "3b658e55cb9f8887aef51e8895fe63311a9a31b5cec53aca636ae3c12c0c07aa"

Run it in the folder you saved the bundle to, then open the file with an MCPB-capable host such as Claude Desktop.

Common questions

What is the acrawl MCP server?

acrawl is an MCP server listed in the public MCP registry as io.github.Mingye-Lu/acrawl. Autonomous web crawler. 17 browser tools + goal-driven run_goal agent. Single binary, stealth. This page covers its MCPB bundle (https://github.com/Mingye-Lu/AgenticCrawler/releases/download/v0.17.0/acrawl-mcp-linux-x64.mcpb).

Is the acrawl MCP server safe to use?

acrawl scores 46 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the acrawl MCP server expose?

acrawl exposes 40 tools: navigate, get_page_info, go_back, refresh, scroll, and 35 more. Their descriptions and schemas cost roughly 6,886 tokens of context every time the server is loaded.

What licence is the acrawl MCP server under?

acrawl declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.