MCP Tools Reference
Complete reference for all 123 tools exposed by the Hookbase MCP server, across both the local (stdio) and remote HTTP transports. Parameter tables are generated directly from each tool's input schema.
Tip
Every tool is scoped to the organization of the API key you authenticate with. See the MCP Server overview for setup.
Sources
hookbase_list_sources
List all webhook sources in the organization. Sources are endpoints that receive incoming webhooks.
Parameters: None
hookbase_get_source
Get detailed information about a specific webhook source, including its configuration and statistics.
| Parameter | Type | Required | Description |
|---|---|---|---|
source_id | string | Yes | The ID of the source to retrieve |
hookbase_create_source
Create a new webhook source. Sources receive incoming webhooks and can be connected to destinations via routes.
| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Display name for the source |
slug | string | Yes | URL-safe identifier (e.g., "github-webhooks") |
provider | string | No | Webhook provider for signature verification (e.g., "github", "stripe", "shopify") |
description | string | No | Optional description of the source |
reject_invalid_signatures | boolean | No | Whether to reject webhooks with invalid signatures |
rate_limit_per_minute | number | No | Maximum webhooks per minute (rate limiting) |
transient_mode | boolean | No | Enable transient mode - payloads never stored at rest (HIPAA/GDPR compliance). Disables replay and payload viewing. |
allowed_methods | string[] | No | HTTP methods this source's ingest endpoint accepts. Omit or pass [] to accept any method. GET/HEAD/DELETE carry no body, so their query string becomes the event payload. |
hookbase_update_source
Update an existing webhook source configuration.
| Parameter | Type | Required | Description |
|---|---|---|---|
source_id | string | Yes | The ID of the source to update |
name | string | No | New display name |
description | string | No | New description |
is_active | boolean | No | Enable or disable the source |
provider | string | No | Update webhook provider |
reject_invalid_signatures | boolean | No | Whether to reject invalid signatures |
rate_limit_per_minute | number | No | Maximum webhooks per minute |
transient_mode | boolean | No | Enable transient mode - payloads never stored at rest (HIPAA/GDPR compliance) |
allowed_methods | string[] | No | HTTP methods this source's ingest endpoint accepts. Omit or pass [] to accept any method. GET/HEAD/DELETE carry no body, so their query string becomes the event payload. Pass [] to revert to accepting any method. |
hookbase_delete_source
Delete a webhook source. This will also delete all associated routes.
| Parameter | Type | Required | Description |
|---|---|---|---|
source_id | string | Yes | The ID of the source to delete |
Destinations
hookbase_list_destinations
List all webhook destinations in the organization. Destinations are endpoints where webhooks are forwarded to.
Parameters: None
hookbase_get_destination
Get detailed information about a specific destination, including authentication configuration.
| Parameter | Type | Required | Description |
|---|---|---|---|
destination_id | string | Yes | The ID of the destination to retrieve |
hookbase_create_destination
Create a new webhook destination. Destinations can be HTTP endpoints or warehouse storage (S3, R2, GCS, Azure Blob).
| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Display name for the destination |
type | http | s3 | r2 | gcs | azure_blob | No | Destination type (default: http). Use warehouse types for storage destinations. |
url | string | No | The URL to forward webhooks to (required for http type) |
method | GET | POST | PUT | PATCH | DELETE | No | HTTP method (default: POST, only for http type) |
headers | object | No | Custom headers to include in requests (only for http type) |
auth_type | none | basic | bearer | api_key | custom_header | No | Authentication type (default: none, only for http type) |
auth_config | object | No | Auth configuration (username/password for basic, token for bearer, etc.) |
timeout_ms | number | No | Request timeout in milliseconds (default: 30000) |
rate_limit_per_minute | number | No | Maximum requests per minute |
config | object | No | Warehouse configuration object. For S3: {bucket, region, accessKeyId, secretAccessKey, prefix?, fileFormat?, partitionBy?}. For R2: {bucket, prefix?, fileFormat?, partitionBy?}. For GCS: {bucket, projectId, serviceAccountKey, prefix?, fileFormat?, partitionBy?}. For Azure Blob: {accountName, accountKey, containerName, prefix?, fileFormat?, partitionBy?}. |
field_mapping | object[] | No | Field mappings for warehouse destinations |
use_static_ip | boolean | No | Enable static IP delivery (Pro and Business plans) |
batch_size | number | No | Number of events to accumulate before flushing to warehouse (warehouse destinations only) |
batch_window_seconds | number | No | Max seconds to wait before flushing a batch to warehouse (warehouse destinations only) |
hookbase_update_destination
Update an existing destination configuration.
| Parameter | Type | Required | Description |
|---|---|---|---|
destination_id | string | Yes | The ID of the destination to update |
name | string | No | New display name |
url | string | No | New URL (for http type destinations) |
method | GET | POST | PUT | PATCH | DELETE | No | HTTP method |
headers | object | No | Custom headers |
auth_type | none | basic | bearer | api_key | custom_header | No | Authentication type |
auth_config | object | No | Auth configuration |
timeout_ms | number | No | Request timeout in milliseconds |
rate_limit_per_minute | number | No | Maximum requests per minute |
is_active | boolean | No | Enable or disable the destination |
config | object | No | Warehouse configuration object (for warehouse type destinations) |
field_mapping | object[] | No | Field mappings for warehouse destinations |
use_static_ip | boolean | No | Enable static IP delivery (Pro and Business plans) |
batch_size | number | No | Number of events to accumulate before flushing to warehouse (warehouse destinations only) |
batch_window_seconds | number | No | Max seconds to wait before flushing a batch to warehouse (warehouse destinations only) |
hookbase_delete_destination
Delete a destination. This will also delete all associated routes.
| Parameter | Type | Required | Description |
|---|---|---|---|
destination_id | string | Yes | The ID of the destination to delete |
hookbase_test_destination
Test connectivity to a destination by sending a test request. Returns response status and timing.
| Parameter | Type | Required | Description |
|---|---|---|---|
destination_id | string | Yes | The ID of the destination to test |
Routes
hookbase_list_routes
List all routes in the organization. Routes connect sources to destinations and define how webhooks are processed.
Parameters: None
hookbase_get_route
Get detailed information about a specific route, including filter and transform configuration.
| Parameter | Type | Required | Description |
|---|---|---|---|
route_id | string | Yes | The ID of the route to retrieve |
hookbase_create_route
Create a new route connecting a source to a destination. Optionally add filters to control which webhooks are forwarded.
| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Display name for the route |
source_id | string | Yes | ID of the source to receive webhooks from |
destination_id | string | Yes | ID of the destination to forward webhooks to |
filter_id | string | No | ID of an existing filter to apply |
filter_conditions | object | No | Inline filter conditions (alternative to filter_id) |
transform_id | string | No | ID of a transform to apply to the payload |
priority | number | No | Route priority (lower = higher priority, default: 0) |
is_active | boolean | No | Whether the route is active (default: true) |
hookbase_update_route
Update an existing route configuration.
| Parameter | Type | Required | Description |
|---|---|---|---|
route_id | string | Yes | The ID of the route to update |
name | string | No | New display name |
source_id | string | No | New source ID |
destination_id | string | No | New destination ID |
filter_id | string,null | No | Filter ID (set to null to remove) |
transform_id | string,null | No | Transform ID (set to null to remove) |
priority | number | No | Route priority |
is_active | boolean | No | Enable or disable the route |
hookbase_delete_route
Delete a route.
| Parameter | Type | Required | Description |
|---|---|---|---|
route_id | string | Yes | The ID of the route to delete |
Events
hookbase_list_events
Query webhook events with optional filters. Events represent incoming webhooks received by sources.
| Parameter | Type | Required | Description |
|---|---|---|---|
limit | number | No | Maximum number of events to return (default: 20, max: 100) |
offset | number | No | Number of events to skip for pagination |
source_id | string | No | Filter by source ID |
status | delivered | failed | pending | partial | no_routes | No | Filter by delivery status |
from_date | string | No | Filter events after this date (ISO 8601) |
to_date | string | No | Filter events before this date (ISO 8601) |
search | string | No | Search in event payload |
hookbase_get_event
Get detailed information about a specific event, including the full payload and all delivery attempts.
| Parameter | Type | Required | Description |
|---|---|---|---|
event_id | string | Yes | The ID of the event to retrieve |
hookbase_get_event_debug
Generate a cURL command to replay an event for debugging purposes.
| Parameter | Type | Required | Description |
|---|---|---|---|
event_id | string | Yes | The ID of the event to generate cURL for |
Deliveries
hookbase_list_deliveries
Query webhook deliveries with optional filters. Deliveries represent attempts to forward webhooks to destinations.
| Parameter | Type | Required | Description |
|---|---|---|---|
limit | number | No | Maximum number of deliveries to return (default: 20, max: 100) |
offset | number | No | Number of deliveries to skip for pagination |
event_id | string | No | Filter by event ID |
destination_id | string | No | Filter by destination ID |
status | pending | success | failed | retrying | No | Filter by delivery status |
hookbase_get_delivery
Get detailed information about a specific delivery, including the response body and error details.
| Parameter | Type | Required | Description |
|---|---|---|---|
delivery_id | string | Yes | The ID of the delivery to retrieve |
hookbase_replay_delivery
Retry a failed delivery. This will re-send the original webhook payload to the destination.
| Parameter | Type | Required | Description |
|---|---|---|---|
delivery_id | string | Yes | The ID of the delivery to replay |
hookbase_bulk_replay
Retry multiple failed deliveries at once. Useful for recovering from destination outages.
| Parameter | Type | Required | Description |
|---|---|---|---|
delivery_ids | string[] | Yes | Array of delivery IDs to replay |
hookbase_replay_with_edit
Replay a failed delivery with one-shot overrides. Use this to recover from a broken transform, a wrong destination URL, or a missing header without permanently changing the route. Set persist_transform=true to save the new transform code to the route after a successful replay. Always replay one delivery first as a probe before bulk replays — the response includes the new delivery ID so you can poll its status.
| Parameter | Type | Required | Description |
|---|---|---|---|
delivery_id | string | Yes | The ID of the original failed delivery to replay |
modified_payload | any | No | Edited payload to use instead of the original event payload |
destination_override | string | No | Destination id or slug to send the replay to instead of the route's normal destination. Must belong to the same organization. |
transform_override | object | No | One-shot transform applied to this replay only, unless persist_transform=true |
headers_override | object | No | Outbound HTTP headers to send instead of/in addition to the destination's configured headers. Cannot set host, content-length, transfer-encoding, or connection. Max 50 entries. |
persist_transform | boolean | No | When true and transform_override is set, the new code is saved to the route's transform after replay. Only works when the route already has a transform attached. |
hookbase_list_delivery_clusters
List recent failure clusters — distinct failure patterns aggregated by fingerprint (route + destination + status + normalized error). Use this as the entry point when investigating an incident: one cluster row = one root cause, regardless of how many deliveries failed. Returns up to 100 clusters in the chosen time window.
| Parameter | Type | Required | Description |
|---|---|---|---|
since_hours | integer | No | Window in hours (default 24, max 720 / 30 days) |
limit | integer | No | Max clusters to return (default 50) |
hookbase_replay_cluster
Replay every failed delivery matching a cluster fingerprint with one round trip. Same override shape as hookbase_replay_with_edit. Use this after diagnosing a cluster with hookbase_list_delivery_clusters and probing the fix on a single delivery with hookbase_replay_with_edit. persist_transform requires every delivery in the cluster to share a single route.
| Parameter | Type | Required | Description |
|---|---|---|---|
fingerprint | string | Yes | The cluster fingerprint hash returned by hookbase_list_delivery_clusters |
destination_override | string | No | |
transform_override | object | No | |
headers_override | object | No | |
persist_transform | boolean | No | |
limit | integer | No | Max cluster deliveries to replay (default 500, hard cap 2000) |
Tunnels
hookbase_list_tunnels
List all localhost tunnels in the organization. Tunnels allow forwarding webhooks to local development servers.
Parameters: None
hookbase_create_tunnel
Create a new localhost tunnel. The tunnel can be connected using the Hookbase CLI to forward webhooks to your local server.
| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Display name for the tunnel |
subdomain | string | No | Custom subdomain (auto-generated if not provided) |
hookbase_get_tunnel_status
Check the connection status of a tunnel. Shows whether the tunnel is connected and live statistics.
| Parameter | Type | Required | Description |
|---|---|---|---|
tunnel_id | string | Yes | The ID of the tunnel to check |
hookbase_delete_tunnel
Delete a localhost tunnel.
| Parameter | Type | Required | Description |
|---|---|---|---|
tunnel_id | string | Yes | The ID of the tunnel to delete |
Cron Jobs
hookbase_list_cron_jobs
List all scheduled cron jobs in the organization. Cron jobs make HTTP requests on a schedule.
Parameters: None
hookbase_create_cron_job
Create a new scheduled cron job that makes HTTP requests on a schedule.
| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Display name for the cron job |
cron_expression | string | Yes | Cron expression (e.g., "0 * * * *" for hourly, "0 0 * * *" for daily) |
url | string | Yes | URL to request when the job runs |
method | GET | POST | PUT | PATCH | DELETE | No | HTTP method (default: POST) |
headers | object | No | Custom headers to include |
payload | string | No | Request body (for POST/PUT/PATCH) |
timezone | string | No | Timezone for the schedule (default: UTC) |
timeout_ms | number | No | Request timeout in milliseconds (default: 30000) |
description | string | No | Optional description |
hookbase_get_cron_job
Get full details for a single cron job, including schedule, target URL, headers/payload, and last/next run times.
| Parameter | Type | Required | Description |
|---|---|---|---|
job_id | string | Yes | Cron job ID |
hookbase_update_cron_job
Update a cron job. Pass only the fields you want to change. Changing cron_expression or timezone recalculates next run time.
| Parameter | Type | Required | Description |
|---|---|---|---|
job_id | string | Yes | |
name | string | No | |
description | string | No | |
cron_expression | string | No | |
timezone | string | No | |
url | string | No | |
method | GET | POST | PUT | PATCH | DELETE | No | |
headers | object | No | |
payload | string | No | |
timeout_ms | number | No | |
is_active | boolean | No | |
notify_on_failure | boolean | No | |
notify_on_success | boolean | No | |
notify_emails | string | No | Comma-separated email addresses |
group_id | string,null | No | Cron group ID, or null to remove from group |
hookbase_delete_cron_job
Delete a scheduled cron job.
| Parameter | Type | Required | Description |
|---|---|---|---|
job_id | string | Yes | The ID of the cron job to delete |
hookbase_trigger_cron
Manually trigger a cron job immediately, regardless of its schedule.
| Parameter | Type | Required | Description |
|---|---|---|---|
job_id | string | Yes | The ID of the cron job to trigger |
Cron Groups
hookbase_list_cron_groups
List cron job groups. Groups organize cron jobs in the dashboard and can be referenced via group_id when creating/updating jobs.
Parameters: None
hookbase_get_cron_group
Get a single cron group by ID or slug.
| Parameter | Type | Required | Description |
|---|---|---|---|
group_id | string | Yes | Group ID or slug |
hookbase_create_cron_group
Create a cron group. Slug is derived from the name. New groups are appended to the end of the sort order.
| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | Yes | |
description | string | No |
hookbase_update_cron_group
Update a cron group's name, description, sort order, or collapsed state.
| Parameter | Type | Required | Description |
|---|---|---|---|
group_id | string | Yes | |
name | string | No | |
description | string | No | |
sort_order | number | No | |
is_collapsed | boolean | No |
hookbase_delete_cron_group
Delete a cron group. Jobs in this group are not deleted; their group_id is set to null.
| Parameter | Type | Required | Description |
|---|---|---|---|
group_id | string | Yes |
Analytics
hookbase_get_analytics
Get dashboard analytics and metrics for the organization, including event counts, delivery success rates, and top sources/destinations.
| Parameter | Type | Required | Description |
|---|---|---|---|
range | 1h | 24h | 7d | 30d | No | Time range for analytics (default: 24h) |
Filters
hookbase_list_filters
List filter definitions in the organization. Filters are reusable condition sets attached to routes to gate which events are delivered.
| Parameter | Type | Required | Description |
|---|---|---|---|
page | number | No | |
page_size | number | No | Page size (max 100) |
hookbase_get_filter
Get a filter definition including its conditions and AND/OR logic.
| Parameter | Type | Required | Description |
|---|---|---|---|
filter_id | string | Yes | Filter ID or slug |
hookbase_create_filter
Create a reusable filter that can be attached to routes. A filter evaluates a list of conditions (combined via AND or OR) against incoming event payloads.
| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | Yes | |
description | string | No | |
slug | string | No | URL-safe identifier (auto-derived from name if omitted) |
conditions | object[] | Yes | |
logic | AND | OR | No | How conditions combine (default AND) |
hookbase_update_filter
Update a filter's name, description, conditions, or logic. Pass only the fields you want to change.
| Parameter | Type | Required | Description |
|---|---|---|---|
filter_id | string | Yes | |
name | string | No | |
description | string,null | No | |
conditions | object[] | No | |
logic | AND | OR | No |
hookbase_delete_filter
Delete a filter. Routes referencing it will have the reference cleared.
| Parameter | Type | Required | Description |
|---|---|---|---|
filter_id | string | Yes |
Transforms
hookbase_list_transforms
List transform definitions. Transforms reshape an event payload before delivery (JSONata, XSLT, Liquid, or JavaScript).
| Parameter | Type | Required | Description |
|---|---|---|---|
page | number | No | |
page_size | number | No |
hookbase_get_transform
Get a transform definition including its source code, language, and input/output formats.
| Parameter | Type | Required | Description |
|---|---|---|---|
transform_id | string | Yes | Transform ID or slug |
hookbase_create_transform
Create a transform that reshapes payloads. The code is validated server-side before being saved. Requires the "transforms" feature on the org plan.
| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | Yes | |
slug | string | No | |
description | string | No | |
code | string | Yes | Transform expression / source. JSONata is the default. |
transform_type | jsonata | xslt | liquid | javascript | No | Default: jsonata |
input_format | json | xml | text | No | Default: json |
output_format | any | No | Default: json |
hookbase_update_transform
Update a transform. If code changes it is re-validated server-side.
| Parameter | Type | Required | Description |
|---|---|---|---|
transform_id | string | Yes | |
name | string | No | |
description | string,null | No | |
code | string | No | |
transform_type | jsonata | xslt | liquid | javascript | No | |
input_format | json | xml | text | No | |
output_format | any | No | |
is_active | boolean | No |
hookbase_delete_transform
Delete a transform. Routes referencing it will have the reference cleared.
| Parameter | Type | Required | Description |
|---|---|---|---|
transform_id | string | Yes |
hookbase_test_transform
Run a transform expression against a sample payload without saving. Useful for iterating on JSONata/XSLT/Liquid/JS code.
| Parameter | Type | Required | Description |
|---|---|---|---|
code | string | Yes | |
payload | any | No | Sample payload (object/string depending on input_format) |
transform_type | jsonata | xslt | liquid | javascript | No | |
input_format | json | xml | text | No | |
output_format | any | No |
Schemas
hookbase_list_schemas
List JSON Schema definitions in the organization. Schemas validate event payloads on routes and reject malformed deliveries.
Parameters: None
hookbase_get_schema
Get a JSON Schema definition (parsed as an object).
| Parameter | Type | Required | Description |
|---|---|---|---|
schema_id | string | Yes | Schema ID or slug |
hookbase_create_schema
Create a JSON Schema. Requires the "schemas" feature on the org plan. The slug is derived from the name.
| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | Yes | |
description | string | No | |
json_schema | object | Yes | A valid JSON Schema object |
hookbase_update_schema
Update a schema. Pass any subset of name/description/json_schema. Uses HTTP PUT under the hood.
| Parameter | Type | Required | Description |
|---|---|---|---|
schema_id | string | Yes | |
name | string | No | |
description | string,null | No | |
json_schema | object | No |
hookbase_delete_schema
Delete a schema. Routes referencing it will have the reference cleared.
| Parameter | Type | Required | Description |
|---|---|---|---|
schema_id | string | Yes |
hookbase_validate_against_schema
Validate a sample payload against a stored schema and return any validation errors.
| Parameter | Type | Required | Description |
|---|---|---|---|
schema_id | string | Yes | |
payload | any | No |
Alert Rules
hookbase_list_alert_rules
List configured alert rules. Each rule pairs a trigger condition (failure rate, source silence, latency, volume anomalies, schema drift) with one or more notification channels.
Parameters: None
hookbase_get_alert_rule
Get a single alert rule including its trigger config and notification channel IDs.
| Parameter | Type | Required | Description |
|---|---|---|---|
rule_id | string | Yes |
hookbase_create_alert_rule
Create an alert rule. trigger_config shape depends on trigger_type: - source_silence: { type, sourceId?, silenceMinutes } - failure_rate: { type, destinationId?, thresholdPercent, windowMinutes } - latency_threshold: { type, destinationId?, thresholdMs, windowMinutes } - volume_spike: { type, sourceId?, maxEvents, windowMinutes } - volume_drop: { type, sourceId?, minEvents, windowMinutes } - anomaly_volume: { type, sourceId, direction?, zThreshold?, windowMinutes?, minBaselineSamples? } (Pro+ only) - schema_drift: { type, sourceId, alertOn? } (Pro+ only) The "type" field inside trigger_config must equal trigger_type.
| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | Yes | |
trigger_type | source_silence | failure_rate | latency_threshold | volume_spike | volume_drop | anomaly_volume | schema_drift | Yes | |
trigger_config | object | Yes | Discriminated config matching trigger_type — see tool description |
notification_channel_ids | string[] | Yes | IDs of notification channels to fire |
cooldown_minutes | integer | No | Default 30 |
hookbase_update_alert_rule
Update an alert rule. Pass only fields you want to change.
| Parameter | Type | Required | Description |
|---|---|---|---|
rule_id | string | Yes | |
name | string | No | |
trigger_config | object | No | |
notification_channel_ids | string[] | No | |
cooldown_minutes | integer | No | |
is_active | boolean | No |
hookbase_delete_alert_rule
Delete an alert rule.
| Parameter | Type | Required | Description |
|---|---|---|---|
rule_id | string | Yes |
hookbase_test_alert_rule
Fire a test notification through all channels attached to this alert rule. Useful for verifying channel configuration.
| Parameter | Type | Required | Description |
|---|---|---|---|
rule_id | string | Yes |
Notification Channels
hookbase_list_notification_channels
List notification channels (email, Slack, webhook, Teams, PagerDuty, Discord). Sensitive fields like webhook URLs and PagerDuty routing keys are masked in the response.
Parameters: None
hookbase_get_notification_channel
Get a single notification channel. Sensitive fields are masked in the response.
| Parameter | Type | Required | Description |
|---|---|---|---|
channel_id | string | Yes |
hookbase_create_notification_channel
Create a notification channel. config shape depends on type: - email: { addresses: ["[email protected]", ...] } - slack: { webhookUrl } - discord: { webhookUrl } - teams: { webhookUrl } - pagerduty: { routingKey, severity? } - webhook: { url, secret? } (signed with HMAC-SHA256 if secret provided) Requires the "notification_channels" feature on the org plan; admin or owner role required.
| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | Yes | |
type | email | slack | webhook | teams | pagerduty | discord | Yes | |
config | object | Yes | Channel-specific config — see tool description |
hookbase_update_notification_channel
Update a notification channel. Pass any subset of name/config/is_active. Replacing config requires the same shape as create.
| Parameter | Type | Required | Description |
|---|---|---|---|
channel_id | string | Yes | |
name | string | No | |
config | object | No | |
is_active | boolean | No |
hookbase_delete_notification_channel
Delete a notification channel. Alert rules referencing it will lose this channel from their notification list.
| Parameter | Type | Required | Description |
|---|---|---|---|
channel_id | string | Yes |
Outbound Webhooks (Applications, Endpoints, Subscriptions)
hookbase_list_applications
List webhook applications in the organization. Applications group endpoints that receive outbound webhooks for a customer or integration.
| Parameter | Type | Required | Description |
|---|---|---|---|
search | string | No | Search by application name |
is_enabled | boolean | No | Filter by enabled status (false = disabled) |
limit | number | No | Maximum number of results (default 50, max 100) |
cursor | string | No | Pagination cursor for next page |
hookbase_get_application
Get detailed information about a specific webhook application, including its endpoints and delivery statistics.
| Parameter | Type | Required | Description |
|---|---|---|---|
application_id | string | Yes | The ID of the webhook application |
hookbase_create_application
Create a new webhook application. Applications represent a customer or integration that will receive webhooks.
| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Display name for the application |
external_id | string | No | Your system's ID for this customer/application |
metadata | object | No | Custom metadata as key-value pairs |
rate_limit_per_second | number | No | Max events per second (default 100) |
rate_limit_per_minute | number | No | Max events per minute (default 1000) |
rate_limit_per_hour | number | No | Max events per hour (default 10000) |
hookbase_update_application
Update a webhook application configuration.
| Parameter | Type | Required | Description |
|---|---|---|---|
application_id | string | Yes | The ID of the application to update |
name | string | No | New display name |
metadata | object | No | Updated metadata |
rate_limit_per_second | number | No | Max events per second |
rate_limit_per_minute | number | No | Max events per minute |
rate_limit_per_hour | number | No | Max events per hour |
is_enabled | boolean | No | Enable or disable the application |
disabled_reason | string | No | Reason for disabling (when is_enabled=false) |
hookbase_delete_application
Delete a webhook application. This also deletes all endpoints and subscriptions for this application.
| Parameter | Type | Required | Description |
|---|---|---|---|
application_id | string | Yes | The ID of the application to delete |
hookbase_list_endpoints
List webhook endpoints. Endpoints are URLs that receive webhook deliveries.
| Parameter | Type | Required | Description |
|---|---|---|---|
application_id | string | No | Filter by application ID |
is_enabled | boolean | No | Filter by enabled status (false = disabled) |
circuit_state | closed | open | half_open | No | Filter by circuit breaker state |
limit | number | No | Maximum number of results (default 50, max 100) |
cursor | string | No | Pagination cursor for next page |
hookbase_get_endpoint
Get detailed information about a webhook endpoint, including circuit breaker state and delivery statistics.
| Parameter | Type | Required | Description |
|---|---|---|---|
endpoint_id | string | Yes | The ID of the endpoint |
hookbase_create_endpoint
Create a new webhook endpoint. The signing secret is only returned once on creation - save it securely.
| Parameter | Type | Required | Description |
|---|---|---|---|
application_id | string | Yes | The application ID this endpoint belongs to |
url | string | Yes | The HTTPS URL to receive webhooks |
description | string | No | Description of the endpoint |
headers | object[] | No | Custom headers to include in requests |
timeout_seconds | number | No | Request timeout in seconds (default 30) |
circuit_failure_threshold | number | No | Failures before opening circuit (default 5) |
circuit_success_threshold | number | No | Successes to close circuit (default 2) |
circuit_cooldown_seconds | number | No | Cooldown before half-open (default 60) |
hookbase_update_endpoint
Update a webhook endpoint configuration.
| Parameter | Type | Required | Description |
|---|---|---|---|
endpoint_id | string | Yes | The ID of the endpoint to update |
url | string | No | New HTTPS URL |
description | string | No | New description |
headers | object[] | No | Updated custom headers |
timeout_seconds | number | No | Request timeout in seconds |
is_enabled | boolean | No | Enable or disable the endpoint |
disabled_reason | string | No | Reason for disabling (when is_enabled=false) |
circuit_failure_threshold | number | No | Failures before opening circuit |
circuit_success_threshold | number | No | Successes to close circuit |
circuit_cooldown_seconds | number | No | Cooldown before half-open |
hookbase_delete_endpoint
Delete a webhook endpoint. This also removes all subscriptions for this endpoint.
| Parameter | Type | Required | Description |
|---|---|---|---|
endpoint_id | string | Yes | The ID of the endpoint to delete |
hookbase_rotate_endpoint_secret
Rotate the signing secret for an endpoint. Returns the new secret (save it securely). Old secret remains valid during grace period.
| Parameter | Type | Required | Description |
|---|---|---|---|
endpoint_id | string | Yes | The ID of the endpoint |
grace_period_seconds | number | No | How long old secret remains valid (default 3600 = 1 hour) |
hookbase_reset_endpoint_circuit
Reset the circuit breaker for an endpoint. Use this to immediately re-enable deliveries after fixing an issue.
| Parameter | Type | Required | Description |
|---|---|---|---|
endpoint_id | string | Yes | The ID of the endpoint |
hookbase_list_subscriptions
List webhook subscriptions. Subscriptions connect endpoints to event types they should receive.
| Parameter | Type | Required | Description |
|---|---|---|---|
endpoint_id | string | No | Filter by endpoint ID |
event_type_id | string | No | Filter by event type ID |
application_id | string | No | Filter by application ID |
is_enabled | boolean | No | Filter by enabled status |
limit | number | No | Maximum number of results (default 50, max 100) |
cursor | string | No | Pagination cursor for next page |
hookbase_get_subscription
Get detailed information about a webhook subscription.
| Parameter | Type | Required | Description |
|---|---|---|---|
subscription_id | string | Yes | The ID of the subscription |
hookbase_create_subscription
Create a subscription to connect an endpoint to an event type. The endpoint will receive events of this type. Use label_filters to only receive events with matching labels.
| Parameter | Type | Required | Description |
|---|---|---|---|
endpoint_id | string | Yes | The endpoint ID to subscribe |
event_type_id | string | Yes | The event type ID to subscribe to |
filter_expression | string | No | JSONata expression to filter events |
label_filters | object | No | Label filters to match against event labels (e.g., {"environment": "production"} or {"region": ["us-east", "us-west"]}) |
label_filter_mode | all | any | No | Filter mode: "all" requires all filters to match (AND), "any" requires at least one filter to match (OR). Default: "all" |
transform_id | string | No | Transform ID to modify payload before delivery |
is_enabled | boolean | No | Enable the subscription (default true) |
hookbase_update_subscription
Update a webhook subscription.
| Parameter | Type | Required | Description |
|---|---|---|---|
subscription_id | string | Yes | The ID of the subscription to update |
filter_expression | string | No | New filter expression (null to remove) |
label_filters | union | No | Label filters to match against event labels (null to remove) |
label_filter_mode | union | No | Filter mode: "all" (AND) or "any" (OR) |
transform_id | string | No | New transform ID (null to remove) |
is_enabled | boolean | No | Enable or disable the subscription |
hookbase_delete_subscription
Delete a webhook subscription. The endpoint will no longer receive events of this type.
| Parameter | Type | Required | Description |
|---|---|---|---|
subscription_id | string | Yes | The ID of the subscription to delete |
Event Types
hookbase_list_event_types
List event types defined in the organization. Event types define the different kinds of webhook events that can be sent.
| Parameter | Type | Required | Description |
|---|---|---|---|
category | string | No | Filter by category |
is_enabled | boolean | No | Filter by enabled status |
search | string | No | Search by event type name |
limit | number | No | Maximum number of results (default 50, max 100) |
cursor | string | No | Pagination cursor for next page |
hookbase_get_event_type
Get detailed information about an event type, including its JSON schema and example payload.
| Parameter | Type | Required | Description |
|---|---|---|---|
event_type_id | string | Yes | The ID of the event type |
hookbase_create_event_type
Create a new event type. Event types define the structure and meaning of webhook events.
| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Event type name (lowercase, dot-separated, e.g., "order.created") |
display_name | string | No | Human-readable name |
description | string | No | Description of when this event is triggered |
category | string | No | Category for grouping (e.g., "orders", "users") |
schema | string | No | JSON Schema for payload validation |
example_payload | string | No | Example payload as JSON string |
documentation_url | string | No | URL to event documentation |
is_enabled | boolean | No | Enable the event type (default true) |
hookbase_update_event_type
Update an event type. Use is_deprecated to mark an event type as deprecated.
| Parameter | Type | Required | Description |
|---|---|---|---|
event_type_id | string | Yes | The ID of the event type to update |
display_name | string | No | New human-readable name |
description | string | No | New description |
category | string | No | New category (null to remove) |
schema | string | No | New JSON Schema (null to remove) |
example_payload | string | No | New example payload (null to remove) |
documentation_url | string | No | New documentation URL (null to remove) |
is_enabled | boolean | No | Enable or disable the event type |
is_deprecated | boolean | No | Mark as deprecated |
deprecated_message | string | No | Message explaining deprecation |
hookbase_delete_event_type
Delete an event type. This also removes all subscriptions to this event type.
| Parameter | Type | Required | Description |
|---|---|---|---|
event_type_id | string | Yes | The ID of the event type to delete |
Outbound Messages
hookbase_send_event
Send a webhook event to all subscribed endpoints. The event is queued for delivery to matching subscriptions. Use labels for filtering which subscriptions receive the event.
| Parameter | Type | Required | Description |
|---|---|---|---|
event_type | string | Yes | Event type name (e.g., "order.created") |
payload | any | No | Event payload (any JSON-serializable data) |
application_id | string | No | Target a specific application only |
endpoint_id | string | No | Target a specific endpoint only |
idempotency_key | string | No | Unique key to prevent duplicate delivery |
labels | object | No | Labels for filtering subscriptions (e.g., {"environment": "production", "region": "us-east"}) |
metadata | object | No | Additional metadata for the event |
hookbase_list_outbound_messages
List outbound message delivery records. Messages track the delivery status of each event to each endpoint.
| Parameter | Type | Required | Description |
|---|---|---|---|
status | pending | processing | success | failed | exhausted | No | Filter by delivery status |
event_type | string | No | Filter by event type name |
application_id | string | No | Filter by application ID |
endpoint_id | string | No | Filter by endpoint ID |
limit | number | No | Maximum number of results (default 50, max 100) |
cursor | string | No | Pagination cursor for next page |
hookbase_get_outbound_message
Get detailed information about an outbound message delivery.
| Parameter | Type | Required | Description |
|---|---|---|---|
message_id | string | Yes | The ID of the message |
hookbase_get_message_attempts
Get the delivery attempt history for an outbound message. Shows each attempt with response details.
| Parameter | Type | Required | Description |
|---|---|---|---|
message_id | string | Yes | The ID of the message |
hookbase_replay_message
Replay a failed or exhausted message. Creates a new delivery attempt for the original event payload.
| Parameter | Type | Required | Description |
|---|---|---|---|
message_id | string | Yes | The ID of the message to replay |
hookbase_get_outbound_stats
Get delivery statistics for outbound webhooks. Shows counts by status (pending, success, failed, etc.).
Parameters: None
Webhook Analytics
hookbase_get_webhook_analytics
Get outbound webhook delivery analytics: status counts, success rate, latency percentiles, top failing endpoints, error type breakdown, DLQ reasons, and a time-bucketed chart series. Optionally filter by application_id and/or endpoint_id.
| Parameter | Type | Required | Description |
|---|---|---|---|
time_range | 1h | 24h | 7d | 30d | No | Default "24h" |
application_id | string | No | |
endpoint_id | string | No |
hookbase_get_webhook_endpoint_analytics
Get analytics for a single outbound webhook endpoint: circuit-breaker state, lifetime totals, status counts, average response time, and the most recent 100 delivery attempts in the window.
| Parameter | Type | Required | Description |
|---|---|---|---|
endpoint_id | string | Yes | |
time_range | 1h | 24h | 7d | 30d | No | Default "24h" |
API Keys
hookbase_list_api_keys
List API keys for the current org. Returns id, name, key prefix, scopes, expiry — never the raw key (which is only returned once at creation).
Parameters: None
hookbase_create_api_key
Create a new API key (admin or owner only). The raw key is returned ONCE in the response under apiKey.key — store it securely; it cannot be retrieved later. Default scopes are ["read","write"]. Pass expiresIn (seconds from now) for time-limited keys.
| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | Yes | |
scopes | string[] | No | Default ["read","write"] |
expires_in | integer | No | Seconds from now until expiry (omit for no expiry) |
hookbase_delete_api_key
Delete (revoke) an API key. Admin or owner only, requires the "delete" scope. The key currently being used to authenticate this request cannot be deleted.
| Parameter | Type | Required | Description |
|---|---|---|---|
key_id | string | Yes |
Audit Logs
hookbase_list_audit_logs
List org audit log entries with optional filters. Admins/owners always have access; non-admins require the "audit_logs" feature on the plan. Filter by action, entityType, or userId.
| Parameter | Type | Required | Description |
|---|---|---|---|
limit | integer | No | Default 50, max 100 |
offset | integer | No | |
action | string | No | Exact action string (see hookbase_list_audit_log_actions) |
entity_type | string | No | Exact entity_type string (e.g. "source", "destination") |
user_id | string | No |
hookbase_list_audit_log_actions
List the distinct action types present in this org's audit log. Useful for discovering filter values.
Parameters: None
hookbase_list_audit_log_users
List the distinct users who appear in this org's audit log. Useful for discovering user_id filter values.
Parameters: None
Redaction Policies
hookbase_list_redaction_policies
List redaction policies for this org. Optionally filter by source_id (org-wide policies have null sourceId).
| Parameter | Type | Required | Description |
|---|---|---|---|
source_id | string | No |
hookbase_get_redaction_policy
Get a single redaction policy with its full ruleset.
| Parameter | Type | Required | Description |
|---|---|---|---|
policy_id | string | Yes |
hookbase_create_redaction_policy
Create a redaction policy (admin or owner; requires the "redaction_policies" feature). Each rule has a match (type: path | field_name | regex_value | header, value) and action (type: redact | mask | hash | remove, optional keepLastN for mask). Pass source_id to scope to one source, omit/null for org-wide. scope controls when rules apply: "storage" (before R2 write), "delivery" (before forwarding), or "both" (default).
| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | Yes | |
source_id | union | No | |
rules | object[] | Yes | |
scope | storage | delivery | both | No | Default "both" |
hookbase_update_redaction_policy
Update a redaction policy. PUT semantics — pass the full policy state (name, rules, scope, isActive). Optional source_id reassigns the policy. Cache busts on save but org-wide policies (sourceId null) may take up to 5 min to propagate.
| Parameter | Type | Required | Description |
|---|---|---|---|
policy_id | string | Yes | |
name | string | Yes | |
source_id | union | No | |
rules | object[] | Yes | |
scope | storage | delivery | both | Yes | |
is_active | boolean | Yes |
hookbase_delete_redaction_policy
Delete a redaction policy (admin or owner).
| Parameter | Type | Required | Description |
|---|---|---|---|
policy_id | string | Yes |
hookbase_preview_redaction_policy
Apply a candidate ruleset to a sample payload (and optional headers) without saving. Returns the redacted payload, redacted headers, and the count of fields touched.
| Parameter | Type | Required | Description |
|---|---|---|---|
rules | object[] | Yes | |
payload | any | No | |
headers | object | No |
Scheduled Sends
hookbase_list_scheduled_sends
List one-shot scheduled HTTP sends. Optionally filter by status (pending | sending | sent | failed | cancelled). Paginated.
| Parameter | Type | Required | Description |
|---|---|---|---|
status | pending | sending | sent | failed | cancelled | No | |
page | integer | No | |
page_size | integer | No | Default 20 |
hookbase_get_scheduled_send
Get a single scheduled send including its current status, response, and error info.
| Parameter | Type | Required | Description |
|---|---|---|---|
send_id | string | Yes |
hookbase_create_scheduled_send
Schedule a one-shot HTTP request to fire at a future time. URL must be http or https. scheduled_for must be a future ISO-8601 timestamp. Default method POST. headers and payload are arbitrary objects (JSON-encoded server-side).
| Parameter | Type | Required | Description |
|---|---|---|---|
url | string | Yes | |
scheduled_for | string | Yes | ISO-8601 timestamp; must be in the future |
name | string | No | |
description | string | No | |
method | string | No | Default "POST" |
headers | object | No | |
payload | any | No | |
timezone | string | No | Default "UTC" — display only; scheduled_for is the source of truth |
max_attempts | integer | No | Default 3 |
hookbase_update_scheduled_send
Update a scheduled send. Only allowed while status is "pending". Pass any subset of fields to change.
| Parameter | Type | Required | Description |
|---|---|---|---|
send_id | string | Yes | |
name | string | No | |
description | string | No | |
url | string | No | |
method | string | No | |
headers | object | No | |
payload | any | No | |
scheduled_for | string | No | ISO-8601, must be in the future |
timezone | string | No | |
max_attempts | integer | No |
hookbase_cancel_scheduled_send
Cancel a pending or failed scheduled send. Sent or already-cancelled sends cannot be cancelled.
| Parameter | Type | Required | Description |
|---|---|---|---|
send_id | string | Yes |
hookbase_send_scheduled_send_now
Trigger a pending or failed scheduled send immediately, bypassing its scheduled_for time. Returns the live HTTP response status and latency.
| Parameter | Type | Required | Description |
|---|---|---|---|
send_id | string | Yes |
Test Webhook Bins
hookbase_create_bin
Create a new test webhook bin. Returns a public ingest URL that captures any HTTP request sent to it. Bins expire after a fixed TTL. Rate-limited to 10 per IP per day.
Parameters: None
hookbase_get_bin
Get a bin's metadata, current event count, configured response, and the 50 most recent captured events (summary form).
| Parameter | Type | Required | Description |
|---|---|---|---|
bin_id | string | Yes |
hookbase_list_bin_events
List captured events in a bin (summary view, paginated). Use hookbase_get_bin_event for a single event's headers and body.
| Parameter | Type | Required | Description |
|---|---|---|---|
bin_id | string | Yes | |
limit | integer | No | Default 50 |
offset | integer | No |
hookbase_get_bin_event
Get a single bin event with full headers and body. Body is fetched from R2 if it was offloaded.
| Parameter | Type | Required | Description |
|---|---|---|---|
bin_id | string | Yes | |
event_id | string | Yes |
hookbase_update_bin_response
Configure the response a bin returns to incoming webhook requests. status_code clamped to 100–599, body capped at 10KB. Useful for simulating different upstream behavior during integration testing.
| Parameter | Type | Required | Description |
|---|---|---|---|
bin_id | string | Yes | |
status_code | integer | No | Default 200 |
headers | object | No | |
body | string | No |