# webhooks.cc > Webhook testing tools for developers. Capture, inspect, forward, and test webhooks with a dashboard, CLI, TypeScript SDK, and MCP server for AI agents. ## What is webhooks.cc? webhooks.cc is a webhook inspection and testing service. Developers use it to capture incoming HTTP requests at unique URLs, inspect headers and bodies in real time, configure mock responses with conditional rules (route different responses based on method, path, headers, body, or query params), forward webhooks to localhost for local development, and write automated test assertions against captured requests. Requests are captured by a Rust receiver, written directly to Postgres via a single stored procedure, and surfaced in the dashboard through Supabase Realtime. ## Core capabilities - Webhook capture: Send any HTTP request to https://go.webhooks.cc/w/ and inspect it instantly - Mock responses: Configure status codes, headers, and response bodies per endpoint — with conditional rules that route different responses based on method, path, headers, body content, JSON paths, or query params (first match wins) - CLI tunneling: Forward webhooks to localhost with `whk tunnel ` — no port forwarding or ngrok needed - TypeScript SDK: `@webhooks-cc/sdk` for programmatic endpoint management, test assertions, and real-time streaming - MCP server: `@webhooks-cc/mcp` connects AI coding agents (Claude Code, Cursor, VS Code, Codex, Windsurf) - Real-time streaming: Dashboard updates via Supabase Realtime (postgres_changes), CLI via Server-Sent Events - Request replay: Resend captured requests to any URL - Provider detection: Built-in helpers for Stripe, GitHub, Shopify, Slack, Twilio, Paddle, and Linear webhooks ## Pricing - Free: 50 requests/day, unlimited endpoints, 7-day retention, full CLI/SDK/MCP access - Pro ($8/month): 100,000 requests/month, 30-day retention ## Links - Full reference: https://webhooks.cc/llms-full.txt - Homepage: https://webhooks.cc - Documentation: https://webhooks.cc/docs - Installation: https://webhooks.cc/installation - CLI docs: https://webhooks.cc/docs/cli - CLI tunneling: https://webhooks.cc/docs/cli/tunnel - CLI commands: https://webhooks.cc/docs/cli/commands - SDK docs: https://webhooks.cc/docs/sdk - SDK API reference: https://webhooks.cc/docs/sdk/api - SDK testing patterns: https://webhooks.cc/docs/sdk/testing - MCP server docs: https://webhooks.cc/docs/mcp - Agent registration (auth.md): https://webhooks.cc/auth.md — how AI agents register for an API credential - GitHub: https://github.com/kroqdotdev/webhooks-cc - npm (SDK): https://www.npmjs.com/package/@webhooks-cc/sdk - npm (MCP): https://www.npmjs.com/package/@webhooks-cc/mcp ## API key format All API keys use the prefix `whcc_`. Keys are generated via the CLI with `whk auth login` or from the account page after signing in. See https://webhooks.cc/docs for setup instructions. ## Webhook endpoint URL format https://go.webhooks.cc/w/ https://go.webhooks.cc/w//optional/path Any HTTP method, content type, and body up to 1 MB is accepted. ## CLI commands whk # Interactive TUI whk auth login # Authenticate via browser whk auth status # Show login status whk auth logout # Clear stored token whk tunnel # Forward webhooks to localhost whk listen # Stream requests to terminal whk create [name] # Create endpoint whk list # List endpoints whk delete # Delete endpoint whk replay # Replay captured request whk update # Self-update from GitHub releases ## SDK quick start ```typescript import { WebhooksCC, matchBodyPath } from "@webhooks-cc/sdk"; const client = new WebhooksCC({ apiKey: process.env.WHK_API_KEY }); // Create an endpoint with conditional response rules const endpoint = await client.endpoints.create({ name: "test", responseRules: [ { name: "Stripe invoices", conditions: [ { field: "header", op: "exists", name: "stripe-signature" }, { field: "body_path", op: "eq", path: "type", value: "invoice.paid" }, ], response: { status: 200, body: '{"received": true}', headers: {} }, }, ], mockResponse: { status: 200, body: "ok", headers: {} }, // default fallback }); console.log(endpoint.url); // https://go.webhooks.cc/w/ // Wait for a webhook to arrive const request = await client.requests.waitFor(endpoint.slug, { timeout: "30s", match: matchBodyPath("event", "payment.success"), }); // Stream requests in real time for await (const req of client.requests.subscribe(endpoint.slug)) { console.log(req.method, req.path); } // Clean up await client.endpoints.delete(endpoint.slug); ``` ## MCP server setup ```bash # Claude Code claude mcp add webhooks-cc -- npx -y @webhooks-cc/mcp # Cursor / VS Code / Windsurf npx @webhooks-cc/mcp setup cursor npx @webhooks-cc/mcp setup vscode npx @webhooks-cc/mcp setup windsurf ``` Set the `WHK_API_KEY` environment variable to your API key.