Openhook
Webhook, email and DNS inboxes for AI agents to capture callbacks and test integrations.
我该使用它吗
质量与安全性
发现(12)
- LOW在 access_hosted_inbox 中
- LOW在 update_request 中
- LOW在 extract_links_from_request 中
- LOW在 create_webhook 中
- LOW在 configure_webhook 中
- LOW在 get_webhook_info 中
- LOW在 get_webhook_email 中
- LOW在 delete_webhook 中
- LOW在 rotate_webhook_token 中
- LOW在 get_webhook_requests 中
基于对工具定义和协议合规性的自动分析。
上下文开销
这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 token 数。数值越高,可用于其他任务的注意力就越少。
安装
一键安装
将以下内容添加到你的 `claude_desktop_config.json` 文件中:
{
"mcpServers": {
"openhook-inbox": {
"url": "https://openhook.dev/mcp"
}
}
}远程端点
https://openhook.dev/mcpstreamable-http它能做什么
工具清单
工具(29)
🟢server_status
Inspect native storage, retention, and enabled capture transports.
输入模式
{
"type": "object",
"properties": {},
"title": "server_statusArguments"
}🟡create_webhook(expiry, name, account_key)
Create an inbox. Save its private token; share only public capture addresses. A hosted Pro account_key creates a persistent owned inbox.
输入模式
{
"type": "object",
"properties": {
"expiry": {
"default": 604800,
"title": "Expiry",
"type": "integer"
},
"name": {
"default": "",
"title": "Name",
"type": "string"
},
"account_key": {
"default": "",
"title": "Account Key",
"type": "string"
}
},
"title": "create_webhookArguments"
}🟢get_hosted_inboxes(account_key)
Hosted only: list your persistent inboxes and usage using a private account agent key.
输入模式
{
"type": "object",
"properties": {
"account_key": {
"title": "Account Key",
"type": "string"
}
},
"required": [
"account_key"
],
"title": "get_hosted_inboxesArguments"
}⚪access_hosted_inbox(account_key, inbox_id)
Hosted only: issue a private inbox token for an inbox you own. Keep the returned token private.
输入模式
{
"type": "object",
"properties": {
"account_key": {
"title": "Account Key",
"type": "string"
},
"inbox_id": {
"title": "Inbox Id",
"type": "string"
}
},
"required": [
"account_key",
"inbox_id"
],
"title": "access_hosted_inboxArguments"
}🟡configure_webhook(webhook_token, default_status, default_content, default_content_type, cors, ...)
Set HTTP responses and optional SHA256 HMAC verification, preserving unspecified fields.
输入模式
{
"type": "object",
"properties": {
"webhook_token": {
"title": "Webhook Token",
"type": "string"
},
"default_status": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Default Status"
},
"default_content": {
"anyOf": [
{
"type": "string"
},
{
"additionalProperties": true,
"type": "object"
},
{
"items": {},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Default Content"
},
"default_content_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Default Content Type"
},
"cors": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"title": "Cors"
},
"verification_secret": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Verification Secret"
},
"signature_provider": {
"anyOf": [
{
"enum": [
"generic",
"github",
"stripe",
"linear"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Signature Provider"
}
},
"required": [
"webhook_token"
],
"title": "configure_webhookArguments"
}🟢get_webhook_info(webhook_token)
Read addresses, expiry, response settings, and retained event count.
输入模式
{
"type": "object",
"properties": {
"webhook_token": {
"title": "Webhook Token",
"type": "string"
}
},
"required": [
"webhook_token"
],
"title": "get_webhook_infoArguments"
}🟢get_webhook_email(webhook_token)
Read the email address, available when this deployment runs SMTP.
输入模式
{
"type": "object",
"properties": {
"webhook_token": {
"title": "Webhook Token",
"type": "string"
}
},
"required": [
"webhook_token"
],
"title": "get_webhook_emailArguments"
}🟡register_github_webhook(access_token, repository, events, account_key)
Create a signed GitHub repository subscription and native inbox. Requires webhook-write permission.
输入模式
{
"type": "object",
"properties": {
"access_token": {
"title": "Access Token",
"type": "string"
},
"repository": {
"title": "Repository",
"type": "string"
},
"events": {
"items": {
"type": "string"
},
"title": "Events",
"type": "array"
},
"account_key": {
"default": "",
"title": "Account Key",
"type": "string"
}
},
"required": [
"access_token",
"repository",
"events"
],
"title": "register_github_webhookArguments"
}🟡register_stripe_webhook(access_token, events, account_key)
Create a signed Stripe webhook endpoint and native inbox. Provider credentials are not stored.
输入模式
{
"type": "object",
"properties": {
"access_token": {
"title": "Access Token",
"type": "string"
},
"events": {
"items": {
"type": "string"
},
"title": "Events",
"type": "array"
},
"account_key": {
"default": "",
"title": "Account Key",
"type": "string"
}
},
"required": [
"access_token",
"events"
],
"title": "register_stripe_webhookArguments"
}🟡register_linear_webhook(access_token, resource_types, team_id, account_key)
Create a signed Linear subscription and native inbox. Requires admin scope; optional team filter.
输入模式
{
"type": "object",
"properties": {
"access_token": {
"title": "Access Token",
"type": "string"
},
"resource_types": {
"items": {
"type": "string"
},
"title": "Resource Types",
"type": "array"
},
"team_id": {
"default": "",
"title": "Team Id",
"type": "string"
},
"account_key": {
"default": "",
"title": "Account Key",
"type": "string"
}
},
"required": [
"access_token",
"resource_types"
],
"title": "register_linear_webhookArguments"
}🔴unregister_webhook(webhook_token, access_token)
Remove the registered provider subscription and permanently delete its native inbox and events.
输入模式
{
"type": "object",
"properties": {
"webhook_token": {
"title": "Webhook Token",
"type": "string"
},
"access_token": {
"title": "Access Token",
"type": "string"
}
},
"required": [
"webhook_token",
"access_token"
],
"title": "unregister_webhookArguments"
}🔴delete_webhook(webhook_token)
Permanently delete this inbox and its stored events.
输入模式
{
"type": "object",
"properties": {
"webhook_token": {
"title": "Webhook Token",
"type": "string"
}
},
"required": [
"webhook_token"
],
"title": "delete_webhookArguments"
}🔴rotate_webhook_token(webhook_token)
Revoke the old private token and return a new one; capture addresses stay unchanged.
输入模式
{
"type": "object",
"properties": {
"webhook_token": {
"title": "Webhook Token",
"type": "string"
}
},
"required": [
"webhook_token"
],
"title": "rotate_webhook_tokenArguments"
}🟢get_webhook_requests(webhook_token, limit, page, since, request_type)
Read events with pagination or a durable sequence cursor.
输入模式
{
"type": "object",
"properties": {
"webhook_token": {
"title": "Webhook Token",
"type": "string"
},
"limit": {
"default": 50,
"title": "Limit",
"type": "integer"
},
"page": {
"default": 1,
"title": "Page",
"type": "integer"
},
"since": {
"default": 0,
"title": "Since",
"type": "integer"
},
"request_type": {
"anyOf": [
{
"enum": [
"web",
"email",
"dns"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Request Type"
}
},
"required": [
"webhook_token"
],
"title": "get_webhook_requestsArguments"
}🟢get_webhook_activity(webhook_token, since, limit)
Read durable receipt and mutation history with a cursor. Bodies and secrets are excluded.
输入模式
{
"type": "object",
"properties": {
"webhook_token": {
"title": "Webhook Token",
"type": "string"
},
"since": {
"default": 0,
"title": "Since",
"type": "integer"
},
"limit": {
"default": 100,
"title": "Limit",
"type": "integer"
}
},
"required": [
"webhook_token"
],
"title": "get_webhook_activityArguments"
}🟢search_requests(webhook_token, query, request_type, limit, page)
Search captured bodies, URLs, and headers for a literal substring.
输入模式
{
"type": "object",
"properties": {
"webhook_token": {
"title": "Webhook Token",
"type": "string"
},
"query": {
"title": "Query",
"type": "string"
},
"request_type": {
"anyOf": [
{
"enum": [
"web",
"email",
"dns"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Request Type"
},
"limit": {
"default": 50,
"title": "Limit",
"type": "integer"
},
"page": {
"default": 1,
"title": "Page",
"type": "integer"
}
},
"required": [
"webhook_token",
"query"
],
"title": "search_requestsArguments"
}🟢get_request(webhook_token, request_id)
Read a complete event; omit request_id to inspect the newest one.
输入模式
{
"type": "object",
"properties": {
"webhook_token": {
"title": "Webhook Token",
"type": "string"
},
"request_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Request Id"
}
},
"required": [
"webhook_token"
],
"title": "get_requestArguments"
}🟡update_request(webhook_token, request_id, note)
Annotate an event without changing its original captured body.
输入模式
{
"type": "object",
"properties": {
"webhook_token": {
"title": "Webhook Token",
"type": "string"
},
"request_id": {
"title": "Request Id",
"type": "string"
},
"note": {
"title": "Note",
"type": "string"
}
},
"required": [
"webhook_token",
"request_id",
"note"
],
"title": "update_requestArguments"
}🟢download_request_file(webhook_token, request_id)
Retrieve exact captured bytes as base64, including binary bodies or raw MIME.
输入模式
{
"type": "object",
"properties": {
"webhook_token": {
"title": "Webhook Token",
"type": "string"
},
"request_id": {
"title": "Request Id",
"type": "string"
}
},
"required": [
"webhook_token",
"request_id"
],
"title": "download_request_fileArguments"
}🔴delete_request(webhook_token, request_id)
Permanently delete one event belonging to this inbox.
输入模式
{
"type": "object",
"properties": {
"webhook_token": {
"title": "Webhook Token",
"type": "string"
},
"request_id": {
"title": "Request Id",
"type": "string"
}
},
"required": [
"webhook_token",
"request_id"
],
"title": "delete_requestArguments"
}🔴delete_all_requests(webhook_token)
Clear stored events, keeping the inbox's addresses and settings.
输入模式
{
"type": "object",
"properties": {
"webhook_token": {
"title": "Webhook Token",
"type": "string"
}
},
"required": [
"webhook_token"
],
"title": "delete_all_requestsArguments"
}🟢export_webhook_data(webhook_token, format, since)
Export a bounded page of full events; resume with next_since. Browser export streams the entire inbox.
输入模式
{
"type": "object",
"properties": {
"webhook_token": {
"title": "Webhook Token",
"type": "string"
},
"format": {
"default": "json",
"enum": [
"json",
"csv"
],
"title": "Format",
"type": "string"
},
"since": {
"default": 0,
"title": "Since",
"type": "integer"
}
},
"required": [
"webhook_token"
],
"title": "export_webhook_dataArguments"
}🟢wait_for_request(webhook_token, timeout_seconds, request_type, since, return_existing)
Wait up to 120 seconds; pass next_since when reconnecting to avoid missing events.
输入模式
{
"type": "object",
"properties": {
"webhook_token": {
"title": "Webhook Token",
"type": "string"
},
"timeout_seconds": {
"default": 60,
"title": "Timeout Seconds",
"type": "number"
},
"request_type": {
"anyOf": [
{
"enum": [
"web",
"email",
"dns"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Request Type"
},
"since": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Since"
},
"return_existing": {
"default": false,
"title": "Return Existing",
"type": "boolean"
}
},
"required": [
"webhook_token"
],
"title": "wait_for_requestArguments"
}🟢wait_for_email(webhook_token, timeout_seconds, since, return_existing)
Wait for an email received by Openhook's SMTP listener.
输入模式
{
"type": "object",
"properties": {
"webhook_token": {
"title": "Webhook Token",
"type": "string"
},
"timeout_seconds": {
"default": 60,
"title": "Timeout Seconds",
"type": "number"
},
"since": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Since"
},
"return_existing": {
"default": false,
"title": "Return Existing",
"type": "boolean"
}
},
"required": [
"webhook_token"
],
"title": "wait_for_emailArguments"
}🟡send_requests(webhook_token, payloads)
Create up to ten marked test HTTP events in this inbox.
输入模式
{
"type": "object",
"properties": {
"webhook_token": {
"title": "Webhook Token",
"type": "string"
},
"payloads": {
"items": {
"additionalProperties": true,
"type": "object"
},
"title": "Payloads",
"type": "array"
}
},
"required": [
"webhook_token",
"payloads"
],
"title": "send_requestsArguments"
}🟢extract_links_from_request(webhook_token, request_id)
Extract HTTP links and verification codes without visiting the URLs.
输入模式
{
"type": "object",
"properties": {
"webhook_token": {
"title": "Webhook Token",
"type": "string"
},
"request_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Request Id"
}
},
"required": [
"webhook_token"
],
"title": "extract_links_from_requestArguments"
}🟢generate_oob_payloads(webhook_token)
Read callback addresses for authorized out-of-band testing.
输入模式
{
"type": "object",
"properties": {
"webhook_token": {
"title": "Webhook Token",
"type": "string"
}
},
"required": [
"webhook_token"
],
"title": "generate_oob_payloadsArguments"
}🟢check_for_callbacks(webhook_token, since)
Check for callbacks newer than a sequence cursor without waiting.
输入模式
{
"type": "object",
"properties": {
"webhook_token": {
"title": "Webhook Token",
"type": "string"
},
"since": {
"default": 0,
"title": "Since",
"type": "integer"
}
},
"required": [
"webhook_token"
],
"title": "check_for_callbacksArguments"
}⚪respond_to_next_request(webhook_token, content, status, content_type, timeout_seconds)
Respond to the next request using ?openhook_wait=1, within its 20-second response window.
输入模式
{
"type": "object",
"properties": {
"webhook_token": {
"title": "Webhook Token",
"type": "string"
},
"content": {
"title": "Content",
"type": "string"
},
"status": {
"default": 200,
"title": "Status",
"type": "integer"
},
"content_type": {
"default": "text/plain",
"title": "Content Type",
"type": "string"
},
"timeout_seconds": {
"default": 60,
"title": "Timeout Seconds",
"type": "number"
}
},
"required": [
"webhook_token",
"content"
],
"title": "respond_to_next_requestArguments"
}社区
证据