anyhook_mock
Mock a webhook
Generate a webhook request with a valid signature for Stripe, GitHub, or Slack. If targetUrl is provided, the request is POSTed there and the response is returned.
dataevent必填secretprovider必填targetUrlnet.anyhook由 anyhook.net 發布官方發布者v0.5.0更新於 Nov 4, 2026
A webhook inbox for agents: one call returns a live URL. Mock, verify, inspect and replay.
AnyHook 為助理提供 webhook 收件匣:建立具公開入站網址的應用、檢視與重播事件、產生並驗證簽章酬載。
Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。
把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。
閱讀 https://sourceweft.com/mcp/net.anyhook%2Fanyhook/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。把它新增到你客戶端的 mcpServers 設定中。
{
"mcpServers": {
"anyhook": {
"type": "http",
"url": "https://anyhook.net/mcp"
}
}
}An MCP server that gives AI agents eyes on webhooks, inspect events, replay deliveries, mock signed payloads, create apps. Designed for the 45-second AI handler workflow.
Apache 2.0 · npm i -g anyhook-mcp
A public webhook URL that forwards to your machine, with no account:
stripe.webhooks.constructEvent and friends work as they do in production.listen 3000/api/webhooks sets the path. With ANYHOOK_API_KEY set it uses that account, and --app <slug> picks the app. Needs Node 22 or newer.
It is for webhooks, not a general tunnel. The sender gets its answer from AnyHook, so your server's response goes to the event log rather than back to the sender. To expose a whole site, use ngrok or Cloudflare Tunnel.
Connect the hosted endpoint instead of running anything: add https://anyhook.net/mcp
to Claude Code, claude.ai, Codex or VS Code and sign in through the browser, no key
to copy. Steps for each app: https://anyhook.net/mcp.
No API key needed to start:
Then ask your agent to run anyhook_quickstart, it creates a free relay
endpoint + API key instantly (no signup), and this MCP session auto-connects.
All account tools (events, replay, apps) work immediately. The response includes
a claim_url to keep the endpoint permanently; unclaimed, it expires in 7 days.
It is a new endpoint, not an account you already have.
Drop this MCP server into Claude Desktop / Cursor / Claude Code and your agent can:
anyhook_apps_list, see every app in your AnyHook account with its inbound URLanyhook_apps_create, spin up a new app from a promptanyhook_connect, give a Stripe key or GitHub token: the webhook is registered at the provider and signature-checked from the first event (the key is not stored)anyhook_events, list recent events, filter by app / statusanyhook_inspect, pull a single event's headers, body, signature statusanyhook_replay, re-send a stored event to its destinations (outside the monthly quota, within a daily replay limit and the compute allowance; an event held for quota counts as new)anyhook_undelivered, list events that never reached a destinationanyhook_usage, the plan's limits and what the account has used of each, with when they resetanyhook_replay_failed, bulk-replay an app's failed events, oldest first (the last 24 hours and 50 per call by default, up to 100), saying when more are waitinganyhook_mock, generate a signed Stripe / GitHub / Slack payload for local handler testinganyhook_verify, verify any incoming signature against your secretanyhook_providers, list every webhook provider AnyHook supportsThe inbound URL an app gives you accepts webhook POSTs and also answers provider
setup handshakes automatically: Meta's GET carrying hub.mode=subscribe gets its
hub.challenge echoed back, even before the app is configured, so the URL can be
registered in the Meta App Dashboard first and wired up after.
Two modes:
Get an API key from https://anyhook.net/dashboard/settings. Keys start with ahk_live_.
Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
Restart Claude Desktop. The tools appear under the hammer icon.
Open Settings → MCP → Add new MCP server. Or edit ~/.cursor/mcp.json:
Or add the same mcpServers entry to your project's .mcp.json.
The same server is hosted at https://anyhook.net/mcp (streamable HTTP,
stateless). Claude Code, claude.ai, Codex and VS Code sign in through the
browser (OAuth), no key to copy: https://anyhook.net/mcp has the steps for
each. Any other client sends Authorization: Bearer ahk_live_... with a key
from the dashboard:
The endpoint has no anyhook_quickstart: that tool exists only in local mode.
Skip the env var:
The agent gets anyhook_mock, anyhook_verify, anyhook_providers, anyhook_simulate, anyhook_events (against memory store), and anyhook_inspect (against memory store). Useful for "generate me a signed Stripe payment_intent.succeeded and POST it to localhost:3000" flows during local dev.
Triage a failing endpoint:
"Show me undelivered events for the
stripe-prodapp from the last hour, then replay them."
The agent calls anyhook_undelivered then anyhook_replay for each, surfacing the responses inline.
Create an app for a new integration:
"Make a new AnyHook app called
replicate-video-jobs, sourcegeneric, point it athttps://my-app.vercel.app/api/replicate-callback."
Calls anyhook_apps_create, returns the inbound URL you paste into Replicate.
Sanity-check a signature failure:
"Here's an inbound payload from Stripe that AnyHook is rejecting. Verify the signature manually with secret
whsec_xxx."
Calls anyhook_verify with the supplied headers + body + secret, returns valid: false plus the failure reason.
Mock a webhook for local testing:
"Generate a Stripe
payment_intent.succeededevent and POST it to http://localhost:3000/api/webhooks/stripe."
Calls anyhook_mock with targetUrl set; returns the request that was sent + your handler's response.
AI agents have been blind to their own webhook infrastructure. They can write the integration code, but once an event misbehaves in production they can't see it, you tell them what happened. With this MCP server, Claude / Cursor can read the actual event log, replay deliveries, debug signature failures, and even spin up new apps. It closes the loop between writing webhook code and operating it.
Apache-2.0 © AnyHook
來源:packages/mcp/README.md,提交 3f0252c
Mock a webhook
Generate a webhook request with a valid signature for Stripe, GitHub, or Slack. If targetUrl is provided, the request is POSTed there and the response is returned.
dataevent必填secretprovider必填targetUrlVerify a webhook signature
Verify a webhook signature against a secret, for every source the AnyHook edge verifies, including stripe, github, shopify, slack, line, discord, linear, vercel, paddle, hubspot, paypal and xero.
body必填secret必填headers必填provider必填requestUrlList supported providers and event types
List webhook providers AnyHook can mock, along with the event types available for each.
無需輸入參數。
List your AnyHook apps
List apps in your AnyHook account with inbound URLs, sources, and destination URLs. Check isActive: an inactive app's inbound URL answers setup handshakes but acknowledges and discards event POSTs (202, reason app_inactive) instead of relaying them. Destination signing secrets are redacted to has_signing_secret plus a 4-char hint; a new secret in plaintext comes only from rotating it. An app whose slug was changed lists its former URLs under legacyInboundUrls; those still route to it.
無需輸入參數。
Get this app's email inbox address
Every AnyHook app is also an email inbox: mail sent to {user}.{app}@anyhook.net becomes an event (type email.received) you can read with anyhook_events. Returns the address and webhook URL for one of your apps.
appCreate a new AnyHook app
Create a new app with a name, provider source, and (optionally) destinations. Returns the inbound URL. The app is active immediately. Created WITHOUT destinations it still receives and LOGS every event (inspect-only), it just delivers nowhere until a destination is added (PATCH /api/v1/apps/{slug} with {"destinations": [...]}).
name必填source必填destinationsConnect Stripe or GitHub with one key
Wire a provider to AnyHook in one call: give a Stripe or GitHub key and AnyHook registers the app's inbound URL as a webhook at the provider, saves the signing secret it yields, and turns on signature verification at the edge. The provider is read from the key; the key is used once and not stored. Without appSlug a new app is created (and removed again if the provider refuses the key). Re-running replaces the registration instead of duplicating it. GitHub sends a signed ping immediately, so the first event appears within seconds. Add a destination afterwards (PATCH /api/v1/apps/{slug}) to forward events; until then they are received and logged.
targetappSlugprovider_key必填Replay an event
Re-send a stored event to its destinations. Replays sit outside the monthly event quota but within a daily replay limit per plan and the monthly compute allowance (anyhook_usage), and replaying an event that was held for quota bills it as a new event. The destination does run its handler again: a receiver that is not idempotent will process the event twice while debugging.
id必填List undelivered events for an app
Show events for the given app that have not successfully reached any destination (failed or still retrying).
limitappSlug必填Bulk-replay an app's failed events
Re-send an app's failed events after the destination is fixed, oldest first: by default those received in the last 24 hours, at most 50 per call (since and limit change both; limit goes up to 100). Events held by an open circuit are included. An event replayed once is not selected again, so a second call continues with the rest. The result lists what was replayed, what was skipped and why, and more: true while failed events are still waiting. Replays count against the plan's daily replay limit.
limitsinceappSlug必填Read an app's code handler
The code that runs on this app's events: its source, the names of its secrets (never the values), whether events are reaching it, and runs used this month against the plan's limit.
appSlug必填Deploy code that runs on an app's events
Save a handler that runs on every event this app receives, in an isolated sandbox, with AnyHook's retries and replay around it: no server of your own. Each run's console output and return value are stored as that delivery's response (anyhook_inspect shows them). It can also run on a cron schedule. Pro and Scale; runs are capped per month with no overage, retries, test runs and schedule firings each count, and each run and package install is charged to the monthly compute allowance (anyhook_usage shows both). Test it with anyhook_code_test before real events arrive.
code必填appSlug必填enabledsecretsscheduleRun an app's code on a stored event
Run the saved handler now and return its logs, return value and duration: on a stored event (the latest when event_id is omitted) or on a body you give. Counts as a run. Nothing is delivered, but whatever the code itself sends does happen.
bodyappSlug必填event_idShow plan limits and usage
What the plan allows and what this account has used of each: events this month (per delivery, large events count per 64 KB), overage, the compute allowance and what used it (retries, replays, waiting on slow destinations, code runs, builds, schedules), API calls today (each tool call that reads or changes the account counts one), code runs and package snapshots, with when each resets. Call it when something answers with a limit, before bulk work such as replay_failed, or when the user asks what they are using.
無需輸入參數。
List recent webhook events
List webhook events, most recent first: id, app, type, status, attempt, destination status code, latency, timestamp. Summaries only, no request headers or body; anyhook_inspect reads one event's payload by the id from here. Uses your AnyHook account when connected, otherwise the local in-memory store.
limitstatusappSlugInspect a specific event
Full detail for one event by id, including the inbound headers and body that anyhook_events omits, plus the destination's response. Payloads can be large and often contain personal data, so fetch one at a time, only when the body is needed. Account or local store.
id必填已滿足適用檢查項的 100%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
npx -y anyhook-mcp listen 3000Webhook URL https://in.anyhook.net/q-3fa9c1d2/listenForwards to http://localhost:3000/
This URL is temporary and lasts until Nov 11. To keep it: https://anyhook.net/claim/...
Paste the URL into Stripe, GitHub or any webhook sender. Ctrl-C to stop.While this is stopped, events are logged but not forwarded.
Connected. Waiting for events.12:00:03 200 41 ms invoice.paid12:00:19 500 12 ms invoice.paid AnyHook retries on its scheduleclaude mcp add anyhook -- npx -y anyhook-mcpnpm install -g anyhook-mcp# or run without installingnpx -y anyhook-mcp{ "mcpServers": { "anyhook": { "command": "npx", "args": ["-y", "anyhook-mcp"], "env": { "ANYHOOK_API_KEY": "ahk_live_xxxxxxxx" } } }}{ "mcpServers": { "anyhook": { "command": "npx", "args": ["-y", "anyhook-mcp"], "env": { "ANYHOOK_API_KEY": "ahk_live_xxxxxxxx" } } }}claude mcp add anyhook -e ANYHOOK_API_KEY=ahk_live_xxxxxxxx -- npx -y anyhook-mcp{ "mcpServers": { "anyhook": { "url": "https://anyhook.net/mcp", "headers": { "Authorization": "Bearer ahk_live_..." } } } }{ "mcpServers": { "anyhook": { "command": "npx", "args": ["-y", "anyhook-mcp"] } }}