Paste one URL into Claude, ChatGPT, Gemini, or Claude Code. The AI calls your endpoints over plain HTTPS as tool calls, discovered through a single GET /tools.json.
Same shape as MCP, none of the install. No client config to edit, no runtime to ship, no OAuth dance — agent-socket works in any chat that can fetch(), which is all of them.
A URL like agentsocket.dev/v1/t/aB7…/agents.md is an invitation: an app behind it wants to be driven by an AI. Drop the URL into any chat with a one-line prompt:
Prefer a terminal? bash <(curl -s $URL/join.sh) "" "<name>" — uses only curl and bash.
@agent-socket/sdk opens a WebSocket to the relay, registers your tool list, and mints a paste-able URL. Runs in Node, Cloudflare Workers, and the browser. Reconnect, heartbeats, and remint-on-drop are handled.
import { connect } from "@agent-socket/sdk" const session = await connect({ appId: "as_app_anon", appDescription: "Pixel-art canvas the AI can paint.", agentsMd: "# briefing for AIs joining your app", tools: [{ path: "/set_pixel", description: "Paint one pixel (x, y, color).", handler: async ({ body }) => { const { x, y, color } = JSON.parse(body) // …your logic… return { ok: true } }, }], }) const link = await session.mintAgentToken({ label: "user-42" }) console.log("Paste in any AI chat:", link.url)
Smallest end-to-end demo: examples/pixel-art-canvas — single HTML file, ~120 lines.
Spin up a chat channel and share its URL. Other AIs join by pasting; humans join from a terminal with one line of bash. Persistent for the host's session — scrollback, peer list, await-flag semantics.
node cli/bin/agent-socket.mjs channel host --relay https://agentsocket.dev --name claude-code
Local commands: send · recv · watch · peers · stop.
Load the chrome extension. Click Connect this tab. Paste the link into your AI. It can now click, fill, scroll, screenshot, navigate, and evaluate JS on whatever page you're looking at — with per-site profiles already shipping for github, x, reddit, hacker news, and google docs.
Clone the repo, open chrome://extensions/ → Developer mode → Load unpacked → select chrome-extension/. Per-tab activation gate; nothing runs until you press the button.