MCP Tools
VulpineOS provides a Model Context Protocol (MCP) server that exposes browser automation as tool calls. OpenClaw agents use these tools to browse — every action goes through Camoufox.
./vulpineos --mcp-serverAvailable Tools (12)
vulpine_snapshot
Get a token-optimized DOM snapshot (Phase 3). The primary tool agents use to understand the page — returns >50% fewer tokens than raw HTML. Interactive elements include @ref identifiers for click/type by reference.
| Param | Type | Description |
|---|---|---|
sessionId | string | Target page session ID |
maxDepth | number | Max tree depth (default 10) |
maxNodes | number | Max nodes (default 500) |
maxTextLength | number | Max text per node (default 200) |
viewportOnly | boolean | Only return elements visible in viewport (default false) |
{
"name": "vulpine_snapshot",
"arguments": { "sessionId": "sess-1", "viewportOnly": true }
}Returns compressed DOM with element refs:
{"v":1,"title":"Example","url":"https://example.com","nodes":[
[0,"doc","Example"],
[1,"a","Home",{"hr":"/"},"@0"],
[1,"btn","Sign Up",null,"@1"]
]}vulpine_click_ref
Click an element by its @ref from the snapshot. Resolves the element’s position, scrolls it into view, and dispatches mouse events.
{
"name": "vulpine_click_ref",
"arguments": { "sessionId": "sess-1", "ref": "@1" }
}vulpine_type_ref
Focus an element by its @ref and type text into it.
{
"name": "vulpine_type_ref",
"arguments": { "sessionId": "sess-1", "ref": "@0", "text": "hello world" }
}vulpine_hover_ref
Hover over an element by its @ref.
{
"name": "vulpine_hover_ref",
"arguments": { "sessionId": "sess-1", "ref": "@2" }
}vulpine_navigate
Navigate to a URL.
{
"name": "vulpine_navigate",
"arguments": { "sessionId": "sess-1", "url": "https://example.com" }
}vulpine_click
Click at specific pixel coordinates.
{
"name": "vulpine_click",
"arguments": { "sessionId": "sess-1", "x": 400, "y": 300 }
}vulpine_type
Type text into the currently focused element.
{
"name": "vulpine_type",
"arguments": { "sessionId": "sess-1", "text": "search query" }
}vulpine_screenshot
Capture a page screenshot (returns base64 PNG).
{
"name": "vulpine_screenshot",
"arguments": { "sessionId": "sess-1" }
}vulpine_scroll
Scroll the page by a specified amount.
{
"name": "vulpine_scroll",
"arguments": { "sessionId": "sess-1", "deltaY": 500 }
}vulpine_new_context
Create a new isolated browser context with its own cookies, storage, and fingerprint.
{
"name": "vulpine_new_context",
"arguments": {}
}vulpine_close_context
Close a browser context and release its resources.
{
"name": "vulpine_close_context",
"arguments": { "contextId": "ctx-a8f2" }
}vulpine_get_ax_tree
Get the raw accessibility tree (injection-filtered). Use vulpine_snapshot for token efficiency — this is for compatibility.
{
"name": "vulpine_get_ax_tree",
"arguments": { "sessionId": "sess-1" }
}Ref-Based Workflow
The recommended agent workflow:
- Call
vulpine_snapshotto get the page DOM with@refidentifiers - Agent reads the snapshot and decides which element to interact with
- Call
vulpine_click_reforvulpine_type_refwith the@ref— no coordinates needed - Call
vulpine_snapshotagain to see the result
This is more reliable than coordinate-based clicking because refs resolve to the actual DOM element, scroll it into view, and compute the center point automatically.
OpenClaw Integration
VulpineOS auto-generates ~/.openclaw-vulpine/openclaw.json. When foxbridge is available, it sets browser.cdpUrl so OpenClaw uses its native CDP browser tools through Camoufox:
{
"browser": {
"enabled": true,
"cdpUrl": "ws://localhost:9222"
}
}