browserless-mcp
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PORT | No | HTTP server port (only for httpStream transport) | 8080 |
| TRANSPORT | No | Transport type: stdio or httpStream | stdio |
| BROWSERLESS_TOKEN | Yes | Your Browserless API token | |
| BROWSERLESS_API_URL | No | API endpoint (for self-hosted Browserless) | https://production-sfo.browserless.io |
| BROWSERLESS_TIMEOUT | No | Request timeout in milliseconds | 30000 |
| BROWSERLESS_CACHE_TTL | No | Cache TTL in milliseconds (0 to disable) | 60000 |
| BROWSERLESS_MAX_RETRIES | No | Max retry attempts for failed requests | 3 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": true
} |
| resources | {
"subscribe": true,
"listChanged": true
} |
| completions | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| browserless_exportA | 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. |
| browserless_skillA | Load a Browserless agent skill on demand, or discover site-specific recipes. Two uses:
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:
|
| browserless_agentA | READ CAREFULLY: Execute browser commands in an agent session. Core Loop (ReAct: Reason → Act → Observe)
Ending the session (REQUIRED)One-shot vs. multi-step (session lifetime). Sessions are one-shot by default: when your
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
Site recipes (site-specific, NOT auto-injected) — CHECK FIRSTMany specific sites (marketplaces, gov portals, travel, real-estate, etc.) have a tuned recipe for a given task — proven selectors, API shortcuts, proxy needs, and known gotchas that a from-scratch plan will miss. These are not auto-injected; you must ask for them, and a recipe overrides any plan you'd build yourself (including "just use a prefiltered URL + evaluate").
This is step 0 of every task — do it before your first Proxy (optional)Proxy config is a top-level If there is credible evidence the task needs a proxy, you MUST pass proxy options on the very FIRST call (before any If you already opened a session without a proxy and now realize one is needed, you must
OS persona (optional)The top-level Reach for AuthNever log in by default. Never invent or assume credentials exist (no "test credentials", no "your account"). If the snapshot contains a sign-in link OR you're about to mention "sign in" / "log in" / "auth required" — even as a suggested option to the user — call After a Saved-login check (only when the session was opened with Pass Terminal-Goal CheckBefore declaring done, restate the user's terminal deliverable in one line and verify your evidence directly supports it — not a sibling question.
Empty-state substitution. An empty/zero/null result from a resource that normally requires auth, scope, or filter context is evidence the precondition wasn't met — not evidence the question is answered. Empty cart while logged out, zero results while geo-restricted, empty inbox while unauthenticated: precondition failure → fix the precondition (often: load Skills (auto-injected)SKILL blocks auto-inject between
Snapshot Rules
Selectors
IframesSnapshots include a TabsSnapshots include LinksPrefer goto over click for links with href — immune to layout shifts, overlays, misclicks.
Example: Content Extraction
Files (upload / download)To download a file, DRIVE THE BROWSER — do not
Batching — Maximize Per CallPlan ALL actions from snapshot before next snapshot. Process:
Example form: AsyncAfter async triggers (search, submit), use Error RecoveryErrors tagged
Methods (non-obvious)
Runtime: LOCAL (stdio)Before any file transfer, know your mode: this server runs over stdio, on the same machine as your files. To UPLOAD a local file, pass its Repetition self-checkWhen a tool response contains REPETITION WARNING, re-read your plan and compare your completed steps with the intended progress. Do not repeat the same batch blindly: choose a materially different approach within the task's constraints, or stop and report what is blocked and what you tried. Repetition is a signal to check progress, not proof of failure; continue a repeated action only when you can identify concrete progress or a task-required reason. |
| browserless_performanceA | 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. Note: audits can take 30s–120s depending on the site. |
| browserless_accountA | 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. |
| browserless_usageA | 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. |
| browserless_sessionsA | 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 |
| browserless_logsA | 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. |
| browserless_smartscraperA | 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. |
| browserless_functionA | Execute custom Puppeteer JavaScript code on the Browserless cloud. Your function receives a Puppeteer For binary outputs, set
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. |
| browserless_mapA | 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. |
| browserless_crawlA | 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. |
| browserless_profilesA | 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 |
| browserless_searchA | 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. |
| browserless_link_connectA | 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. |
| browserless_link_checkoutA | 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. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| scrape-url | Scrape a webpage and return its content as markdown with metadata |
| extract-content | Extract specific information from a webpage using the smart scraper |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| Browserless Service Status | |
| Browserless API Documentation |
TDQS
Scored across 16 tools
Most tools map to distinct Browserless API areas (performance, account, usage, sessions, logs, profiles, link wallet), but there is real overlap among browserless_agent, browserless_function, browserless_smartscraper, browserless_export, browserless_crawl, and browserless_search for fetching/scraping page content. The descriptions mostly resolve this by steering single-page vs. multi-page vs. custom-code vs. interactive-agent workflows, so confusion is limited but possible.
Every tool uses the browserless_ prefix followed by snake_case, with predictable resource/action names such as browserless_performance, browserless_account, browserless_link_connect, and browserless_link_checkout. The convention is consistent throughout.
At 16 tools, the set is slightly above the typical 3-15 sweet spot, but the breadth of the Browserless platform justifies separate tools for auditing, exporting, scraping, crawling, searching, custom functions, agent sessions, account stats, logs, profiles, and Stripe Link. There is little obvious filler.
The surface covers the main Browserless workflows well: scraping, crawling, search, custom functions, interactive agent automation, performance audits, export, account usage, sessions, logs, profiles, and Link checkout. Minor gaps remain around direct profile creation/deletion and dedicated screenshot/PDF/download tools, though other tools partially compensate.