Drive a real headless browser session: open, navigate, read, click and fill. Connect ChatGPT and OpenAI Agents to the WingMan MCP gateway once and these tools are available in every conversation.
With the OpenAI Agents SDK (Python), connect over Streamable HTTP as below. The same URL works as a remote MCP tool in the Responses API and as a custom connector in ChatGPT developer mode.
import asyncio
from agents import Agent, Runner
from agents.mcp import MCPServerStreamableHttp
async def main():
async with MCPServerStreamableHttp(name="wingman", params={"url": "https://wingmanprotocol.com/mcp"}) as wingman:
agent = Agent(name="Assistant", mcp_servers=[wingman])
result = await Runner.run(agent, "Use the wingman tools for this task.")
print(result.final_output)
asyncio.run(main())
# Responses API instead of the SDK:
# tools=[{"type": "mcp", "server_label": "wingman", "server_url": "https://wingmanprotocol.com/mcp", "require_approval": "never"}]Names and descriptions come straight from the live tool registry.
browse_openOpen a PERSISTENT browser session (cookies/login survive across calls) and get a browser_id to drive with browse_navigate/snapshot/click/ty…browse_navigateNavigate an open session to a URL (SSRF-guarded).browse_snapshotAgent-native ACT view of the current page: interactive elements with stable @eN refs (for click/type) + a heading outline + challenge state.browse_clickClick an element by its @eN ref from the last browse_snapshot.browse_fillFill many fields at once {ref: value}; optional submit_ref to click after.These tools are in the default tool list, so they show up as soon as the server connects.
Give ChatGPT and OpenAI Agents a task that needs it, for example “use browse_open from wingman”. The tool call goes to https://wingmanprotocol.com/mcp and the result comes back into the conversation.
Research, the browser and other metered tools draw on Protocol Credits. Top up by card, and keep working from your iPhone with Dandelion, the WingMan agent desk app.
Buy creditsGet Dandelion on the App Store