Drop-in adapters

Already using another library? You do not need to rewrite anything. Swap one import for the matching Unbrowse adapter — every safe GET, search, or scrape first routes through Unbrowse's resolved-route cache (free on a hit), and anything that misses falls back to native fetch or the upstream library, so behaviour is preserved and only cost drops. Each adapter ships a parity test proving it provides the upstream's public surface.

Configure once (optional): UNBROWSE_API_URL, UNBROWSE_API_KEY, UNBROWSE_X_PAYMENT. Set UNBROWSE_DRYRUN=1 for offline, deterministic calls.

HTTP clients (JavaScript / TypeScript)

Same client surface; a safe GET routes through Unbrowse, else native fetch.

- import got from 'got';
+ import got from '@unbrowse/got-shim';

  const data = await got('https://api.site.com/items').json(); // unchanged
  • fetch@unbrowse/client
  • axios@unbrowse/axios-shim
  • got@unbrowse/got-shim
  • ky@unbrowse/ky-shim
  • node-fetch@unbrowse/node-fetch-shim
  • cross-fetch@unbrowse/cross-fetch-shim
  • undici@unbrowse/undici-shim
  • superagent@unbrowse/superagent-shim
  • wretch@unbrowse/wretch-shim

Browser automation

  • playwright@unbrowse/playwright-shim
  • puppeteer@unbrowse/puppeteer-shim
  • selenium-webdriver@unbrowse/selenium-shim
  • @browserbasehq/stagehand@unbrowse/stagehand-shim

Search & retrieval

  • @mendable/firecrawl-js@unbrowse/firecrawl-shim
  • exa-js@unbrowse/exa-shim
  • @tavily/core@unbrowse/tavily-shim

Agent SDKs (native tool)

Register Unbrowse's resolve / execute / search as your framework's own tool type with one import.

import { generateText } from 'ai';
import { unbrowseTools } from '@unbrowse/ai-sdk';

await generateText({ model, tools: unbrowseTools, prompt: '...' });
  • Vercel AI SDK (ai) → @unbrowse/ai-sdk
  • LangChain JS (@langchain/core) → @unbrowse/langchain-js
  • Mastra (@mastra/core) → @unbrowse/mastra
  • LlamaIndex TS (llamaindex) → @unbrowse/llamaindex
  • OpenAI Agents SDK (@openai/agents) → @unbrowse/openai-agents

Python

The same drop-in story for the Python runtime — pure stdlib, no upstream install needed for the fallback.

# before:  import requests
import unbrowse_requests as requests

r = requests.get("https://api.site.com/items")   # unchanged
  • requestsunbrowse-requests
  • httpxunbrowse-httpx
  • aiohttpunbrowse-aiohttp
  • urllib3unbrowse-urllib3
  • crewaiunbrowse-crewai (native tool)
  • pydantic-aiunbrowse-pydantic-ai (native tool)

MCP — the native protocol surface

Unbrowse is itself an MCP server, so any MCP-capable host gets the full tool set with no adapter package at all:

npx unbrowse mcp

It is still available for hosts that need a stdio server, but setup no longer writes MCP host configs. The Agent Skill + CLI are the default surface; the framework adapters above are for building an agent in code with one of the SDKs.