Openhook

Webhook, email and DNS inboxes for AI agents to capture callbacks and test integrations.

¿Debería usar esto?

Calidad y seguridad

B
Calidad de la descripción
93%
Integridad del esquema
76%
Calidad de los nombres
94%
Riesgo de envenenamiento
100%
Coincidencia de permisos
10%
Cumplimiento del protocolo
100%

Hallazgos (12)

  • LOWTool 'access_hosted_inbox' description lacks action verben access_hosted_inbox
  • LOWTool 'update_request' description lacks action verben update_request
  • LOWTool 'extract_links_from_request' description lacks action verben extract_links_from_request
  • LOWTool 'create_webhook' suggests web access but openWorldHint=falseen create_webhook
  • LOWTool 'configure_webhook' suggests web access but openWorldHint=falseen configure_webhook
  • LOWTool 'get_webhook_info' suggests web access but openWorldHint=falseen get_webhook_info
  • LOWTool 'get_webhook_email' suggests web access but openWorldHint=falseen get_webhook_email
  • LOWTool 'delete_webhook' suggests web access but openWorldHint=falseen delete_webhook
  • LOWTool 'rotate_webhook_token' suggests web access but openWorldHint=falseen rotate_webhook_token
  • LOWTool 'get_webhook_requests' suggests web access but openWorldHint=falseen get_webhook_requests

Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.

Costo de contexto

~3,337Tokens (definiciones de herramientas)
~860 BTamaño de respuesta típico
Impacto significativo en la atención (2.61% del contexto de 128k)

Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.

Instalar

Instalación con un clic

Agrega esto a tu archivo `claude_desktop_config.json`:

{
  "mcpServers": {
    "openhook-inbox": {
      "url": "https://openhook.dev/mcp"
    }
  }
}

Puntos de conexión remotos

https://openhook.dev/mcpstreamable-http

Qué puede hacer

Inventario de herramientas

Herramientas (29)

🟢 Solo lectura🟡 Escritura🔴 Eliminación⚪ Desconocido
🟢server_status

Inspect native storage, retention, and enabled capture transports.

Esquema de entrada

{
  "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.

Esquema de entrada

{
  "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.

Esquema de entrada

{
  "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.

Esquema de entrada

{
  "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.

Esquema de entrada

{
  "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.

Esquema de entrada

{
  "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.

Esquema de entrada

{
  "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.

Esquema de entrada

{
  "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.

Esquema de entrada

{
  "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.

Esquema de entrada

{
  "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.

Esquema de entrada

{
  "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.

Esquema de entrada

{
  "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.

Esquema de entrada

{
  "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.

Esquema de entrada

{
  "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.

Esquema de entrada

{
  "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.

Esquema de entrada

{
  "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.

Esquema de entrada

{
  "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.

Esquema de entrada

{
  "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.

Esquema de entrada

{
  "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.

Esquema de entrada

{
  "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.

Esquema de entrada

{
  "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.

Esquema de entrada

{
  "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.

Esquema de entrada

{
  "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.

Esquema de entrada

{
  "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.

Esquema de entrada

{
  "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.

Esquema de entrada

{
  "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.

Esquema de entrada

{
  "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.

Esquema de entrada

{
  "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.

Esquema de entrada

{
  "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"
}

Comunidad

Califica este servidor

Evidencia

Observaciones recientes

verificadoversión no registrada29 herramientas