steel-browser
Category: integration · Cloud + Local · Status: v1 — production
Connects PRXY to Steel — cloud browsers and scrape API for AI agents. Injects steel_scrape, fulfills it from the gateway (no client-side Steel SDK required in your app), and pairs with crushers so page dumps stay bounded.
What it does
User: "Summarize https://example.com"
→ model calls steel_scrape
→ PRXY calls Steel POST /v1/scrape
→ tool_result (markdown + metadata) → model answers
On non-streaming requests, PRXY auto-loops: if the provider returns only steel_scrape tool_use blocks, the gateway fulfills them and calls the provider again (up to maxAutoLoops).
Prerequisites
Set STEEL_API_KEY on the gateway process (cloud App Runner env or local .env):
STEEL_API_KEY=steel_xxxxxxxx
Or pass per-module config:
steel-browser:
apiKey: steel_xxxxxxxx
When to use it
✅ Research agents that need live web content
✅ Mastra / LangGraph / Anthropic SDK agents routed through PRXY
✅ With structured-crusher + ipc for long multi-page sessions
❌ Without a Steel API key
❌ Full browser automation (sessions, Playwright) — use Steel SDK in your agent; this module is scrape-first
Configuration
steel-browser:
apiKey: steel_xxx # optional if STEEL_API_KEY env is set
toolName: steel_scrape
defaultFormat: markdown # markdown | html | cleaned_html | readability
maxResultChars: 120000
injectTool: true
fulfillPending: true
autoLoop: true
maxAutoLoops: 3
Metrics emitted
steel-browser.applied(boolean)steel-browser.tool_injected(boolean)steel-browser.pending_fulfilled(number)steel-browser.scrapes(number)steel-browser.auto_loops(number)steel-browser.tool(string)
Recommended pipeline
- steel-browser
- mcp-optimizer
- structured-crusher
- code-crusher
- ipc
- patterns
Crushers run in pre() before the provider. Scrape results appended during auto-loop are not re-crushed in the same turn — use maxResultChars and markdown format to stay bounded, or rely on ipc on follow-up turns.
See Steel integration and Web research recipe.