AnyHook
A webhook inbox for agents: one call returns a live URL. Mock, verify, inspect and replay.
Connect it
Settings → Connectors → Add custom connector
URL: https://anyhook.net/mcpSettings → Apps & Connectors → Advanced → Developer mode
Create connector with URL: https://anyhook.net/mcp{
"mcpServers": {
"anyhook": {
"url": "https://anyhook.net/mcp"
}
}
}claude mcp add --transport http anyhook https://anyhook.net/mcp{
"servers": {
"anyhook": {
"type": "http",
"url": "https://anyhook.net/mcp"
}
}
}{
"mcpServers": {
"anyhook": {
"command": "npx",
"args": [
"-y",
"anyhook-mcp@0.3.0"
],
"env": {
"ANYHOOK_API_KEY": "<value>"
}
}
}
}claude mcp add anyhook -- npx -y anyhook-mcp@0.3.015 tools, verified live
anyhook_mockcan modifyGenerate 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.
anyhook_verifyread-onlyVerify a webhook signature against a secret. Supports 20 providers including stripe, github, shopify, slack, line, discord, linear, vercel, paddle, hubspot, and paypal.
anyhook_providersread-onlyList webhook providers AnyHook can mock, along with the event types available for each.
anyhook_apps_listread-onlyList 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
anyhook_inboxread-onlyEvery 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.
anyhook_apps_createCreate 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": [...]}).
anyhook_connectWire 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
anyhook_replaycan modifyRe-send a stored event to its destinations. Replays sit outside the monthly event quota but within a daily replay limit per plan, 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.
anyhook_undeliveredread-onlyShow events for the given app that have not successfully reached any destination (failed or still retrying).
anyhook_replay_failedcan modifyRe-send every failed event for the given app slug. Useful after fixing a downstream bug to recover queued work.
anyhook_code_getread-onlyThe 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.
anyhook_code_deploycan modifySave 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. Test it with anyhook_code_test before real events arrive.
anyhook_code_testcan modifyRun 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.
anyhook_eventsread-onlyList webhook events, most recent first: id, app, type, status, attempt, destination status code, latency, timestamp. Summaries only, no request headers or body — call anyhook_inspect with an id from here to read one event's payload. Uses your AnyHook account when connected, otherwise the local in-memory store.
anyhook_inspectread-onlyFull 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.
Alternatives in Email & Messaging
Compare →
Together AI MCP by usefulapiB
Run Together AI chat, embeddings and images; manage fine-tunes, batches and endpoints.
Squadcast MCP by usefulapiB
Read incidents, services, teams, on-call schedules; acknowledge, resolve and note incidents.
Spruce Health MCP by usefulapiB
Read Spruce Health contacts, conversations, messages, phone lines and team members (read-only).
Smoobu MCP by usefulapiB
Check vacation-rental reservations, rates, availability and guest messages, and update bookings.
SimpleTexting MCP by usefulapiB
Send SMS/MMS, manage contacts, and read campaigns, messages and media on SimpleTexting.
SendGrid MCP by usefulapiB
Send email and read templates, marketing contacts, lists, stats, bounces and unsubscribes.