Webhook, email and DNS inboxes for AI agents to capture callbacks and test integrations.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Hosted only: issue a private inbox token for an inbox you own. Keep the returned token private.
The server marks this tool as destructive. Running it may delete or overwrite data on the server or in any account you connected with your headers.
Hosted only: issue a private inbox token for an inbox you own. Keep the returned token private.
| Argument | Type | Description |
|---|---|---|
| inbox_id* | string | |
| account_key* | string |
{
"type": "object",
"title": "access_hosted_inboxArguments",
"required": [
"account_key",
"inbox_id"
],
"properties": {
"inbox_id": {
"type": "string",
"title": "Inbox Id"
},
"account_key": {
"type": "string",
"title": "Account Key"
}
}
}Check for callbacks newer than a sequence cursor without waiting.
| Argument | Type | Description |
|---|---|---|
| since | integer | |
| webhook_token* | string |
{
"type": "object",
"title": "check_for_callbacksArguments",
"required": [
"webhook_token"
],
"properties": {
"since": {
"type": "integer",
"title": "Since",
"default": 0
},
"webhook_token": {
"type": "string",
"title": "Webhook Token"
}
}
}Set HTTP responses and optional SHA256 HMAC verification, preserving unspecified fields.
| Argument | Type | Description |
|---|---|---|
| cors | any | |
| webhook_token* | string | |
| default_status | any | |
| default_content | any | |
| signature_provider | any | |
| verification_secret | any | |
| default_content_type | any |
{
"type": "object",
"title": "configure_webhookArguments",
"required": [
"webhook_token"
],
"properties": {
"cors": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Cors",
"default": null
},
"webhook_token": {
"type": "string",
"title": "Webhook Token"
},
"default_status": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Default Status",
"default": null
},
"default_content": {
"anyOf": [
{
"type": "string"
},
{
"type": "object",
"additionalProperties": true
},
{
"type": "array",
"items": {}
},
{
"type": "null"
}
],
"title": "Default Content",
"default": null
},
"signature_provider": {
"anyOf": [
{
"enum": [
"generic",
"github",
"stripe",
"linear"
],
"type": "string"
},
{
"type": "null"
}
],
"title": "Signature Provider",
"default": null
},
"verification_secret": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Verification Secret",
"default": null
},
"default_content_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Default Content Type",
"default": null
}
}
}Create an inbox. Save its private token; share only public capture addresses. A hosted Pro account_key creates a persistent owned inbox.
| Argument | Type | Description |
|---|---|---|
| name | string | |
| expiry | integer | |
| account_key | string |
{
"type": "object",
"title": "create_webhookArguments",
"properties": {
"name": {
"type": "string",
"title": "Name",
"default": ""
},
"expiry": {
"type": "integer",
"title": "Expiry",
"default": 604800
},
"account_key": {
"type": "string",
"title": "Account Key",
"default": ""
}
}
}Clear stored events, keeping the inbox's addresses and settings.
| Argument | Type | Description |
|---|---|---|
| webhook_token* | string |
{
"type": "object",
"title": "delete_all_requestsArguments",
"required": [
"webhook_token"
],
"properties": {
"webhook_token": {
"type": "string",
"title": "Webhook Token"
}
}
}Permanently delete one event belonging to this inbox.
| Argument | Type | Description |
|---|---|---|
| request_id* | string | |
| webhook_token* | string |
{
"type": "object",
"title": "delete_requestArguments",
"required": [
"webhook_token",
"request_id"
],
"properties": {
"request_id": {
"type": "string",
"title": "Request Id"
},
"webhook_token": {
"type": "string",
"title": "Webhook Token"
}
}
}Permanently delete this inbox and its stored events.
| Argument | Type | Description |
|---|---|---|
| webhook_token* | string |
{
"type": "object",
"title": "delete_webhookArguments",
"required": [
"webhook_token"
],
"properties": {
"webhook_token": {
"type": "string",
"title": "Webhook Token"
}
}
}Retrieve exact captured bytes as base64, including binary bodies or raw MIME.
| Argument | Type | Description |
|---|---|---|
| request_id* | string | |
| webhook_token* | string |
{
"type": "object",
"title": "download_request_fileArguments",
"required": [
"webhook_token",
"request_id"
],
"properties": {
"request_id": {
"type": "string",
"title": "Request Id"
},
"webhook_token": {
"type": "string",
"title": "Webhook Token"
}
}
}Export a bounded page of full events; resume with next_since. Browser export streams the entire inbox.
| Argument | Type | Description |
|---|---|---|
| since | integer | |
| format | string | |
| webhook_token* | string |
{
"type": "object",
"title": "export_webhook_dataArguments",
"required": [
"webhook_token"
],
"properties": {
"since": {
"type": "integer",
"title": "Since",
"default": 0
},
"format": {
"enum": [
"json",
"csv"
],
"type": "string",
"title": "Format",
"default": "json"
},
"webhook_token": {
"type": "string",
"title": "Webhook Token"
}
}
}Extract HTTP links and verification codes without visiting the URLs.
| Argument | Type | Description |
|---|---|---|
| request_id | any | |
| webhook_token* | string |
{
"type": "object",
"title": "extract_links_from_requestArguments",
"required": [
"webhook_token"
],
"properties": {
"request_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Request Id",
"default": null
},
"webhook_token": {
"type": "string",
"title": "Webhook Token"
}
}
}Read callback addresses for authorized out-of-band testing.
| Argument | Type | Description |
|---|---|---|
| webhook_token* | string |
{
"type": "object",
"title": "generate_oob_payloadsArguments",
"required": [
"webhook_token"
],
"properties": {
"webhook_token": {
"type": "string",
"title": "Webhook Token"
}
}
}Hosted only: list your persistent inboxes and usage using a private account agent key.
| Argument | Type | Description |
|---|---|---|
| account_key* | string |
{
"type": "object",
"title": "get_hosted_inboxesArguments",
"required": [
"account_key"
],
"properties": {
"account_key": {
"type": "string",
"title": "Account Key"
}
}
}Read a complete event; omit request_id to inspect the newest one.
| Argument | Type | Description |
|---|---|---|
| request_id | any | |
| webhook_token* | string |
{
"type": "object",
"title": "get_requestArguments",
"required": [
"webhook_token"
],
"properties": {
"request_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Request Id",
"default": null
},
"webhook_token": {
"type": "string",
"title": "Webhook Token"
}
}
}Read durable receipt and mutation history with a cursor. Bodies and secrets are excluded.
| Argument | Type | Description |
|---|---|---|
| limit | integer | |
| since | integer | |
| webhook_token* | string |
{
"type": "object",
"title": "get_webhook_activityArguments",
"required": [
"webhook_token"
],
"properties": {
"limit": {
"type": "integer",
"title": "Limit",
"default": 100
},
"since": {
"type": "integer",
"title": "Since",
"default": 0
},
"webhook_token": {
"type": "string",
"title": "Webhook Token"
}
}
}Read the email address, available when this deployment runs SMTP.
| Argument | Type | Description |
|---|---|---|
| webhook_token* | string |
{
"type": "object",
"title": "get_webhook_emailArguments",
"required": [
"webhook_token"
],
"properties": {
"webhook_token": {
"type": "string",
"title": "Webhook Token"
}
}
}Read addresses, expiry, response settings, and retained event count.
| Argument | Type | Description |
|---|---|---|
| webhook_token* | string |
{
"type": "object",
"title": "get_webhook_infoArguments",
"required": [
"webhook_token"
],
"properties": {
"webhook_token": {
"type": "string",
"title": "Webhook Token"
}
}
}Read events with pagination or a durable sequence cursor.
| Argument | Type | Description |
|---|---|---|
| page | integer | |
| limit | integer | |
| since | integer | |
| request_type | any | |
| webhook_token* | string |
{
"type": "object",
"title": "get_webhook_requestsArguments",
"required": [
"webhook_token"
],
"properties": {
"page": {
"type": "integer",
"title": "Page",
"default": 1
},
"limit": {
"type": "integer",
"title": "Limit",
"default": 50
},
"since": {
"type": "integer",
"title": "Since",
"default": 0
},
"request_type": {
"anyOf": [
{
"enum": [
"web",
"email",
"dns"
],
"type": "string"
},
{
"type": "null"
}
],
"title": "Request Type",
"default": null
},
"webhook_token": {
"type": "string",
"title": "Webhook Token"
}
}
}Create a signed GitHub repository subscription and native inbox. Requires webhook-write permission.
| Argument | Type | Description |
|---|---|---|
| events* | array | |
| repository* | string | |
| account_key | string | |
| access_token* | string |
{
"type": "object",
"title": "register_github_webhookArguments",
"required": [
"access_token",
"repository",
"events"
],
"properties": {
"events": {
"type": "array",
"items": {
"type": "string"
},
"title": "Events"
},
"repository": {
"type": "string",
"title": "Repository"
},
"account_key": {
"type": "string",
"title": "Account Key",
"default": ""
},
"access_token": {
"type": "string",
"title": "Access Token"
}
}
}Create a signed Linear subscription and native inbox. Requires admin scope; optional team filter.
| Argument | Type | Description |
|---|---|---|
| team_id | string | |
| account_key | string | |
| access_token* | string | |
| resource_types* | array |
{
"type": "object",
"title": "register_linear_webhookArguments",
"required": [
"access_token",
"resource_types"
],
"properties": {
"team_id": {
"type": "string",
"title": "Team Id",
"default": ""
},
"account_key": {
"type": "string",
"title": "Account Key",
"default": ""
},
"access_token": {
"type": "string",
"title": "Access Token"
},
"resource_types": {
"type": "array",
"items": {
"type": "string"
},
"title": "Resource Types"
}
}
}Create a signed Stripe webhook endpoint and native inbox. Provider credentials are not stored.
| Argument | Type | Description |
|---|---|---|
| events* | array | |
| account_key | string | |
| access_token* | string |
{
"type": "object",
"title": "register_stripe_webhookArguments",
"required": [
"access_token",
"events"
],
"properties": {
"events": {
"type": "array",
"items": {
"type": "string"
},
"title": "Events"
},
"account_key": {
"type": "string",
"title": "Account Key",
"default": ""
},
"access_token": {
"type": "string",
"title": "Access Token"
}
}
}Respond to the next request using ?openhook_wait=1, within its 20-second response window.
| Argument | Type | Description |
|---|---|---|
| status | integer | |
| content* | string | |
| content_type | string | |
| webhook_token* | string | |
| timeout_seconds | number |
{
"type": "object",
"title": "respond_to_next_requestArguments",
"required": [
"webhook_token",
"content"
],
"properties": {
"status": {
"type": "integer",
"title": "Status",
"default": 200
},
"content": {
"type": "string",
"title": "Content"
},
"content_type": {
"type": "string",
"title": "Content Type",
"default": "text/plain"
},
"webhook_token": {
"type": "string",
"title": "Webhook Token"
},
"timeout_seconds": {
"type": "number",
"title": "Timeout Seconds",
"default": 60
}
}
}Revoke the old private token and return a new one; capture addresses stay unchanged.
| Argument | Type | Description |
|---|---|---|
| webhook_token* | string |
{
"type": "object",
"title": "rotate_webhook_tokenArguments",
"required": [
"webhook_token"
],
"properties": {
"webhook_token": {
"type": "string",
"title": "Webhook Token"
}
}
}Search captured bodies, URLs, and headers for a literal substring.
| Argument | Type | Description |
|---|---|---|
| page | integer | |
| limit | integer | |
| query* | string | |
| request_type | any | |
| webhook_token* | string |
{
"type": "object",
"title": "search_requestsArguments",
"required": [
"webhook_token",
"query"
],
"properties": {
"page": {
"type": "integer",
"title": "Page",
"default": 1
},
"limit": {
"type": "integer",
"title": "Limit",
"default": 50
},
"query": {
"type": "string",
"title": "Query"
},
"request_type": {
"anyOf": [
{
"enum": [
"web",
"email",
"dns"
],
"type": "string"
},
{
"type": "null"
}
],
"title": "Request Type",
"default": null
},
"webhook_token": {
"type": "string",
"title": "Webhook Token"
}
}
}Create up to ten marked test HTTP events in this inbox.
| Argument | Type | Description |
|---|---|---|
| payloads* | array | |
| webhook_token* | string |
{
"type": "object",
"title": "send_requestsArguments",
"required": [
"webhook_token",
"payloads"
],
"properties": {
"payloads": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
},
"title": "Payloads"
},
"webhook_token": {
"type": "string",
"title": "Webhook Token"
}
}
}Inspect native storage, retention, and enabled capture transports.
No arguments.
{
"type": "object",
"title": "server_statusArguments",
"properties": {}
}Remove the registered provider subscription and permanently delete its native inbox and events.
| Argument | Type | Description |
|---|---|---|
| access_token* | string | |
| webhook_token* | string |
{
"type": "object",
"title": "unregister_webhookArguments",
"required": [
"webhook_token",
"access_token"
],
"properties": {
"access_token": {
"type": "string",
"title": "Access Token"
},
"webhook_token": {
"type": "string",
"title": "Webhook Token"
}
}
}Annotate an event without changing its original captured body.
| Argument | Type | Description |
|---|---|---|
| note* | string | |
| request_id* | string | |
| webhook_token* | string |
{
"type": "object",
"title": "update_requestArguments",
"required": [
"webhook_token",
"request_id",
"note"
],
"properties": {
"note": {
"type": "string",
"title": "Note"
},
"request_id": {
"type": "string",
"title": "Request Id"
},
"webhook_token": {
"type": "string",
"title": "Webhook Token"
}
}
}Wait for an email received by Openhook's SMTP listener.
| Argument | Type | Description |
|---|---|---|
| since | any | |
| webhook_token* | string | |
| return_existing | boolean | |
| timeout_seconds | number |
{
"type": "object",
"title": "wait_for_emailArguments",
"required": [
"webhook_token"
],
"properties": {
"since": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Since",
"default": null
},
"webhook_token": {
"type": "string",
"title": "Webhook Token"
},
"return_existing": {
"type": "boolean",
"title": "Return Existing",
"default": false
},
"timeout_seconds": {
"type": "number",
"title": "Timeout Seconds",
"default": 60
}
}
}Wait up to 120 seconds; pass next_since when reconnecting to avoid missing events.
| Argument | Type | Description |
|---|---|---|
| since | any | |
| request_type | any | |
| webhook_token* | string | |
| return_existing | boolean | |
| timeout_seconds | number |
{
"type": "object",
"title": "wait_for_requestArguments",
"required": [
"webhook_token"
],
"properties": {
"since": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Since",
"default": null
},
"request_type": {
"anyOf": [
{
"enum": [
"web",
"email",
"dns"
],
"type": "string"
},
{
"type": "null"
}
],
"title": "Request Type",
"default": null
},
"webhook_token": {
"type": "string",
"title": "Webhook Token"
},
"return_existing": {
"type": "boolean",
"title": "Return Existing",
"default": false
},
"timeout_seconds": {
"type": "number",
"title": "Timeout Seconds",
"default": 60
}
}
}