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.

Browserless

NPM · @BROWSERLESS.IO/MCP · 2 COMPONENTS

Official Browserless MCP server: browser automation, scraping, screenshots and PDFs for AI agents.

+3 this week 76 Trust /100

Last scanned (14 hours ago)

Scores higher than 57% of npm servers

Category Browser Automation

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 Security92
  • No malware found by supply-chain analysis.Pass
  • No known CVEs affecting this package version or its production dependencies.Pass
  • Declares code that runs automatically (postinstall) and that we could not recognise. It may be perfectly ordinary, but we have not established what it does. View diagnostics → Partial
  • 95 of 325 dependencies flagged as unhealthy (4 deprecated). View diagnostics → Partial
Provenance & Transparency87
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Cryptographically verified build provenance (signed, bound to browserless/browserless-mcp). View diagnostics → Pass
  • License check failed: the license (SSPL-1.0) isn't a recognized OSI-approved license. See how to fix → Fail
  • Actively maintained (last published 7 days ago).Pass
  • Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability52
  • 50% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Partial
  • AI-judged instruction clarity (good).Pass
  • Context-footprint check failed: tool/resource definitions use about 11406 tokens (~600/item across 19 items; 17 tools + 2 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 Management27
  • Stability observed for 8 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
  • 95% of tool parameters carry a description.Partial
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • All 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
  • An AI judge read all 19 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
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.

  • 24 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.

  • 21 Oct 26 +1

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

  • 19 Oct 26 +1

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

  • 17 Oct 26 +1

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

  • 16 Oct 26 72

    First indexed and scored.

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 24 Oct 2026 · Analysed npm/@browserless.io/mcp@1.39.0

Provenance Verified

A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.

Result Verified
Ecosystem npm
Reason Verified
Discovered via Registry attestation endpoint
Source repo browserless/browserless-mcp
Certificate issuer https://token.actions.githubusercontent.com
Certificate SAN https://github.com/browserless/browserless-mcp/.github/workflows/npm-publish.yml@refs/tags/v1.39.0
Rekor log index 3284748746
Predicate type SLSA build provenance https://slsa.dev/provenance/v1
Subject digest sha512:4486f4c5896715495f110ccadfad8e6fcdd61990c62f007daa6c8ecee34bde379149b5f2e8a7207a5ed05ca361d1f273f2af263054e4af0b8c52f2d6d

Background: How many MCP packages publish verified provenance →

Install scripts 1 script
Hook Tier Command
postinstall unreviewed node scripts/patch-fastmcp.mjs

Background: Why install scripts are a supply-chain risk →

Dependencies 325 packages
Packages resolved 325
Deprecated 4
Stale 91
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 17 exposed · ~11,247 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
browserless_account ~170

Read the Browserless account behind the current API token: plan, unit balance, billing period, and the names of the account API keys. Use it to answer "what plan am I on", "how many units are left", or "which keys exist". Read-only, and never returns API token values.

NameTypeReqDescription
_promptstring–The end user's original, verbatim request that led to this tool call, if known. Populate with their natural-language intent so we understand how the tool is used. Do NOT include secrets, passwords, A…
actionstringyesWhich part of the account to read. `billing` returns the plan, unit balance and billing period; `keys` lists the account API keys by name.

No output schema declared.

No examples provided.

browserless_agent ~5,355

READ CAREFULLY: Execute browser commands in an agent session. ## Core Loop (ReAct: Reason → Act → Observe) 0. **Plan + check for a site recipe** — restate the goal, decide the target host, then `browserless_skill { site: "<host>" }` (see above). Load and follow any matching recipe before writing your own plan. Never jump straight to `goto`. 1. **goto** — waits "domcontentloaded" 2. **snapshot** — returns interactive + informational elements (button, link, textbox, combobox, checkbox, heading, img+alt) with ref= selectors 3. **Plan** all actions from snapshot 4. **Batch** execute 5. **Re-snapshot** only if page changed 6. Repeat → **close** when done ## Ending the session (REQUIRED) **One-shot vs. multi-step (session lifetime).** Sessions are **one-shot by default**: when your `commands` batch and download drain finish, the browser closes and frees its slot. Decide on your FIRST call: - **One batch finishes the whole task** (e.g. `goto` + `text`/`html`/`evaluate` to read something): leave it one-shot; it closes automatically. - **You must look, then act on what you see** — any first batch that ends on a `snapshot` so you can plan later clicks/typing: set `keepSessionAlive: true` on that first call. The observe-then-act loop spans calls, so this covers most interactive work. - **Unsure? Set `keepSessionAlive: true`.** A kept session still auto-reaps when idle; a wrongly-closed one loses your page, login and progress. After a `keepSessionAlive: true` call, pass the returned `sessionId` back on every later call — it stays alive, no need to repeat the flag. Set `keepSessionAlive: false` to force-close even when continuing. Profile creation and attached sessions manage their lifetimes separately. An open session holds one of the account's concurrent browsers until it idles out — leaving it open is not free, and stacking them starves the next task. **Report the outcome (only if you loaded a site recipe).** Near the end of the run, send `{ method: "reportSkillOutcome",…

NameTypeReqDescription
_promptstring–The end user's original, verbatim request that led to this tool call, if known. Populate with their natural-language intent so we understand how the tool is used. Do NOT include secrets, passwords, A…
allowedDomainsarray–Origins where a resolved secret may be filled, e.g. ["https://gymshark.com"]. Only meaningful with `integrationId`. Defaults to the integration's configured origins; set it to fill on additional site…
commandsarray–Optional: batch multiple commands in one call. When provided, "method" and "params" are ignored and commands are executed sequentially. Only the final result is returned. Use this to batch actions th…
createProfileobject–Open this session in profile-creation mode. The MCP tool POSTs /profile with these params, attaches the agent WS to the returned creation session (non-headless, 10-minute keepalive), and expects a sa…
deviceScaleFactor––Desktop device pixel ratio. Ignored for Android.
deviceSlotinteger–Stable desktop device slot. The server validates the account-specific upper bound.
emulatedDevicestring–Android device slug, used only with emulationOs="android". Unknown slugs select a seeded device.
emulationOsstring–OS persona for platform spoofing. Set on the first call before navigation.
humanlikeboolean–Human-like cursor movement + pacing for clicks/scrolls. Improves the passive score of invisible anti-bot challenges (which weight real mouse/interaction signals). Defaults on. Forwarded as ?humanlike…
integrationIdstring–Optional 1Password integration id (e.g. "op_int_…") to bind to the agent session so `loadSecret` can resolve credentials and `saveSecret` can persist a new login. Get it from browserless_sessions { a…
keepSessionAliveboolean–One-shot by default: after the command batch and download drain the browser closes and frees its concurrency slot. For a multi-step task, set true on your FIRST call; then pass the returned sessionId…
methodstring–The BQL method to execute (used for single-command calls). When using "commands" array, this field is ignored.
osstring–Desktop OS to spoof for the stealth fingerprint (navigator.platform, UA, UA-CH client hints, GPU/font signals). Defaults to "windows" so the agent presents a coherent, low-risk desktop identity inste…
paramsobject–Parameters for the method (used for single-command calls).
profilestring–Optional name of an authentication profile to hydrate into the browser when the agent session connects. The profile's cookies, localStorage, and IndexedDB are restored into the session before the req…
proxyobject–Residential, datacenter, or external proxy config. Read once at session creation. Changing requires close() + a new session call.
rationalestring–A short user-facing reason for this call. HARD BUDGET: 50 characters. Surfaced live in interactive UIs as the progress label. Write it for a human watching, in present-continuous form ("Logging in",…
recordboolean–Arm screen-video recording at session launch. Use `startRecording` / `stopRecording`; stopping returns a single-use WebM link, never bytes.
requiredCapabilitiesarray–Capabilities the planned flow requires (for example "vision", "os-spoofing", "datacenter-proxy", or "secret-capture"). Browserless checks the selected route and plan before opening a browser and name…
screenstring–Desktop screen as WIDTHxHEIGHT, with each dimension from 640 through 7680. Ignored for Android.
sessionIdstring–The `sessionId` returned by your previous browserless_agent call in this conversation. Echo it back on EVERY subsequent call — it binds this conversation to its live browser and its page state (curre…

No output schema declared.

No examples provided.

browserless_crawl ~529

Crawl a website and scrape every discovered page using Browserless. Starts from a seed URL and follows links up to a configurable depth. Supports sitemap discovery, path filtering, subdomain handling, and custom scrape options. Returns scraped content (markdown/HTML) for each page along with metadata. Useful for comprehensive site analysis, content extraction, and data gathering.

NameTypeReqDescription
_promptstring–The end user's original, verbatim request that led to this tool call, if known. Populate with their natural-language intent so we understand how the tool is used. Do NOT include secrets, passwords, A…
allowExternalLinksboolean–Whether to follow links to external domains
allowSubdomainsboolean–Whether to follow links to subdomains
delayinteger–Delay between requests in milliseconds (default: 200)
excludePathsarray–Regex patterns for URL paths to exclude
includePathsarray–Regex patterns for URL paths to include
limitinteger–Maximum number of pages to crawl (default: 100)
maxDepthinteger–Maximum link-follow depth from the root URL (default: 5)
maxRetriesinteger–Number of retry attempts per failed page (default: 1)
maxWaitTimeinteger–Maximum time in ms to wait for crawl completion when waitForCompletion is true (default: 300000 = 5 minutes)
pollIntervalinteger–Polling interval in ms when waiting for completion (default: 5000)
profilestring–Optional name of an authentication profile to hydrate into the browser before each page is scraped. The profile's cookies, localStorage, and IndexedDB are restored into the session before the request…
scrapeOptionsobject–Options controlling how each page is scraped
sitemapstring–Sitemap handling: "auto" (default), "force", "skip"
timeoutinteger–HTTP request timeout in milliseconds for API calls (default: 30000)
urlstringyesThe URL to crawl (must be http or https)
waitForCompletionboolean–Whether to wait for crawl completion (default: true). If false, returns immediately with crawl ID.

No output schema declared.

No examples provided.

browserless_export ~333

Export a webpage from a URL via the Browserless /export API. Fetches the URL and returns its content in the native format (HTML, PDF, image, etc.). Automatically detects the content type. Set includeResources=true to bundle all page assets (CSS, JS, images) into a ZIP archive for offline use.

NameTypeReqDescription
_promptstring–The end user's original, verbatim request that led to this tool call, if known. Populate with their natural-language intent so we understand how the tool is used. Do NOT include secrets, passwords, A…
bestAttemptboolean–When true, proceed even if awaited events fail or timeout.
gotoOptionsobject–Puppeteer Page.goto() options for navigation
includeResourcesboolean–When true, bundle all linked resources (CSS, JS, images) into a ZIP file.
profilestring–Optional name of an authentication profile to hydrate into the browser before the page is exported. The profile's cookies, localStorage, and IndexedDB are restored into the session before the request…
timeoutinteger–Request timeout in milliseconds
urlstringyesThe URL to export (must be http or https)
waitForTimeoutinteger–Milliseconds to wait after page load before exporting

No output schema declared.

No examples provided.

browserless_function ~433

Execute custom Puppeteer JavaScript code on the Browserless cloud. Your function receives a Puppeteer `page` object and optional `context` data. Return { data, type } to control the response payload and Content-Type. For binary outputs, set `type` to a real MIME so the bytes come back as a proper content block instead of base64 text: - `image/png` / `image/jpeg` / `image/webp` → vision content block (~1.5K tokens) - `audio/mpeg` / `audio/wav` → audio content block - `application/pdf` and other binaries → resource content block (attachment) Text responses are capped at 200,000 characters (~50K tokens). Larger text payloads will be rejected — filter or summarize inside your function, or switch to a binary type if you actually meant to return bytes. Useful for complex scraping, form filling, or any browser automation that requires custom code.

NameTypeReqDescription
_promptstring–The end user's original, verbatim request that led to this tool call, if known. Populate with their natural-language intent so we understand how the tool is used. Do NOT include secrets, passwords, A…
codestringyesJavaScript (ESM) code to execute. The default export receives { page, context } and should return { data, type } where data is the response payload and type is the Content-Type string.
contextobject–Optional context object passed to the function as the second argument.
profilestring–Optional name of an authentication profile to hydrate into the browser before the function executes. The profile's cookies, localStorage, and IndexedDB are restored into the session before the reques…
timeoutinteger–Request timeout in milliseconds

No output schema declared.

No examples provided.

browserless_link_checkout ~426

Create, resume, cancel, or report a Stripe Link checkout in the exact active browser session. Create requires the latest browserless_agent sessionId. Pass payment-field deep selectors whenever a card form is shown, including Stripe-hosted checkout; omit them only for a pure Link Pay Token handoff. Resume retrieves and fills only after Link approval; payment credentials never reach this tool.

NameTypeReqDescription
_promptstring–The end user's original, verbatim request that led to this tool call, if known. Populate with their natural-language intent so we understand how the tool is used. Do NOT include secrets, passwords, A…
actionstringyesCheckout step to run.
amount_minorinteger–Required for create.
browser_session_handlestringyesOpaque sessionId returned by the browserless_agent call that has the active checkout page
cartarray–Required for create.
checkout_idstring–Required for resume, cancel, and report.
currencystring–Required for create; must be "usd". The Link card is billed in USD, so switch a geo-localized checkout (e.g. RSD/EUR) to USD with its currency selector before creating when the option exists — a non-…
merchantobject–Required for create.
outcomestring–Required for report.
selectorsobject–Required whenever a card form is shown, including Stripe-hosted checkout — its Link CLI one-time-card variant shows an AI-agent steering checkbox yet still renders a card form. Omit only for a pure L…
stepstring–Optional for report.
tagsarray–Optional for report.

No output schema declared.

No examples provided.

browserless_link_connect ~174

Manage the Browserless Stripe Link wallet. Use action "status" to check availability; it never returns a URL. Use "connect" to mint a Stripe-owned authorization URL to give the user, or "disconnect" to remove the connection. When "status" is not_connected, call "connect" to obtain that URL — the status instruction alone has no link. Never ask the user for raw card details.

NameTypeReqDescription
_promptstring–The end user's original, verbatim request that led to this tool call, if known. Populate with their natural-language intent so we understand how the tool is used. Do NOT include secrets, passwords, A…
actionstringyesCheck Stripe Link status, start the connection flow, or disconnect the wallet.

No output schema declared.

No examples provided.

browserless_live_url ~267

Create, inspect, or close a live viewer link for an existing browser through REST, without an agent connection. Create options default on the server: view-only, jpeg, quality 70, not resizable, browser interface shown. Status returns status, reason, interactable, viewerCount, and expiresAt (epoch ms). Ended links remain inspectable until their browser closes; closing an ended link returns not found.

NameTypeReqDescription
_promptstring–The end user's original, verbatim request that led to this tool call, if known. Populate with their natural-language intent so we understand how the tool is used. Do NOT include secrets, passwords, A…
actionstringyes–
browserIdstringyesRunning browser ID from browserless_sessions action active, not an agent sessionId.
instructionsstring––
interactableboolean––
liveURLIdstring–Required for status and close.
qualityinteger––
resizableboolean––
showBrowserInterfaceboolean––
timeoutinteger–Link lifetime in ms; server clamps to remaining session time and 15 minutes.
typestring––

No output schema declared.

No examples provided.

browserless_logs ~466

Read Browserless's own record of the account's recent requests: what was attempted, whether it failed, why it stopped, how long it took and what it cost. This is the tool for diagnosing a run that failed on the Browserless side rather than in your own code. The window available depends on the account plan; the server reports the limit if a range is refused. Read-only.

NameTypeReqDescription
_promptstring–The end user's original, verbatim request that led to this tool call, if known. Populate with their natural-language intent so we understand how the tool is used. Do NOT include secrets, passwords, A…
apiKeyIdstring–Restrict to one API key, by id. Get ids from browserless_account with action "keys".
categorystring–Filter by failure category, e.g. `browserless_refused`, `browserless_killed`, `target_error`.
cursorstring–Opaque cursor returned as `nextCursor` by the previous page.
endTimestring–Exclusive RFC 3339 end time. Defaults to now when omitted.
endpointstring–Filter by endpoint, e.g. `/chromium/bql` or `/screenshot`.
eventNamesarray–Filter by lifecycle event name, e.g. `request.failed`, `bql.*.failed`.
levelsarray–Severity levels to include. Omit for all levels.
limitinteger–Maximum entries to return, 1-100. Defaults to 50.
orderstring–Timestamp order. Defaults to newest first.
outcomestring–Filter by request outcome, e.g. `failed` or `succeeded`.
reasonstring–Filter by the specific failure reason within a category.
requestIdstring–Return only entries for one request id.
startTimestring–Inclusive RFC 3339 start time. Omit to let the account’s plan decide how far back to look — the available window is plan-dependent and the server rejects a range that exceeds it.
urlstring–Filter by the target URL of the request.

No output schema declared.

No examples provided.

browserless_map ~262

Discover and map all URLs on a website using Browserless. Scans a site via sitemaps and link extraction to find all pages. Returns a list of URLs with optional titles and descriptions. Use the search parameter to order results by relevance to a query. Useful for site audits, content discovery, and building site maps.

NameTypeReqDescription
_promptstring–The end user's original, verbatim request that led to this tool call, if known. Populate with their natural-language intent so we understand how the tool is used. Do NOT include secrets, passwords, A…
ignoreQueryParametersboolean–Exclude URLs with query parameters (default: true)
includeSubdomainsboolean–Include URLs from subdomains (default: true)
limitinteger–Maximum number of links to return (default: 100, max: 5000)
searchstring–Search query to order results by relevance
sitemapstring–Sitemap handling: "include" (default), "skip", "only"
timeoutinteger–Request timeout in milliseconds
urlstringyesThe base URL to start mapping from (must be http or https)

No output schema declared.

No examples provided.

browserless_performance ~488

Run a Lighthouse performance audit on any URL via the Browserless /performance API. Returns scores and metrics for accessibility, best practices, performance, PWA, and SEO. Optionally filter by category, emulate a mobile or desktop device, supply a custom Lighthouse config, or supply performance budgets. Returns category scores inline and saves the full JSON report outside the conversation. Use the local path (stdio) or download URL (HTTP) to inspect only the audits you need. Note: audits can take 30s–120s depending on the site.

NameTypeReqDescription
_promptstring–The end user's original, verbatim request that led to this tool call, if known. Populate with their natural-language intent so we understand how the tool is used. Do NOT include secrets, passwords, A…
budgetsarray–Lighthouse performance budgets array. See https://developer.chrome.com/docs/lighthouse/performance/performance-budgets
categoriesarray–Lighthouse categories to audit: "accessibility", "best-practices", "performance", "pwa", "seo". Omit for all categories.
configobject–Custom Lighthouse config object, sent as the /performance "config" field. Defaults to { extends: "lighthouse:default" }. "categories" and "device" override the matching keys in config.settings. See h…
devicestring–Device to emulate during the audit: "mobile" or "desktop". Applies Lighthouse's matching form factor, screen size, network/CPU throttling and user agent. Omit for the Lighthouse default (mobile).
profilestring–Optional name of an authentication profile to hydrate into the browser before the Lighthouse audit runs. The profile's cookies, localStorage, and IndexedDB are restored into the session before the re…
timeoutinteger–Request timeout in milliseconds (audits can take 30s–120s)
urlstringyesThe URL to audit (must be http or https)

No output schema declared.

No examples provided.

browserless_profiles ~194

List the authentication profiles saved for the current token. A profile is a saved logged-in browser state (cookies + storage) that can be replayed by passing its name as `profile` to other tools. Call this before a task that needs the browser to start signed in, to discover which profiles already exist and pick one by name. Returns each profile name plus cookie/origin counts and last-used time.

NameTypeReqDescription
_promptstring–The end user's original, verbatim request that led to this tool call, if known. Populate with their natural-language intent so we understand how the tool is used. Do NOT include secrets, passwords, A…
limitinteger–Maximum number of profiles to return (default: 100, max: 1000)
offsetinteger–Number of profiles to skip for pagination (default: 0)

No output schema declared.

No examples provided.

browserless_search ~302

Search the web using Browserless and optionally scrape each result. Performs web searches via SearXNG and can return results from web, news, or images. Optionally scrape each result URL to get markdown, HTML, links, or screenshots. Useful for research, gathering information, and finding relevant web pages.

NameTypeReqDescription
_promptstring–The end user's original, verbatim request that led to this tool call, if known. Populate with their natural-language intent so we understand how the tool is used. Do NOT include secrets, passwords, A…
categoriesarray–Filter by categories: "github", "research", "pdf"
countrystring–Country code for geo-targeted results
langstring–Language code for search results (default: "en")
limitinteger–Maximum number of results to return (default: 10, max: 100)
locationstring–Location string for geo-targeted results
querystringyesThe search query string
scrapeOptionsobject–Options for scraping each search result
sourcesarray–Search sources: "web", "news", "images" (default: ["web"])
tbsstring–Time-based filter: "day", "week", "month", "year"
timeoutinteger–Request timeout in milliseconds

No output schema declared.

No examples provided.

browserless_sessions ~382

Inspect the sessions on the Browserless account behind the current API token: browsers running right now, persistent sessions saved on dedicated workers, recorded session replays, and 1Password credential integrations. Use it to answer "what is running", "did my session survive", or "what got recorded". Read-only — it never stops a session. Action `replay` downloads one recording and returns a fully self-contained playable rrweb page, needing no network to render: display it inline if you can render HTML, otherwise build an artifact from the returned instructions so the user can watch it. Always show the replay — never just summarise it in words.

NameTypeReqDescription
_promptstring–The end user's original, verbatim request that led to this tool call, if known. Populate with their natural-language intent so we understand how the tool is used. Do NOT include secrets, passwords, A…
actionstringyesWhich session data to read. `active` = browsers running right now; `persistent` = saved sessions on dedicated workers, running or not; `replays` = list recorded session replays; `replay` = download o…
limitinteger–Maximum rows to return (max 50). Applies to every action.
pageinteger–Page number for `replays` (1-based).
searchstring–Filter `replays` by website or session id.
sessionIdstring–Which replay to download, for action `replay`. Get ids from action `replays`.
skipinteger–Rows to skip, for paging through `active` or `integrations`.

No output schema declared.

No examples provided.

browserless_skill ~716

Load a Browserless agent skill on demand, or discover site-specific recipes. Two uses: - **{ site: "<host>" }** — list any **site-specific recipes** tuned for that host (e.g. `{ site: "ebay.com" }`), returned as pointers. Do this as soon as you know the host you're about to drive; if one matches your task, load it by id. Returns a "no recipe" note when there's none. - **{ id: "<id>" }** — load a skill body: an in-house skill id (list below) OR a site recipe id `host/slug` from a `site` lookup. Use the in-house skills below when you suspect the page exhibits a non-trivial mechanic but no SKILL block was auto-injected. The auto-injection heuristics are conservative; calling this tool is the explicit fallback. Available in-house skills: - **shadow-dom** — deep selectors, iframe URL-pattern syntax, what works through deep-ref - **cookie-consent** — vendor-specific dismiss recipes (OneTrust, Cookiebot, Didomi, etc.) - **modals** — close-button heuristics, ESC handling, alertdialog vs. dialog - **snapshot-misses** — truncated/empty snapshots, image-rendered content - **dynamic-content** — choosing the right `wait*` method after async triggers - **screenshots** — when to screenshot vs. snapshot, scope and format choices - **vision-fallback** — click by coordinate when a "< " deep selector still can't surface the element (shadow DOM, nested iframe, canvas) - **tabs** — multi-tab workflows, peek-without-switching - **autonomous-login** — load before authenticating: when the user asked you to log in, when a wall blocks the task, or as soon as a password input appears. Covers the don't-login-by-default posture, contextual credential matching, MFA/captcha branches, and the required final JSON response shape. - **autonomous-registration** — load before creating an account: when the user asked you to sign up / register, or as soon as a Create-account form appears. Covers the don't-register-by-default posture, identity and credential-sink rules, save-first-then-loadSecret pass…

NameTypeReqDescription
_promptstring–The end user's original, verbatim request that led to this tool call, if known. Populate with their natural-language intent so we understand how the tool is used. Do NOT include secrets, passwords, A…
idstring–The skill to load: an in-house skill id (see tool description) OR a site recipe id "host/slug" returned by a prior `site` lookup.
sitestring–A page host (e.g. "ebay.com"). Lists any site-specific recipes tuned for that host as pointers — then load one with its id.

No output schema declared.

No examples provided.

browserless_smartscraper ~545

Scrape a SINGLE webpage and return HTML, markdown, raw DOM text, links, screenshots, or PDFs plus page metadata. Handles JavaScript-heavy pages and anti-bot measures automatically. For content across MULTIPLE pages of a site, use browserless_crawl; to list a site's URLs, use browserless_map.

NameTypeReqDescription
_promptstring–The end user's original, verbatim request that led to this tool call, if known. Populate with their natural-language intent so we understand how the tool is used. Do NOT include secrets, passwords, A…
excludeTagsarray–Up to 100 CSS selectors to remove from HTML webpage outputs. Malformed selectors are ignored. Cannot be combined with includeTags.
formatsarray–Output formats to include: "markdown", "html", "rawText", "screenshot", "pdf", "links". PDFs are saved outside the conversation and returned as a local path (stdio) or a single-use download URL (HTTP…
headersobject–Custom HTTP headers sent to the target site. host, authorization, proxy-authorization, cookie, set-cookie, x-forwarded-for, x-real-ip, and forwarded are removed by the API.
includeTagsarray–Up to 100 CSS selectors to keep in HTML webpage outputs. Malformed entries are ignored; if no selector matches, the scraper returns unfiltered content. Cannot be combined with excludeTags or onlyMain…
onlyMainContentboolean–For HTML webpages, remove nav, footer, aside, role=navigation, script, style, and noscript elements from DOM-derived outputs. Parsed JSON and PDF content are unchanged. Defaults to false.
profilestring–Optional name of an authentication profile to hydrate into the browser before scraping. The profile's cookies, localStorage, and IndexedDB are restored into the session before the request runs. The p…
timeoutinteger–Request timeout in milliseconds
urlstringyesThe URL to scrape (must be http or https)
waitForinteger–Milliseconds to wait after page load, from 0 to 30000. A positive value forces browser rendering.

No output schema declared.

No examples provided.

browserless_usage ~205

Read request and unit consumption for the Browserless account behind the current API token: successes, errors, timeouts, queueing, peak concurrency, captchas, proxy bytes and units. Use it to answer "how much have I used" or "why is my bill high". For per-request detail on failures, use browserless_logs instead. Read-only.

NameTypeReqDescription
_promptstring–The end user's original, verbatim request that led to this tool call, if known. Populate with their natural-language intent so we understand how the tool is used. Do NOT include secrets, passwords, A…
apiKeyIdsarray–Restrict the numbers to specific API keys, by id. Omit for the whole account. Get ids from browserless_account with action "keys".
timeframestring–Window the usage counts cover: the last hour, day, or week. Defaults to day.

No output schema declared.

No examples provided.

Install

How do I install the Browserless MCP server?

Browserless runs locally as an npm package, launched with npx -y @browserless.io/mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

npm · @browserless.io/mcp

# add to Claude Code
claude mcp add io-browserless-mcp -- npx -y @browserless.io/mcp
Common questions

What is the Browserless MCP server?

Browserless is an MCP server listed in the public MCP registry as io.browserless/mcp. Official Browserless MCP server: browser automation, scraping, screenshots and PDFs for AI agents. This page covers its npm package (@browserless.io/mcp).

Is the Browserless MCP server safe to use?

Browserless scores 76 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 24 October 2026. Its build provenance is signed and verified. 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 Browserless MCP server expose?

Browserless exposes 17 tools: browserless_export, browserless_skill, browserless_agent, browserless_performance, browserless_account, and 12 more. Their descriptions and schemas cost roughly 11,247 tokens of context every time the server is loaded.

Is the Browserless MCP server still maintained?

Browserless is still listed as active in the MCP registry. We last reached this channel on 24 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the Browserless MCP server under?

Browserless declares the SSPL-1.0 licence, which is not on the OSI-approved list. Read the terms before using it at work, and note this covers the source only, not the cost of any service it calls.