webhooks-ccBLOCK
Webhook inspection and testing service
Overview
From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.
Inspect and debug webhooks without deploying to production.
Get a unique URL, point your webhook there, and see every request in real-time. No signup required.
[Try it now →](https://webhooks.cc)
Getting Started
- Visit webhooks.cc
- Copy your unique webhook URL
- Send a test request:
curl -X POST https://go.webhooks.cc/w/ -d '{"test": true}' - Watch it appear in the dashboard
Features
- Capture requests — Store incoming webhooks with headers, body, query params, and metadata
- Inspect in real-time — See requests the moment they arrive via WebSocket
- Configure responses — Return custom status codes, headers, and body for testing error paths
- Forward to localhost — Tunnel webhooks to your local server during development
- CLI with interactive TUI — Manage endpoints, tunnel, and stream requests from your terminal
- TypeScript SDK — Access webhook data programmatically for automation and testing
- MCP server — Connect AI coding agents (Claude Code, Cursor, VS Code, Codex) to your webhooks
Use Cases
Testing payment integrations — Point Stripe's test webhooks at your endpoint. Inspect the payload structure before writing handlers.
Debugging CI/CD hooks — See exactly what GitHub sends when a push, PR, or deployment occurs.
Developing locally — Forward production-like webhooks to localhost without exposing your machine to the internet.
Mocking failure scenarios — Configure your endpoint to return 500 errors and test your retry logic.
Pricing
Free — 50 requests/day, 7-day data retention. Enough for development and testing.
Pro ($8/month) — 100,000 requests/month, 30-day retention. For production monitoring and high-volume testing.
See webhooks.cc for details.
Install
CLI
curl -fsSL https://webhooks.cc/install.sh | sh
Then launch interactive terminal:
whk
SDK
npm install
085f6835cbfaOBSERVED · 2026-10-11Connect
Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.
claude mcp add sdk --env AGENT_ASSERTION_SIGNING_KEY=${AGENT_ASSERTION_SIGNING_KEY} --env AGENT_IDJAG_MAX_AUTH_AGE_SECONDS=${AGENT_IDJAG_MAX_AUTH_AGE_SECONDS} --env AGENT_POW_SECRET=${AGENT_POW_SECRET} --env AGENT_POW_SECRET_PREVIOUS=${AGENT_POW_SECRET_PREVIOUS} -- npx -y @webhooks-cc/[email protected]{
"mcpServers": {
"sdk": {
"command": "npx",
"args": [
"-y",
"@webhooks-cc/[email protected]"
],
"env": {
"AGENT_ASSERTION_SIGNING_KEY": "${AGENT_ASSERTION_SIGNING_KEY}",
"AGENT_IDJAG_MAX_AUTH_AGE_SECONDS": "${AGENT_IDJAG_MAX_AUTH_AGE_SECONDS}",
"AGENT_POW_SECRET": "${AGENT_POW_SECRET}",
"AGENT_POW_SECRET_PREVIOUS": "${AGENT_POW_SECRET_PREVIOUS}"
}
}
}
}Exposed tools (42)
28 read · 11 write · 3 destructive. Blast radius: 3 tools can delete or overwrite — an agent that can be talked into calling a tool can be talked into calling this one.
| Tool | Risk | Description |
|---|---|---|
Order | write | webhooks.cc test charge |
about_sandbox | read | Explain what this agent can do without a webhooks.cc account, the sandbox limits, and how to connect an account. No network call. |
clear_requests | destructive | Delete captured requests for an endpoint without deleting the endpoint itself. |
compare_requests | read | Compare two captured requests and show the structured differences. |
configure_forwarding | write | Set the URL captured emails are forwarded to (as signed JSON) and turn forwarding on or off. Owner only. Saving the first URL creates the signing secret. |
connect_account | read | Connect this agent to a human |
count_requests | read | Count captured webhook requests that match the given filters. |
create_endpoint | write | Create a temporary webhook capture endpoint in the agent sandbox (no account needed): ${limits}. The first call registers the sandbox, which takes a few seconds of proof of work. Mock responses, notifications and signature verification need an account: see connect_account. |
create_endpoints | write | Create multiple webhook endpoints in one call. |
delete_endpoint | destructive | Delete one of this agent |
delete_endpoints | destructive | Delete multiple webhook endpoints in one call. |
describe | read | Describe all available SDK operations, parameters, and types. |
extract_from_request | read | Extract specific JSON fields from a captured request body. |
get_email | read | Get one captured email: by requestId, or the newest at an endpoint (optionally with a tag). Returns the parsed message with its one-time code and main link. |
get_endpoint | read | Get one of this agent |
get_forwarding_secret | read | Read (or with rotate: true, replace) the whsec_ secret forwarded emails are signed with. Owner only. Treat the value as a credential: put it in the handler |
get_request | read | Get full details for a request captured by a sandbox endpoint. |
get_usage | read | Check current request usage, remaining quota, plan, and period end, plus the pooled quota of every subscribed team you belong to. |
list_deliveries | read | List forwarding deliveries: an endpoint |
list_emails | read | List the emails an endpoint received at its mailhooks.cc address, newest first: subject, sender, tag, and the one-time code and main link found in each. |
list_endpoints | read | List this agent |
list_provider_templates | read | List supported webhook providers, templates, and signing metadata. |
list_requests | read | List recent requests captured by a sandbox endpoint, newest first. |
list_team_members | read | List a team |
list_teams | read | List the teams you own or belong to, with role, seats, pooled request usage (requestsUsed/requestLimit), period end, and whether the team is suspended for lack of a subscription. |
preview_webhook | read | Preview a webhook request without sending it. Returns the exact URL, method, headers, and body. |
redeliver_email | read | Forward a captured email again with the endpoint |
replay_request | read | Replay a previously captured request to a target URL. |
search_requests | read | Search captured webhook requests across endpoints using retained full-text search. |
send_test_email | write | Deliver a sample email (with a 6-digit code and a link) to an endpoint, optionally to a +tag address. It counts as one request and skips SMTP, so sender checks do not run on it. |
send_to | write | Send a webhook directly to any URL with optional provider signing. |
send_webhook | write | Send a test webhook to a hosted endpoint. Supports provider templates and signing. |
share_endpoint | read | Share an endpoint you own with a team so its members can inspect, stream, and edit it. The team needs an active subscription; the endpoint |
test_forwarding | write | Post the endpoint |
test_webhook_flow | write | Run a full webhook test flow: create endpoint, optionally mock, send, wait, verify, replay, and clean up. |
unshare_endpoint | write | Stop sharing an endpoint you own with a team. Works even when the team is suspended. |
update_endpoint | write | Update an endpoint name, mock response, conditional response rules, signing configuration, or whether codes and links are picked out of its emails. |
verify_signature | read | Verify the webhook signature on a captured request. When called without provider/secret, returns the server-side pre-computed result (if signing is configured on the endpoint). When called with provider+secret, performs client-side verification. |
wait_for_connection | read | Wait for the human to enter the code from connect_account. On success the full webhooks.cc tools for their account replace these sandbox tools. Returns after timeoutSeconds (default ${DEFAULT_WAIT_SECONDS}) if they have not finished yet; call it again to keep waiting. |
wait_for_email | read | Wait for an email to arrive at an endpoint (for example after triggering a signup), then return it with its one-time code and main link. Use a tag per run to find your own email. |
wait_for_request | read | Wait for a request to arrive at a sandbox endpoint. |
wait_for_requests | read | Wait for multiple requests to arrive at an endpoint. |
Trust audit
BLOCKgrade F · trust 37/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | PASS |
| L1 | Static analysis of the code | FAIL |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | WARN |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- declared (9 observation(s))
- Network
- declared (17 observation(s))
- Shell
- declared (1 observation(s))
- Dependencies
- not all pinned
- Secrets in source
- found
Findings (25)
|| v4.is_link_local() // 169.254.0.0/16 (includes metadata 169.254.169.254)
assert!(is_blocked_ip("169.254.169.254".parse::<IpAddr>().unwrap()));"::ffff:169.254.169.254".parse::<IpAddr>().unwrap()
resolve_notification_target("http://169.254.169.254/meta")SUPABASE_DB_URL=postgresql://postgres:password@your-supabase-host:5433/postgres
DATABASE_URL=postgresql://postgres:password@your-supabase-host:5432/postgres
# MAIL_INGEST_URL=http://127.0.0.1:3002
(format!("http://127.0.0.1:{}", addr.port()), shared)ingest("http://127.0.0.1:1").check("[email protected]").await,ingest("http://127.0.0.1:1").deliver(delivery()).await,"path": "/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
"path": "/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
"body": "{\"Application\": \"Acme\", \"Pad\": \"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"text": "New webhook on *demo4slug1* (`POST /`)\nReceived 2026-10-10T08:00:00.123Z (UTC)\n```\n{\"Application\": \"Acme\", \"Pad\": \"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"body": "yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
let secret = "slack_signing_secret";
let secret = "paddle_webhook_secret";
let secret = "sentry_client_secret";
let secret = "sentry_client_secret";
let secret = "bitbucket_webhook_secret";
clear_requests, delete_endpoint, delete_endpoints
.prettierignore
new Function("document", "localStorage", "window", "Math", script)(cd apps/receiver-rs && $$HOME/.cargo/bin/cargo build --release && cp target/release/webhooks-receiver ../../dist/receiver
cd apps/cli-rs && cargo build --release && cp target/release/whk ../../dist/whk
Gates applied: no_behavioural_pass.
085f6835cbfafull audit observations/trust-audit/mcp-server/kroqdotdev__webhooks-cc.json · Report an issue / request a re-scanAudit history
Every audit this server has had. A grade with a past is a grade somebody is still checking.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-11 | 085f6835cbfa | BLOCK | F | 37 | first audit |
Questions
What is the webhooks-cc MCP server?
Webhook inspection and testing service
What tools does webhooks-cc expose?
42 in total: 28 read-only, 11 that write, and 3 that can delete or overwrite (clear_requests, delete_endpoint, delete_endpoints). Every one is listed on this page with its risk.
Is webhooks-cc safe to connect to an agent?
No — not without reading the findings first. The audit graded it F (37/100) and found 6 critical or high issues in the source. Each one is listed on this page with the file and line it is on. Separately from the audit: 3 of its tools can destroy data, so scope the token you give it to what you actually need.
What credentials does webhooks-cc need?
It reads AGENT_ASSERTION_SIGNING_KEY, AGENT_IDJAG_MAX_AUTH_AGE_SECONDS, AGENT_POW_SECRET, AGENT_POW_SECRET_PREVIOUS, APPSIGNAL_PUSH_API_KEY, BLOG_API_SECRET, CAPTURE_SHARED_SECRET, FORWARD_SECRET, NEXT_PUBLIC_POSTHOG_KEY, NEXT_PUBLIC_SUPABASE_ANON_KEY, NOTIFY_SECRET and POLAR_WEBHOOK_SECRET from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.
How does webhooks-cc run?
It speaks stdio, so it runs as a local process your client starts. It is published on npm as @webhooks-cc/sdk at 1.13.0.
How current is this page?
The grade is for one exact copy of the source (085f6835cbfa), read on 2026-10-11. The repository is watched and re-audited when it changes.