Webhook.site MCP Server
PYPI · WEBHOOK-MCP-SERVER
Capture HTTP, email, and DNS callbacks with webhook.site from MCP clients.
Available components
Last scanned (1 hour ago)
Scores higher than 73% of PyPI servers
Category Security
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security50
- Malware scan not yet available for this package.Unverified
- No known CVEs affecting this package version or its production dependencies.Pass
- Runs hatchling.build at install time, a recognised build step with no custom scripting around it. View diagnostics → Pass
- 2 of 36 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency97
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Cryptographically verified build provenance (signed, bound to zebbern/webhook-mcp-server). View diagnostics → Pass
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 49 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability62
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 4398 tokens (~141/item across 31 items; 31 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
- No destabilizing schema changes in the last 30 days.Pass
Tool Coverage75
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 11% of tool parameters carry a description.Partial
- Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- All 4 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 31 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a current MCP spec version (2026-07-28).Pass
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 20 Oct 26 −15
- Malware scan: pass → unverified ▼ security
- 19 Oct 26 +15
- Malware scan: unverified → pass ▲ security
- 18 Oct 26 −14
- Malware scan: pass → unverified ▼ security
- Stability: 0.97 → pass security
- 17 Oct 26 +15
- Malware scan: unverified → pass ▲ security
- 16 Oct 26 −14
- Malware scan: pass → unverified ▼ security
- 14 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.
- 12 Oct 26 −1
No change was recorded against any check on this day. Stability & Change Management went from 87 to 80.
- 7 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 23 Oct 2026 · Analysed pypi/webhook-mcp-server@3.0.0
Provenance Verified
A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.
| Result | Verified |
|---|---|
| Ecosystem | pypi |
| Reason | Verified |
| Discovered via | Registry attestation endpoint |
| Source repo | zebbern/webhook-mcp-server |
| Certificate issuer | https://token.actions.githubusercontent.com |
| Certificate SAN | https://github.com/zebbern/webhook-mcp-server/.github/workflows/publish.yml@refs/tags/v3.0.0 |
| Rekor log index | 2704780577 |
| Predicate type | PyPI publish attestation https://docs.pypi.org/attestations/publish/v1 |
| Subject digest | sha256:a883d904344ee0882f81e9961f9fc5158e6f07d260238cc4aa00fdf4d802b0bd |
Background: How many MCP packages publish verified provenance →
Install scripts 1 script
| Hook | Tier | Command |
|---|---|---|
| build_backend | allowlisted | hatchling.build |
Background: Why install scripts are a supply-chain risk →
Dependencies 36 packages
| Packages resolved | 36 |
|---|---|
| Stale | 1 |
| No linked repository | 1 |
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
check_for_callbacks ~97
See if SSRF, XSS, or canary callbacks arrived in the last N minutes. Use after generate_oob_payloads. For a website verification email, use wait_for_email.
| Name | Type | Req | Description |
|---|---|---|---|
| identifier | – | – | – |
| since_minutes | integer | – | – |
| webhook_token | string | yes | Webhook UUID or alias from create_webhook / configure_webhook; a webhook.site URL or {token}@emailhook.site address works too |
Structured output declared, but exposes no named fields.
No examples provided.
configure_webhook ~241
Create a webhook with custom settings, or update one (pass webhook_token). Use when the endpoint should pretend to be an API (status, body, content type, delay up to 30s, CORS), needs an alias, expiry (seconds), a request_limit (0 stores nothing), listen (seconds to wait for update_request response), actions on/off, clone_from another token, a group_id, or a description (label shown in the Control Panel). default_content can be a JSON array of DNS records ([{"type":"a","value":"..."}]) to answer DNSHook lookups. Updates keep every setting you do not mention; alias="" removes the alias. For a plain sign-up inbox use create_webhook.
| Name | Type | Req | Description |
|---|---|---|---|
| actions | – | – | – |
| alias | – | – | – |
| clone_from | – | – | – |
| cors | – | – | – |
| default_content | – | – | – |
| default_content_type | – | – | – |
| default_status | – | – | – |
| description | – | – | – |
| expiry | – | – | – |
| group_id | – | – | – |
| listen | – | – | – |
| request_limit | – | – | – |
| timeout | – | – | – |
| webhook_token | – | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
create_webhook ~144
Create a disposable inbox to sign up on a website: HTTP URL, temp email, DNS. Use this first when the user wants to sign up, receive a verification / magic-link / password-reset email, catch a webhook callback, or get a one-off URL. Returns token, url, email ({token}@emailhook.site), and dns. Next: give the email or URL to the site, then wait_for_email, then follow_email_link or use the OTP. With an API key the URL is permanent (premium) unless WEBHOOK_SITE_DEFAULT_EXPIRY is set; use configure_webhook for custom responses, alias, expiry or request_limit.
Input schema present but exposes no named parameters.
Structured output declared, but exposes no named fields.
No examples provided.
delete_all_requests ~106
Clear captured events on a webhook, optionally by date or search query. Use to reset an inbox before a new sign-up or test run. date_to='now-7d' deletes everything older than a week.
| Name | Type | Req | Description |
|---|---|---|---|
| date_from | – | – | – |
| date_to | – | – | – |
| query | – | – | – |
| webhook_token | string | yes | Webhook UUID or alias from create_webhook / configure_webhook; a webhook.site URL or {token}@emailhook.site address works too |
Structured output declared, but exposes no named fields.
No examples provided.
delete_request ~66
Delete one captured HTTP, email, or DNS event by request id.
| Name | Type | Req | Description |
|---|---|---|---|
| request_id | string | yes | – |
| webhook_token | string | yes | Webhook UUID or alias from create_webhook / configure_webhook; a webhook.site URL or {token}@emailhook.site address works too |
Structured output declared, but exposes no named fields.
No examples provided.
delete_webhook ~72
Permanently delete a webhook and every captured request/email. Use when the user is done with a temp inbox or wants to clean up.
| Name | Type | Req | Description |
|---|---|---|---|
| webhook_token | string | yes | Webhook UUID or alias from create_webhook / configure_webhook; a webhook.site URL or {token}@emailhook.site address works too |
Structured output declared, but exposes no named fields.
No examples provided.
download_request_file ~98
Download an uploaded file or email attachment (base64) by its file_id. file_id comes from the attachments list on a request or email.
| Name | Type | Req | Description |
|---|---|---|---|
| file_id | string | yes | – |
| max_bytes | integer | – | – |
| request_id | string | yes | – |
| webhook_token | string | yes | Webhook UUID or alias from create_webhook / configure_webhook; a webhook.site URL or {token}@emailhook.site address works too |
Structured output declared, but exposes no named fields.
No examples provided.
export_webhook_data ~147
Full dump of captured events with HTML and untruncated bodies, as JSON or CSV. Use when list/wait tools omitted HTML or truncated a body. json pages through up to limit events; csv returns the account's CSV export (paid plans, 3 calls per minute). Filters match search_requests.
| Name | Type | Req | Description |
|---|---|---|---|
| date_from | – | – | – |
| date_to | – | – | – |
| format | string | – | – |
| limit | integer | – | – |
| query | – | – | – |
| sorting | string | – | – |
| webhook_token | string | yes | Webhook UUID or alias from create_webhook / configure_webhook; a webhook.site URL or {token}@emailhook.site address works too |
Structured output declared, but exposes no named fields.
No examples provided.
extract_links_from_request ~119
Pull confirm, reset, magic-link, and other URLs from a captured email or HTTP body. Use after wait_for_email or get_webhook_requests when the user needs the verification / login / password-reset link or OTP. Defaults to the latest event. wait_for_email already extracts links and codes.
| Name | Type | Req | Description |
|---|---|---|---|
| filter_domain | – | – | – |
| request_id | – | – | – |
| webhook_token | string | yes | Webhook UUID or alias from create_webhook / configure_webhook; a webhook.site URL or {token}@emailhook.site address works too |
Structured output declared, but exposes no named fields.
No examples provided.
follow_email_link ~185
Open the verify / magic-link / reset URL from a captured sign-up email. Use after wait_for_email. Opens the best-ranked auth link; pass request_id (the email's uuid) to pick a specific email, or url to open another link from that email. Only follows http(s) links already in the inbox, to public hosts unless the server's FOLLOW_EMAIL_LINK_ALLOW_HOSTS allows more. Returns status, final URL, page preview, the ranked auth_links, and blocked_redirect if a redirect was refused after the link itself succeeded. For OTP codes, read verification_codes from wait_for_email.
| Name | Type | Req | Description |
|---|---|---|---|
| request_id | – | – | – |
| url | – | – | – |
| webhook_token | string | yes | Webhook UUID or alias from create_webhook / configure_webhook; a webhook.site URL or {token}@emailhook.site address works too |
Structured output declared, but exposes no named fields.
No examples provided.
generate_oob_payloads ~194
Build authorized out-of-band payloads that ping this webhook: SSRF URLs, XSS callbacks, or canary tokens. Use only on systems you are allowed to test — not for sign-up email. kind='ssrf' (include_dns/include_ip), 'xss' (include_cookies/include_dom), 'canary' (canary_type url|dns|email: a tripwire, not an inbox). Confirm hits with check_for_callbacks.
| Name | Type | Req | Description |
|---|---|---|---|
| canary_type | string | – | – |
| identifier | – | – | – |
| include_cookies | boolean | – | – |
| include_dns | boolean | – | – |
| include_dom | boolean | – | – |
| include_ip | boolean | – | – |
| kind | string | yes | – |
| webhook_token | string | yes | Webhook UUID or alias from create_webhook / configure_webhook; a webhook.site URL or {token}@emailhook.site address works too |
Structured output declared, but exposes no named fields.
No examples provided.
get_request ~110
Return one captured event: the newest by default, or request_id. Set raw=true to also get the untouched body (raw_body). Use for a quick peek; prefer wait_for_email after a sign-up, or get_webhook_requests to see history.
| Name | Type | Req | Description |
|---|---|---|---|
| raw | boolean | – | – |
| request_id | – | – | – |
| webhook_token | string | yes | Webhook UUID or alias from create_webhook / configure_webhook; a webhook.site URL or {token}@emailhook.site address works too |
Structured output declared, but exposes no named fields.
No examples provided.
get_webhook_email ~118
Return the temp inbox to sign up, verify, magic-link, or reset a password. Address is {token}@emailhook.site. Use when the user already has a token. If they do not, call create_webhook first — it also returns email. After the site sends mail, call wait_for_email.
| Name | Type | Req | Description |
|---|---|---|---|
| validate | boolean | – | – |
| webhook_token | string | yes | Webhook UUID or alias from create_webhook / configure_webhook; a webhook.site URL or {token}@emailhook.site address works too |
Structured output declared, but exposes no named fields.
No examples provided.
get_webhook_info ~135
Show a webhook's settings, expiry, request count and every address. Returns url, subdomain_url, force_status_url (append a status code to make the URL answer with it), api_url, email and dns for the token, plus premium / expires_at / alias / request_limit. Use when the user asks if a token is still valid, how it is configured, or needs its callback URL or DNSHook domain.
| Name | Type | Req | Description |
|---|---|---|---|
| webhook_token | string | yes | Webhook UUID or alias from create_webhook / configure_webhook; a webhook.site URL or {token}@emailhook.site address works too |
Structured output declared, but exposes no named fields.
No examples provided.
get_webhook_requests ~185
List captured HTTP, email, or DNS events for a webhook, one page at a time. Use to inspect what already arrived. Bodies are truncated and HTML is omitted; use export_webhook_data for the full dump. For the newest item use get_request. To wait for something new use wait_for_request or wait_for_email. Filter emails with request_type='email'. Returns pagination (is_last_page, total) and next_since: pass it back as since to get only what arrived after that call (no paging, no duplicates).
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | – |
| page | integer | – | – |
| request_type | – | – | – |
| since | – | – | – |
| webhook_token | string | yes | Webhook UUID or alias from create_webhook / configure_webhook; a webhook.site URL or {token}@emailhook.site address works too |
Structured output declared, but exposes no named fields.
No examples provided.
list_webhooks ~94
List the webhooks (URLs / inboxes) in the account. Needs WEBHOOK_SITE_API_KEY. Use to find an existing token, alias, request count or latest_request_at before creating a new one. Returns pagination.
| Name | Type | Req | Description |
|---|---|---|---|
| max_items | integer | – | – |
| order_by | string | – | – |
| order_direction | string | – | – |
| page | integer | – | – |
| per_page | integer | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
manage_custom_actions ~318
Manage the Custom Actions webhook.site runs on every request or email a token receives. action: types (reference of all 63 action types; pass type= for one type's parameters, live-verified status and example) | variables ($request.*$ variables and modifiers) | script_reference (every WebhookScript function with its signature, for type=script) | list | create | update | delete | test | execute. create/update take type (modify_response, http, script, javascript, send_email, extract_jsonpath, conditions, rate_limit, log, set_variable, mock, ...) with parameters, order, and optionally name (label), queue/delay/ condition (id of a conditions action) and queue_id (a Queue Profile from manage_queues). test dry-runs the given action against request_id without changing saved actions; execute re-runs all saved actions on request_id. Actions also fire on incoming emails, so guard email-sending actions with a condition on $request.type$. Never point http/send_request at a webhook.site URL (recursion is disabled).
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | – |
| action_id | – | – | – |
| condition | – | – | – |
| delay | – | – | – |
| disabled | – | – | – |
| error_notifications | boolean | – | – |
| name | – | – | – |
| order | – | – | – |
| parameters | – | – | – |
| queue | – | – | – |
| queue_id | – | – | – |
| request_id | – | – | – |
| search | – | – | – |
| type | – | – | – |
| webhook_token | – | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
manage_databases ~111
Manage webhook.site Databases and run SQL against them (needs API key). action: list | create | update | delete | query. create needs name and plan. query runs SQL with optional positional (?) or named (:name) params and returns up to 1000 rows.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | – |
| database_id | – | – | – |
| group_id | – | – | – |
| name | – | – | – |
| page | integer | – | – |
| params | – | – | – |
| plan | – | – | – |
| query | – | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
manage_global_variables ~78
Manage Global Variables shared by all URLs, usable as $name$ in Custom Actions and Schedules. action: list | create | update | delete. Needs API key.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | – |
| name | – | – | – |
| page | integer | – | – |
| search | – | – | – |
| value | – | – | – |
| variable_id | – | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
manage_groups ~73
Manage Groups that organise the account's webhooks (needs API key). action: list | create | update | delete. Assign a token to a group with configure_webhook(group_id=...).
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | – |
| group_id | – | – | – |
| name | – | – | – |
| page | integer | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
manage_queues ~136
Manage Queue Profiles that throttle queued Custom Actions (needs API key). action: list | create | update | delete. A profile allows `amount` jobs every `duration` seconds, drops jobs not run within `expiry` seconds, and waits `delay` seconds before the first run. Attach it to an action with manage_custom_actions(queue=true, queue_id=...).
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | – |
| amount | – | – | – |
| delay | – | – | – |
| duration | – | – | – |
| expiry | – | – | – |
| group_id | – | – | – |
| name | – | – | – |
| page | integer | – | – |
| queue_id | – | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
manage_schedules ~255
Manage Schedules: webhook.site calls request_url on an interval (needs API key). action: list | get | create | update | delete | run | logs. interval is monthly, weekly, daily, hourly, 10-minute, 5-minute, 1-minute or cron (then set cron, e.g. '*/5 * * * *'). request_headers are newline separated. require_* raise an error notification when the response does not match; require_cert_expiry alerts when the HTTPS certificate expires in fewer than that many days. Use for uptime checks or periodic cleanup calls (e.g. DELETE .../token/{id}/request?date_to=now-7d with Api-Key).
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | – |
| cron | – | – | – |
| interval | – | – | – |
| name | – | – | – |
| page | integer | – | – |
| request_body | – | – | – |
| request_headers | – | – | – |
| request_method | – | – | – |
| request_url | – | – | – |
| require_body | – | – | – |
| require_cert_expiry | – | – | – |
| require_status_max | – | – | – |
| require_status_min | – | – | – |
| schedule_id | – | – | – |
| sorting | string | – | – |
| timeout | – | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
manage_templates ~108
Manage Templates: reusable sets of Custom Actions plus predefined variables (needs API key). action: list | create | update | delete. actions is a list of action objects (type, order, parameters...); variables is a list of {name, value}. Include a template in a token with a 'template' action.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | – |
| actions | – | – | – |
| name | – | – | – |
| page | integer | – | – |
| template_id | – | – | – |
| variables | – | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
manage_users ~92
Manage team users on an Enterprise account (needs an administrator API key). action: list | invite | update | delete. user_type_id: 100 admin, 200 member, 300 viewer.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | – |
| – | – | – | |
| name | – | – | – |
| page | integer | – | – |
| role_id | – | – | – |
| user_id | – | – | – |
| user_type_id | – | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
respond_to_next_request ~186
Hold the next request that hits the webhook and answer it with your own status, headers and body. Turns the URL into a live mock for one request: the caller waits (up to listen_seconds, max 10) while this tool sets the reply the moment the request arrives over the socket. Use to test a client's retry / error handling ("answer the next call with 500") or to fake an API response on demand; returns the captured request. For a fixed canned reply use configure_webhook instead.
| Name | Type | Req | Description |
|---|---|---|---|
| content | – | – | – |
| headers | – | – | – |
| listen_seconds | integer | – | – |
| status | integer | – | – |
| timeout_seconds | integer | – | – |
| webhook_token | string | yes | Webhook UUID or alias from create_webhook / configure_webhook; a webhook.site URL or {token}@emailhook.site address works too |
Structured output declared, but exposes no named fields.
No examples provided.
search_requests ~234
Search captured events by method, body text, headers, type, or date. Use when the user asks to find POSTs, a keyword, or only emails/DNS. query uses webhook.site search syntax: 'method:POST', 'content:verify', 'headers.user-agent:curl', 'type:web AND method:POST', '-method:GET' (exclude), '_exists_:custom_action_errors', 'note:todo*', 'country_code:DE', 'created_at:[now-1h TO now]'. Dates are 'yyyy-MM-dd HH:mm:ss' or expressions like now-7d. Returns pagination and next_since (pass back as since for only newer matches).
| Name | Type | Req | Description |
|---|---|---|---|
| date_from | – | – | – |
| date_to | – | – | – |
| limit | integer | – | – |
| page | integer | – | – |
| query | – | – | – |
| request_type | – | – | – |
| since | – | – | – |
| sorting | string | – | – |
| webhook_token | string | yes | Webhook UUID or alias from create_webhook / configure_webhook; a webhook.site URL or {token}@emailhook.site address works too |
Structured output declared, but exposes no named fields.
No examples provided.
send_requests ~136
Send one JSON body (data) or several (payloads) to the webhook URL to test capture. Use when the user wants to send sample payloads or load-test, not when they are waiting for a real site or email. Any HTTP method; delay_ms spaces out multiple payloads.
| Name | Type | Req | Description |
|---|---|---|---|
| data | – | – | – |
| delay_ms | integer | – | – |
| headers | – | – | – |
| method | string | – | – |
| payloads | – | – | – |
| webhook_token | string | yes | Webhook UUID or alias from create_webhook / configure_webhook; a webhook.site URL or {token}@emailhook.site address works too |
Structured output declared, but exposes no named fields.
No examples provided.
server_status ~59
Check this server's setup: API key, account reachability, plan, real-time socket, env config. Call first when a tool fails unexpectedly or before relying on account features. Lists problems in plain words.
| Name | Type | Req | Description |
|---|---|---|---|
| check_socket | boolean | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
update_request ~149
Attach a note to a captured request, or set its dynamic response. response_* call the Set Response API; it only reaches the caller while the request is still held (token listen > 0 with a socket listener; see respond_to_next_request, which does the whole thing). For canned replies use configure_webhook or a modify_response custom action instead.
| Name | Type | Req | Description |
|---|---|---|---|
| note | – | – | – |
| request_id | string | yes | – |
| response_content | – | – | – |
| response_headers | – | – | – |
| response_status | – | – | – |
| webhook_token | string | yes | Webhook UUID or alias from create_webhook / configure_webhook; a webhook.site URL or {token}@emailhook.site address works too |
Structured output declared, but exposes no named fields.
No examples provided.
wait_for_email ~194
Wait for a sign-up, verify, magic-link, or password-reset email (1-120s). Call this after the user (or you) submitted {token}@emailhook.site on a website. Returns subject, sender, spam/DKIM checks, a truncated text preview, attachments, extracted confirm / reset / login URLs, and verification_codes (OTP). Next: follow_email_link, or type the code. HTML is omitted; use export_webhook_data for the full message. Set return_existing=true if the email already arrived. If there is no token yet, create_webhook first.
| Name | Type | Req | Description |
|---|---|---|---|
| extract_links | boolean | – | – |
| return_existing | boolean | – | – |
| timeout_seconds | integer | – | – |
| webhook_token | string | yes | Webhook UUID or alias from create_webhook / configure_webhook; a webhook.site URL or {token}@emailhook.site address works too |
Structured output declared, but exposes no named fields.
No examples provided.
wait_for_request ~158
Wait until a new HTTP (or DNS) callback hits the webhook (1-120s). Use after giving a site the webhook URL. Listens on webhook.site's socket and falls back to polling. Bodies are truncated and HTML is omitted; use export_webhook_data for the full dump. For verification / magic-link / password-reset mail, use wait_for_email instead. Set return_existing=true if the request may already be there.
| Name | Type | Req | Description |
|---|---|---|---|
| request_type | – | – | – |
| return_existing | boolean | – | – |
| timeout_seconds | integer | – | – |
| webhook_token | string | yes | Webhook UUID or alias from create_webhook / configure_webhook; a webhook.site URL or {token}@emailhook.site address works too |
Structured output declared, but exposes no named fields.
No examples provided.
How do I install the Webhook.site MCP Server server?
Webhook.site MCP Server runs locally as a PyPI package, launched with uvx webhook-mcp-server. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
pypi · webhook-mcp-server
claude mcp add zebbern-webhook-mcp-server -- uvx webhook-mcp-server
What is the Webhook.site MCP Server server?
Webhook.site MCP Server is listed in the public MCP registry as io.github.zebbern/webhook-mcp-server. Capture HTTP, email, and DNS callbacks with webhook.site from MCP clients. This page covers its PyPI package (webhook-mcp-server).
Is the Webhook.site MCP Server server safe to use?
Webhook.site MCP Server scores 76 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 23 October 2026. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the Webhook.site MCP Server server expose?
Webhook.site MCP Server exposes 31 tools: server_status, create_webhook, configure_webhook, get_webhook_info, get_webhook_email, and 26 more. Their descriptions and schemas cost roughly 4,398 tokens of context every time the server is loaded.
Is the Webhook.site MCP Server server still maintained?
Webhook.site MCP Server is still listed as active in the MCP registry. We last reached this channel on 23 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the Webhook.site MCP Server server under?
Webhook.site MCP Server declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.