Drop-in
Install Unbrowse
The browserless browser. One skill, one remote MCP, one SDK — no human in a browser, no Chromium on the agent's laptop.
01 · Agent Skill
SKILL.md
Thin public wrapper. Drop it in any skill-capable agent. YAML harnesses surface as searchable skills; Private space ranks first.
npx skills add unbrowse-ai/unbrowse
02 · Remote MCP
Hosted harness
Add it to your agent in one step. Every client signs in with OAuth — approve once on unbrowse.ai, nothing to paste.
Server URL
https://unbrowse.ai/mcpAdd to Cursoropens Cursor, then ConnectAdd to VS Codeopens VS Code, then AllowVS Code Insiderssame, Insiders buildClaude Code
claude mcp add --transport http unbrowse https://unbrowse.ai/mcpThen run
/mcpand pick Authenticate.Codex
codex mcp add unbrowse --url https://unbrowse.ai/mcp && codex mcp login unbrowseThe login opens your browser once.
Claude (web and desktop)
Settings → Connectors → Add custom connector. Paste the server URL, then Connect.
ChatGPT
Settings → Apps & Connectors → Create (developer mode). Paste the server URL, authentication OAuth.
Any other MCP client (JSON)
{ "mcpServers": { "unbrowse": { "url": "https://unbrowse.ai/mcp" } } }Every client signs you in with OAuth: you approve it once on unbrowse.ai and it gets its own revocable access. No key to paste; your saved logins stay in your vault.
Or with an API key
For clients without OAuth, scripts and servers.
{ "mcpServers": { "unbrowse": { "url": "https://host/mcp", "headers": { "Authorization": "Bearer ub_live_…" } } } }03 · TypeScript SDK
The product is the SDK
MCP is an adapter. REST lives at /api/v1. First request is fulfilled while Unbrowse passively indexes the route.
import { Unbrowse } from "@unbrowse/sdk"; const ub = new Unbrowse({ apiKey: process.env.UNBROWSE_API_KEY!, baseUrl: "https://host/api/v1", }); const run = await ub.run({ task: "top stories on Hacker News" });
Private space (sites you connected, public or passworded) always ranks above the public registry. Full skill text stays at /skill/SKILL.md.