unbrowse
Search and call websites through Unbrowse's hosted API or remote MCP, reuse indexed site tools, read pages, and learn missing routes in its cloud browser. Use for structured website tasks, authenticated site access, and live canvas planning with Unbrowse.
Install / Use
npx skills add unbrowse-ai/unbrowse --skill unbrowseInstalls into whichever agent you are using.
SKILL.md
Installable skill definition
Quality Score
Category
DesignSupported Platforms
Our assessment of unbrowse
unbrowse scores 84/100 on our quality scale, 163rd of 253 Design skills we index.
Its SKILL.md is 13 KB long, well organised into 12 sections with 3 code examples: a thorough specification that gives an agent plenty to work with.
It has 763 GitHub stars, a meaningful sign that others use it.
Maintenance, license and trust
- The repository was last updated 22 days ago, so unbrowse is actively maintained.
- It is released under the MIT license, a permissive license that allows use, modification and commercial use with attribution.
- Its trust signals score 100/100, with no cautions. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
unbrowse compared with similar skills
All 4 of these similar skills score higher than unbrowse; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| unbrowse (this skill)by unbrowse-ai | 84 | 763 | 22d ago | SKILL.md |
| Agent-Reachby Panniantong | 100 | 92.4k | 21d ago | CLAUDE.md |
| headroomby headroomlabs-ai | 100 | 74.5k | today | CLAUDE.md |
| CowAgentby zhayujie | 100 | 47.2k | today | CLAUDE.md |
| Scraplingby D4Vinci | 100 | 85.9k | today | MCP Server |
Frequently asked questions
- How do I install unbrowse?
- Run
npx skills add unbrowse-ai/unbrowse --skill unbrowse. The install tabs above show the steps for each supported agent. - Which AI agents does unbrowse work with?
- It is written for Universal, as a SKILL.md file. Other agents that read the same format can often use it too.
- Is unbrowse safe to use?
- It is MIT-licensed and scores 100/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is unbrowse still maintained?
- The repository was last updated 22 days ago, so unbrowse is actively maintained.
Skill content
View source on GitHubname: unbrowse description: Search and call websites through Unbrowse's hosted API or remote MCP, reuse indexed site tools, read pages, and learn missing routes in its cloud browser. Use for structured website tasks, authenticated site access, and live canvas planning with Unbrowse.
Unbrowse
Use the hosted service at https://unbrowse.ai. Execution, indexed routes and website sessions stay server-side. This skill supplies operating guidance; it does not authenticate the user or start a local MCP server.
Connect
The MCP and the CLI are different logins. A URL in a client config is not a signed-in session. unbrowse whoami succeeding does not mean the MCP is connected, and the CLI bearer is rejected by /mcp.
- MCP: use the URL the client already configured. Hosted servers are
https://unbrowse.ai/mcpandhttps://v3.unbrowse.ai/mcp. Ifunbrowse.discoveris not in this session's tool list, stop and reconnect that server's own OAuth. Do not paste the CLI token onto the MCP URL. - CLI:
unbrowse loginstores an OAuth token forhttps://unbrowse.ai/api/v1only. It is a REST client, not an MCP client.
claude mcp add --transport http unbrowse https://unbrowse.ai/mcp
{"mcpServers":{"unbrowse":{"url":"https://v3.unbrowse.ai/mcp"}}}
From a terminal, with the CLI:
npx skills add unbrowse-ai/unbrowse && npx unbrowse login
Adds the Unbrowse skill to your agent and signs in the CLI. Then npx unbrowse run 'top stories on hacker news' runs any site from your terminal. The site requests go from your own IP by default; add --from-unbrowse to send them from Unbrowse instead. The first command run with no sign-in starts the same browser sign-in and then carries on; without a terminal it exits 3 and asks for unbrowse login or UNBROWSE_API_KEY.
CLI and SDK: https://github.com/unbrowse-ai/unbrowse
For automation, supply an API key via UNBROWSE_API_KEY using the caller's secret manager. Do not put keys into committed config, prompts, command arguments or logs. Create a key in the signed-in console at https://unbrowse.ai/app.
Host plugins
Packaged installs that bundle this skill, connect Unbrowse and redirect the host's own browser to it (https://github.com/unbrowse-ai/unbrowse/tree/main/plugins):
- Claude Code:
claude plugin marketplace add unbrowse-ai/unbrowse, thenclaude plugin install unbrowse@unbrowse. - Codex:
codex plugin marketplace add unbrowse-ai/unbrowse, thencodex plugin add unbrowse@unbrowse; setweb_search = "disabled"to drop built-in search. - Grok Build:
grok plugin install unbrowse-ai/unbrowse#plugins/grok-build --trust. - OpenClaw (
@unbrowse/openclaw), Hermes (plugins/hermes), elizaOS (@unbrowse/plugin-unbrowse): native tools or actions over the same MCP.
Hosts that need a stdio server or reject dotted tool names can run npx unbrowse mcp: tool names there use _ (unbrowse_scrape). With a plugin installed, built-in web fetch, web search and browser navigation to non-local URLs are refused with a pointer to the matching Unbrowse tool; UNBROWSE_ALLOW_BUILTIN_BROWSER=1 lifts that for a session.
Choose the interface
- MCP: discovery, runs, page reading, cloud browsing, indexing, saved-login requests and live canvas cards. These names are MCP tools. They are not CLI commands.
- CLI:
unbrowse discover,run,inspect,resume,registry,site,whoami.unbrowse runnever drives a website in a browser (the only browser it opens is the first-use sign-in). There is nounbrowse browseand nounbrowse install.unbrowse helpdescribes the installed version. - SDK: REST integration and scripting. Consult the public SDK docs for its supported methods; MCP tools and REST methods are not interchangeable names.
Core MCP tools: unbrowse.discover, unbrowse.run, unbrowse.inspect, unbrowse.resume, unbrowse.cancel, unbrowse.scrape, unbrowse.map, unbrowse.sites, unbrowse.usage, unbrowse.credits, unbrowse.forget, unbrowse.learn, unbrowse.index, unbrowse.index.status, unbrowse.credentials.list, unbrowse.credentials.request, unbrowse.credentials.status, and the cloud browser unbrowse.browse.open, unbrowse.browse.snapshot, unbrowse.browse.act, unbrowse.browse.finish, unbrowse.browse.close, and session replay unbrowse.replay.list, unbrowse.replay.search, unbrowse.replay.get, unbrowse.replay.timeline, unbrowse.replay.ask.
references/tools.json contains the exported core MCP input schemas. The connected server's tools/list is authoritative: it also includes dynamic tools available to this user's workspace. Never invent a capability ID or input schema.
Execute a task
- Discover with
unbrowse.discover {query}. Inspect returned inputs, choices and hints. Prefer a healthy matching capability;warmmeans HTTP replay,renderedneeds rendering. Checkunbrowse.sitesfor saved session and login state when relevant. - Call the selected tool with its listed schema, or
unbrowse.run {capability, input}. A natural-languagetaskcan route when no ID was selected. Use a stableidempotencyKeyfor the same intended mutation. For a large answer passselect(MCP run tools,unbrowse.resume,unbrowse.inspect,POST /api/v1/runs): paths like["results[].{id,title,price}", "total"]. It narrows only what comes back, after verification; billing is unchanged. Results over 40,000 characters are shortened (truncated: true);selectMissinglists paths that matched nothing. - Inspect the returned status and actual result.
input_requiredmeans answer the open requirements on the same run:unbrowse.resume {runId, answers:{field:value}}. For a choice, pass the listed option's value. Preserve revision checks when supplied. no_capabilitymeans no reusable route matched. Followresult.next:toolisunbrowse.index(POST /api/v1/index, thenGET /api/v1/index/{jobId}). Callunbrowse.browse.openonly when that name is in this session's tool list. Do not POST/api/v1/browse/open. It is not a route. Report unsupported or blocked sites honestly.- Only report completion from a verified result.
outcome_unknownmeans a change may have occurred: inspect the effect receipt and destination before retrying. Cancellation stops future dispatches; it does not undo completed effects.
Do not infer business success from HTTP 200, tool transport success, a screenshot, or a generated plan. Do not promise universal coverage or browserless execution on every first request. Obtain the user's authorization for posting, sending, purchasing or other external writes.
Unbrowse a URL
When the person names a site:
- If
unbrowse.discoveris not in this session's tool list, the MCP is not signed in. Stop. Name the configured MCP URL and say the CLI login does not cover it. - Look the host up (
unbrowse.sites, or CLIunbrowse site <host>). Tools already compiled: use one. Stop. - No tools:
unbrowse.index {url, focus}orPOST /api/v1/index. Pollunbrowse.index.statusorGET /api/v1/index/{jobId}. status: failedanderror.code: model_unavailable: the indexing model is out of credit. Report the job id and the message. Do not browse instead, and do not start the same job again in a loop.status: donewithindexed: 0means nothing was learned. Say so.indexed > 0means call one tool and check the result.
A 202 from /api/v1/index is a job id, not a compiled tool.
Read or learn a site
Use unbrowse.scrape {url} for a page (a PDF or .docx URL comes back as markdown text with metadata.pages); unbrowse.map {url} finds same-site pages. For interactive work with no matching route:
unbrowse.browse.open {url,task}returns the page and element refs.- Use
browse.actwith the latest refs. For ordinary inputs, include a meaningfulnamesuch asdateorquery; exercise every filter the task needs. Refresh the snapshot after page changes. - Use
browse.finish {sessionId}to return the final page and compile observed routes. Two sessions with different inputs help identify reusable parameters. ChecklearnErrorandnewTool; browsing success alone does not prove a reusable route exists. - Close sessions when finished.
browse.closestill indexes unlessdiscard:true.
To cover a whole site ahead of need, unbrowse.index {url, focus?} starts a background job: Unbrowse's own agent performs the site's core read-only capabilities, proves each with a browserless replay and adds them to your tools. Follow it with unbrowse.index.status {jobId}.
An existing HAR pair can be sent through unbrowse.learn. Only submit recordings the user authorized; HARs can contain private data. Private and loopback destinations are refused by the hosted service.
Session replay
Every cloud-browser session is recorded: your own unbrowse.browse.open … finish sessions become replays with sid a_<browse session id>, with the page recording, each step you took and a screenshot per step. Visitor sessions (people on unbrowse.ai) are visible to unbrowse.ai admins only; agent sessions are visible to the workspace that ran them.
unbrowse.replay.listandunbrowse.replay.search {query}find sessions and moments (filters:source,site,outcome,hasError,from,to).unbrowse.replay.get {sid}returns the summary: intent, outcome, drop-off reason, bugs and key moments.unbrowse.replay.timeline {sid}returns the session as text lines with times; narrow long ones withfrom/toorkinds.unbrowse.replay.ask {question}answers across sessions with citations (session and moment, with a link). Only cite what it returns.
Use it to find out why a learn failed (timeline of the a_… session) before retrying. REST: /api/v1/replays…; SDK: client.replays.*; CLI: unbrowse replay list|search|show|timeline|ask.
Website sign-in
Unbrowse account sign-in and a website's saved login are separate. Never ask for passwords in chat or type credentials via ordinary tool arguments.
- On a login page, use
browse.act {sessionId,action:"autofill"}, orvault:"username"|"email"|"password"|"totp"on a fill action. Values go directly from the vault to the site. - Missing login: present the returned
signIn.urlordetails.urlsave-login link.unbrowse.credentials.requestcan create one;credentials.statuschecks whether it was fulfilled. Resume only after it is ready. - Do not bypass CAPTCHA, MFA or human verification. Present the supported handoff or report the blocker.
- Saved sessions are reused; do not sign in again merely because another task started.
Read-only secretless learned routes may be scrubbed and shared to the public registry. The owner can opt out in the console. Logins, private session values and writes are not public tool definitions.
Serving many users (orgs)
When the caller is an agent a builder runs for its own users, it uses an org key and names the user on every call: X-Unbrowse-End-User: <that user's id> (REST and MCP headers). Each user has their own logins and sessions.
- Always send the id of the user the task is for. Never reuse one user's id for another user's task, and never omit it: without it the call acts as the org itself, not any user.
- A
signIn.url(a/connect/…link) is for that same user: deliver it to them, not to the builder or another user. They save the login there without an Unbrowse account; wait forunbrowse.credentials.statusto befulfilled, then call again. org__…tools are shared by the org's users (read-only, no logins);my__…tools are the current user's own.- Quota errors are the org's balance, not the user's. Report them to the builder.
Guide: https://github.com/lekt9/unbrowse6/blob/master/docs/orgs.md
Live canvas
When unbrowse.canvas.read and .put are listed, they connect to https://unbrowse.ai/app/canvas in the same signed-in workspace.
Use notes and plans for s
Truncated for display — read the full file on GitHub.
Related Skills
Agent-Reach
92.4kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu — one CLI, zero API fees.
headroom
74.5kCompress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.
CowAgent
47.2kOpen-source personal AI assistant & Agent Harness. Plans tasks, runs tools and skills, self-evolves with memory and knowledge. Multi-agent, multi-model, multi-channel. Lightweight, extensible, one-line install.
Scrapling
85.9k🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl! Don't be shy, join here: https://discord.gg/EMgGbDceNQ and follow here for daily tips and tricks: https://x.com/Scrapling_dev
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
