Skip to main content
Point your MCP client at webhook.co’s remote server and it gains 21 tools — inspect endpoints, replay events, and drive the 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.
Two ways to authenticate:
  • 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. Send Authorization: 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: Throughout, replace 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.
1

Add the server

With a bearer token:
claude mcp add --transport http webhook https://mcp.webhook.co/mcp \
  --header "Authorization: Bearer whk_your_key_here"
Or omit --header to use OAuth — you’ll authenticate on first use:
claude mcp add --transport http webhook https://mcp.webhook.co/mcp
2

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):
claude mcp add --transport http webhook https://mcp.webhook.co/mcp -s user \
  --header "Authorization: Bearer whk_your_key_here"
3

Sign in (OAuth only)

If you added the server without a header, authenticate:
claude mcp login webhook
You can also run /mcp inside Claude Code and follow the auth prompt.
4

Verify

claude mcp list
Or run /mcp in a session — webhook should report connected.
For a project-shared config, commit a .mcp.json that reads the key from the environment:
.mcp.json
{
  "mcpServers": {
    "webhook": {
      "type": "http",
      "url": "https://mcp.webhook.co/mcp",
      "headers": {
        "Authorization": "Bearer ${WEBHOOK_API_KEY}"
      }
    }
  }
}
Set 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.
1

Open Connectors

Settings → Connectors → Add custom connector.
2

Paste the server URL

Enter https://mcp.webhook.co/mcp and click Add.
3

Authenticate

Complete the OAuth sign-in when prompted. The Free plan allows one custom connector; Pro, Max, Team, and Enterprise allow more.

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.
1

Enable Developer mode

Settings → Apps → Advanced → enable Developer mode.
2

Create the connector

Create custom connector, then set the URL to https://mcp.webhook.co/mcp.
3

Authenticate

Complete the OAuth sign-in. The connector’s tools become available in Developer mode chats.

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.
1

Edit ~/.codex/config.toml

~/.codex/config.toml
[mcp_servers.webhook]
url = "https://mcp.webhook.co/mcp"
bearer_token_env_var = "WEBHOOK_API_KEY"
Codex reads the token from the named environment variable — export WEBHOOK_API_KEY=whk_your_key_here in your shell.
2

Verify

codex mcp list
webhook should appear with its tools.

Cursor

Cursor speaks streamable HTTP natively. Use ~/.cursor/mcp.json for all projects, or a project-scoped .cursor/mcp.json.
1

Add the server

~/.cursor/mcp.json
{
  "mcpServers": {
    "webhook": {
      "url": "https://mcp.webhook.co/mcp",
      "headers": {
        "Authorization": "Bearer ${env:WEBHOOK_API_KEY}"
      }
    }
  }
}
Set WEBHOOK_API_KEY in your environment. For OAuth instead, omit headers and complete the one-click sign-in Cursor offers on connect.
2

Or use the deeplink

An “Add to Cursor” link has the form:
cursor://anysphere.cursor-deeplink/mcp/install?name=webhook&config=<base64-json>
where <base64-json> is the base64 encoding of {"url":"https://mcp.webhook.co/mcp"}.
3

Verify

Open Settings → MCP. webhook should show a green dot and list its tools.

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).
1

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
{
  "servers": {
    "webhook": {
      "type": "http",
      "url": "https://mcp.webhook.co/mcp",
      "headers": {
        "Authorization": "Bearer ${input:webhook-key}"
      }
    }
  },
  "inputs": [
    {
      "id": "webhook-key",
      "type": "promptString",
      "description": "webhook.co API key",
      "password": true
    }
  ]
}
2

Or add from the CLI

code --add-mcp "{\"name\":\"webhook\",\"type\":\"http\",\"url\":\"https://mcp.webhook.co/mcp\"}"
3

Verify

Run MCP: List Servers from the Command Palette and start webhook. An install badge/deeplink uses the form https://vscode.dev/redirect/mcp/install?{url-encoded-json}.

Windsurf

Windsurf’s Cascade speaks streamable HTTP. Its config uses the serverUrl key (not url).
1

Edit the config

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "webhook": {
      "serverUrl": "https://mcp.webhook.co/mcp",
      "headers": {
        "Authorization": "Bearer ${env:WEBHOOK_API_KEY}"
      }
    }
  }
}
Set WEBHOOK_API_KEY in your environment.
2

Verify

In Cascade, open the MCP panel and click Refresh. webhook and its tools should appear.

Other clients

Any client that supports remote streamable HTTP can connect to https://mcp.webhook.co/mcp with an Authorization: Bearer whk_your_key_here header. Key names differ:
  • Cline — add a server with transport streamableHttp and the URL plus an Authorization header.
  • Goose — type streamable_http in ~/.config/goose/config.yaml, URL https://mcp.webhook.co/mcp, with the bearer header under the server’s headers.
  • Zed — add under context_servers in settings with the HTTP URL and header.
  • JetBrains AI AssistantSettings → Tools → MCP, add an HTTP server pointing at the URL with the Authorization header.
  • WarpSettings → Agents → MCP, add the URL with the bearer header.
  • Continue — transport streamable-http, URL https://mcp.webhook.co/mcp, key under requestOptions.headers.

The mcp-remote bridge

For any client that only speaks stdio, bridge to the remote server with mcp-remote:
npx -y mcp-remote https://mcp.webhook.co/mcp \
  --header "Authorization: Bearer whk_your_key_here"
Space-in-argument gotcha. Many stdio clients split each args entry on spaces, which mangles Authorization: Bearer …. Put the value in env and reference it with no space in the arg:
{
  "command": "npx",
  "args": [
    "-y",
    "mcp-remote",
    "https://mcp.webhook.co/mcp",
    "--header",
    "Authorization:${AUTH_HEADER}"
  ],
  "env": {
    "AUTH_HEADER": "Bearer whk_your_key_here"
  }
}
Omit --header entirely to have mcp-remote run the OAuth flow instead.

Verify the connection

Once connected, confirm the tools loaded — you should see the triggers.* and endpoints.* tools appear:
  • Claude Code / Codex — run /mcp (or claude mcp list / codex mcp list); webhook reports connected.
  • Cursor / Windsurf — open the MCP panel; look for a green dot and the tool list.
  • VS CodeMCP: List Servers → Start, then check the tools.
  • Claude Desktop / ChatGPT — the connector shows as active; the tools are offered in a new chat.
A quick smoke test from any client: ask it to list your endpoints. If the endpoints.* tools resolve, auth and transport are both working.

Troubleshooting

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.
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.
mcp-remote caches tokens under ~/.mcp-auth. If auth is stuck in a bad state, clear it and reconnect:
rm -rf ~/.mcp-auth
The next connection re-runs the OAuth flow.
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.
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.
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.