triggers.* webhook-to-agent flow — without leaving your editor or chat.
Server URL
https://mcp.webhook.co/mcp — a remote, streamable-HTTP MCP server. Not stdio.- OAuth (interactive). webhook.co is a standard OAuth resource server. For most clients, adding the server URL triggers a browser sign-in on first connect — no key to paste. This is the recommended path for GUI clients (Claude Desktop, ChatGPT, Cursor one-click).
whk_bearer token. SendAuthorization: Bearer whk_your_key_here. Best for header-based and headless clients (Claude Code, Codex, CI). Mint a key, store it in an environment variable, and never hardcode it.
New here? Mint an API key and browse the full tool catalog —
including
triggers.wait, the webhook-to-agent trigger.Supported clients
Jump to your client:- Claude Code
- Claude Desktop
- ChatGPT
- Codex CLI
- Cursor
- VS Code (Copilot)
- Windsurf
- Other clients (Cline, Goose, Zed, JetBrains, Warp, Continue) and the
mcp-remotebridge
whk_your_key_here with your own key, and prefer the environment-variable form (WEBHOOK_API_KEY) over a literal.
Claude Code
Claude Code speaks streamable HTTP natively — no bridge needed.Add the server
With a bearer token:Or omit
--header to use OAuth — you’ll authenticate on first use:Choose a scope (optional)
Add
-s local (default, this machine only), -s project (shared via a checked-in .mcp.json), or -s user (all your projects):Sign in (OAuth only)
If you added the server without a header, authenticate:You can also run
/mcp inside Claude Code and follow the auth prompt..mcp.json that reads the key from the environment:
.mcp.json
WEBHOOK_API_KEY in your shell so the literal key never lands in the repo.
Claude Desktop
Claude Desktop connects from Anthropic’s cloud, so the server must be publicly reachable —https://mcp.webhook.co/mcp is. The Connectors UI uses OAuth; for a header-based token you edit the config file and use the mcp-remote bridge.
- OAuth (recommended)
- whk_ token (config file)
Use the Connectors flow above. No key to manage — Claude Desktop stores and refreshes the OAuth token for you.
ChatGPT
ChatGPT connects from OpenAI’s cloud (Developer mode / custom connectors, on paid plans), so the endpoint must be public —https://mcp.webhook.co/mcp is. A raw bearer header isn’t a first-class field here, so OAuth is the path.
Codex CLI
Codex CLI supports remote streamable-HTTP MCP servers via~/.codex/config.toml. Remote-HTTP support is recent and version-sensitive — update Codex if the url key isn’t recognized.
Edit ~/.codex/config.toml
~/.codex/config.toml
WEBHOOK_API_KEY=whk_your_key_here in your shell.Cursor
Cursor speaks streamable HTTP natively. Use~/.cursor/mcp.json for all projects, or a project-scoped .cursor/mcp.json.
Add the server
~/.cursor/mcp.json
WEBHOOK_API_KEY in your environment. For OAuth instead, omit headers and complete the one-click sign-in Cursor offers on connect.Or use the deeplink
An “Add to Cursor” link has the form:where
<base64-json> is the base64 encoding of {"url":"https://mcp.webhook.co/mcp"}.VS Code (Copilot)
VS Code’s Copilot agent mode speaks streamable HTTP. The workspace config lives in.vscode/mcp.json, where the top-level key is servers (note: not mcpServers).
Add .vscode/mcp.json
This prompts for the key on first use and stores it securely, so nothing secret is written to the file:
.vscode/mcp.json
Windsurf
Windsurf’s Cascade speaks streamable HTTP. Its config uses theserverUrl key (not url).
Other clients
Any client that supports remote streamable HTTP can connect tohttps://mcp.webhook.co/mcp with an Authorization: Bearer whk_your_key_here header. Key names differ:
- Cline — add a server with transport
streamableHttpand the URL plus anAuthorizationheader. - Goose — type
streamable_httpin~/.config/goose/config.yaml, URLhttps://mcp.webhook.co/mcp, with the bearer header under the server’s headers. - Zed — add under
context_serversin settings with the HTTP URL and header. - JetBrains AI Assistant — Settings → Tools → MCP, add an HTTP server pointing at the URL with the
Authorizationheader. - Warp — Settings → Agents → MCP, add the URL with the bearer header.
- Continue — transport
streamable-http, URLhttps://mcp.webhook.co/mcp, key underrequestOptions.headers.
The mcp-remote bridge
For any client that only speaks stdio, bridge to the remote server withmcp-remote:
Verify the connection
Once connected, confirm the tools loaded — you should see thetriggers.* and endpoints.* tools appear:
- Claude Code / Codex — run
/mcp(orclaude mcp list/codex mcp list);webhookreports connected. - Cursor / Windsurf — open the MCP panel; look for a green dot and the tool list.
- VS Code — MCP: List Servers → Start, then check the tools.
- Claude Desktop / ChatGPT — the connector shows as active; the tools are offered in a new chat.
endpoints.* tools resolve, auth and transport are both working.
Troubleshooting
Tools don't show up after adding the server
Tools don't show up after adding the server
Confirm the transport is http (streamable HTTP), not stdio, and that the URL is exactly
https://mcp.webhook.co/mcp. Restart the client (Claude Desktop and some editors only load MCP servers at startup). Then re-run the verify step for your client — /mcp, List Servers, or the MCP panel — and check for an error next to webhook.The client says "needs login" or auth failed
The client says "needs login" or auth failed
Your OAuth session or token expired, or the header is wrong. For OAuth clients, trigger a fresh sign-in (
claude mcp login webhook, /mcp, or the client’s reconnect button). For token clients, verify the header is Authorization: Bearer whk_your_key_here and that WEBHOOK_API_KEY is actually exported in the environment the client sees. Mint a new key if in doubt.Reset the OAuth cache (mcp-remote)
Reset the OAuth cache (mcp-remote)
mcp-remote caches tokens under ~/.mcp-auth. If auth is stuck in a bad state, clear it and reconnect:Streamable HTTP vs SSE
Streamable HTTP vs SSE
webhook.co serves streamable HTTP at
https://mcp.webhook.co/mcp. If your client asks you to pick a remote transport, choose streamable HTTP (sometimes labeled “HTTP”), not the older SSE transport. Point it at the same /mcp URL.My client only speaks stdio
My client only speaks stdio
Use the
mcp-remote bridge — it presents the remote server to the client as a local stdio server. Remember the space-in-argument gotcha: pass the header value via env.Claude Desktop or ChatGPT can't reach my endpoint
Claude Desktop or ChatGPT can't reach my endpoint
Both connect from the vendor’s cloud, so they can only reach a publicly reachable server.
https://mcp.webhook.co/mcp is public, so it works — but a localhost or private-network MCP server will not connect from these clients. Local-only setups need a local client (Claude Code, Cursor, VS Code) or a public tunnel.