MCP Tools Reference
Complete reference for all 149 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. A source is an ingest endpoint that receives incoming webhooks from a provider like GitHub or Stripe and records them as events — it forwards nothing on its own until hookbase_create_route connects it to a destination. Returns summary fields including eventCount and routeCount; use hookbase_get_source for one source's full configuration.
Parameters: None
hookbase_get_source
Get full configuration for a single source, including its allowed HTTP methods, rate limit, and signature-verification settings. The signing secret itself is never returned here — only hasSigningSecret and signingSecretLast4; use hookbase_reveal_source_secret to read the full value. awaitingSigningSecret=true means no secret is stored and only the vendor can issue one (e.g. Stripe or Shopify when the create omitted it, or Asana/Notion, which issue it only after the ingest URL is registered), so events are accepted but not verified until it is set with hookbase_update_source signing_secret (or, for Notion, adopted via hookbase_adopt_source_pending_verification). verifiesWithoutSecret=true means the provider publishes a key Hookbase already has (wise, aws-sns), so events are verified with no secret.
| Parameter | Type | Required | Description |
|---|---|---|---|
source_id | string | Yes | The source ID or slug |
hookbase_create_source
Create a new webhook source. Sources receive incoming webhooks and can be connected to destinations via routes. Before creating one for a named vendor, call hookbase_get_provider to find the right provider value and its secretSource: if it is "provider" or "public_key", ask the user for the vendor-issued secret/key and pass it as signing_secret (for public keys and format-checked vendor keys such as Standard Webhooks/svix the API rejects the create without it; for the rest the source is created with no secret and awaitingSigningSecret=true, so events are not verified until it is set); if it is "operator", omit signing_secret and give the user the returned signingSecret to paste into the vendor — it is shown only here (hookbase_reveal_source_secret can read it later). The response also carries ingestUrl (the URL to register with the vendor), verifyToken for WhatsApp/Meta, and awaitingSigningSecret=true when no secret was stored for a vendor-issued provider (including Asana and Notion, which issue it only after the URL is registered).
| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Display name for the source |
slug | string | Yes | URL-safe identifier, lowercase letters, digits and dashes (e.g., "github-webhooks") |
provider | string | No | Webhook provider, which selects the signature scheme used to verify incoming requests. Common values: "github", "stripe", "shopify", "slack", "gitlab", "twilio", "paddle", "sendgrid", "whatsapp", "standard-webhooks", "custom". Not sure of the exact value? Call hookbase_list_providers (search by vendor name) and use the entry's hookbaseProvider — the catalog id can differ — then hookbase_get_provider to learn whether the user must paste a secret (secretSource). Omit it for a source that should accept unsigned requests. Use "standard-webhooks" (alias "svix") for any sender built on Standard Webhooks / Svix; "clerk", "resend", "render", "etsy" and "stytch" are accepted as aliases for it. Use "custom" (alias "generic") for a sender that signs the raw body with HMAC-SHA256 in its own header. An unknown value is rejected by the API with a 400. |
description | string | No | Optional description of the source |
signing_secret | string | No | Signing secret (or public key) used to verify this source's webhooks. Whether to send it depends on the provider's secretSource (see hookbase_get_provider): "provider" — the vendor issues it, so ask the user to paste it (required for Standard Webhooks/svix/clerk/resend, airtable, gitlab-signing-token and supabase-auth-hooks, and format-checked); "public_key" — paste the vendor's public key (required); "operator" — omit it and Hookbase generates one, returned once as signingSecret for the user to paste into the vendor; "built_in" (wise, wise-sandbox, aws-sns) — never send one (400); "none" — optional, only for a custom HMAC secret. Asana and Notion issue their secret only after the URL is registered: omit it on create. |
verify_token | string | No | WhatsApp/Meta only (the API returns 400 for any other provider): the "Verify token" Meta checks when the URL is registered. Omit it and Hookbase generates one, returned as verifyToken. |
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 source's configuration — name, provider, signing secret, verify token, signature enforcement, rate limit, transient mode, or allowed methods. Only the fields you provide are changed; omitted fields keep their current value. Switching to a provider whose secret the vendor issues requires signing_secret in the same update. Turning on reject_invalid_signatures immediately starts rejecting webhooks that fail verification; turning on transient_mode stops new payloads from being stored at rest but does not retroactively delete payloads already stored. To have Hookbase generate a fresh secret use hookbase_rotate_source_secret instead. Returns only a confirmation — call hookbase_get_source (or hookbase_get_source_verify_token) to read the result.
| Parameter | Type | Required | Description |
|---|---|---|---|
source_id | string | Yes | The source ID or slug |
name | string | No | New display name |
description | string | No | New description |
is_active | boolean | No | Enable or disable the source |
provider | string | null | No | Change the source's provider (null clears it). Webhook provider, which selects the signature scheme used to verify incoming requests. Common values: "github", "stripe", "shopify", "slack", "gitlab", "twilio", "paddle", "sendgrid", "whatsapp", "standard-webhooks", "custom". Not sure of the exact value? Call hookbase_list_providers (search by vendor name) and use the entry's hookbaseProvider — the catalog id can differ — then hookbase_get_provider to learn whether the user must paste a secret (secretSource). Omit it for a source that should accept unsigned requests. Use "standard-webhooks" (alias "svix") for any sender built on Standard Webhooks / Svix; "clerk", "resend", "render", "etsy" and "stytch" are accepted as aliases for it. Use "custom" (alias "generic") for a sender that signs the raw body with HMAC-SHA256 in its own header. An unknown value is rejected by the API with a 400. |
signing_secret | string | null | No | Set the signing secret (e.g. one the user copied from the vendor, or Asana's secret once it has been issued); null removes it. Takes effect immediately — the old secret stops verifying. Signing secret (or public key) used to verify this source's webhooks. Whether to send it depends on the provider's secretSource (see hookbase_get_provider): "provider" — the vendor issues it, so ask the user to paste it (required for Standard Webhooks/svix/clerk/resend, airtable, gitlab-signing-token and supabase-auth-hooks, and format-checked); "public_key" — paste the vendor's public key (required); "operator" — omit it and Hookbase generates one, returned once as signingSecret for the user to paste into the vendor; "built_in" (wise, wise-sandbox, aws-sns) — never send one (400); "none" — optional, only for a custom HMAC secret. Asana and Notion issue their secret only after the URL is registered: omit it on create. |
verify_token | string | null | No | WhatsApp/Meta only: set the verify token, or pass "" / null to have Hookbase generate a new one (read it back with hookbase_get_source_verify_token). |
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. Cascades to delete its routes, their deliveries, and every event ever ingested through this source — event history is not recoverable afterward.
| Parameter | Type | Required | Description |
|---|---|---|---|
source_id | string | Yes | The source ID or slug |
hookbase_rotate_source_secret
Have Hookbase generate a new signing secret for a source. Returns the new secret (save it securely) - unlike endpoint secret rotation, there is no grace period: the old secret stops verifying signatures immediately, so update every sender using it before rotating. Only works for providers whose secret Hookbase generates (secretSource "operator", or custom/no provider). The API returns 400 for built-in-key providers (wise, wise-sandbox, aws-sns: nothing to rotate), public-key providers (paste the vendor's new key via hookbase_update_source signing_secret), vendor-issued secrets such as Standard Webhooks/svix/clerk/resend, gitlab-signing-token or airtable (regenerate it at the vendor, then set it with hookbase_update_source), and every other provider whose secret the vendor issues (secretSource "provider", e.g. stripe, shopify, slack, twilio, and asana/notion after registration).
| Parameter | Type | Required | Description |
|---|---|---|---|
source_id | string | Yes | The source ID or slug |
hookbase_reveal_source_secret
Reveal the full signing secret currently stored on a source (hookbase_get_source only shows the last 4 characters). Use it when the user needs to paste a Hookbase-generated secret into the vendor after the create response is gone. Returns 404 when the source has no secret (built-in-key providers, or one still awaiting its secret). Requires an API key with write scope and a member+ role.
| Parameter | Type | Required | Description |
|---|---|---|---|
source_id | string | Yes | The source ID or slug |
hookbase_get_source_verify_token
Read the verify token of a WhatsApp/Meta source — the value the user enters in Meta's "Verify token" field when registering the ingest URL. Returns 400 for providers that have no verify token. Requires an API key with write scope and a member+ role.
| Parameter | Type | Required | Description |
|---|---|---|---|
source_id | string | Yes | The source ID or slug |
hookbase_rotate_source_verify_token
Generate a new verify token for a WhatsApp/Meta source and return it. The old token stops answering Meta's registration check immediately, so the user must enter the new one in Meta before re-verifying the URL. Already-registered webhooks keep flowing (the token is only checked at registration). Returns 400 for providers that have no verify token.
| Parameter | Type | Required | Description |
|---|---|---|---|
source_id | string | Yes | The source ID or slug |
hookbase_get_source_pending_verification
Show the verification token a vendor delivered to the source's ingest URL during registration and Hookbase parked instead of trusting (currently Notion, whose subscription sends a verification_token that is also its signing secret). Returns , or a 404 error when nothing is waiting. The user pastes the token into the vendor's Verify form; once the vendor shows the subscription as verified, call hookbase_adopt_source_pending_verification.
| Parameter | Type | Required | Description |
|---|---|---|---|
source_id | string | Yes | The source ID or slug |
hookbase_adopt_source_pending_verification
Make the parked verification token (see hookbase_get_source_pending_verification) this source's signing secret, replacing any existing one, and discard the pending copy. The token arrived unauthenticated, so only adopt it after the user confirms the vendor accepted it (e.g. Notion shows the subscription as verified). Returns a 404 error when no token is waiting.
| Parameter | Type | Required | Description |
|---|---|---|---|
source_id | string | Yes | The source ID or slug |
Providers
hookbase_list_providers
List the webhook providers in Hookbase's catalog (Stripe, GitHub, Shopify, WhatsApp, ...), optionally filtered by category or a search term matched against name, description and category. Each entry gives the catalog id, the hookbaseProvider value to pass as provider to hookbase_create_source (it can differ from the id — several catalog entries map to "custom"), and a signature-verification summary. signatureVerification.secretSource says who produces the credential a source stores: "provider" — the vendor issues it; ask the user to copy it from the vendor (see secretInstruction) and pass it as signing_secret to hookbase_create_source, which rejects the create without it for format-checked vendor keys; for the rest a create without it stores no secret (awaitingSigningSecret=true, events unverified until it is set). "public_key" — the vendor's public verification key; ask the user to paste it. "operator" — the vendor only has an input field; omit signing_secret, Hookbase generates one, and the user pastes the returned signingSecret into the vendor. "built_in" — the vendor publishes one key Hookbase already has; send no secret (the API rejects one) — events are still verified. "none" — the vendor does not sign (or Hookbase cannot verify it); no secret needed. secretAfterRegistration=true means the vendor issues its secret only after the ingest URL is registered: create the source without one, then set it later (Notion's token is parked — see hookbase_get_source_pending_verification). Call hookbase_get_provider for the full instructions before asking the user for a secret.
| Parameter | Type | Required | Description |
|---|---|---|---|
category | string | No | Only providers in this category: payments, developer-tools, e-commerce, communication, email, crm, auth, infrastructure, monitoring, productivity, forms, analytics, fintech |
search | string | No | Case-insensitive text matched against provider name, description and category (e.g. "stripe", "whatsapp") |
hookbase_get_provider
Get one catalog provider's full setup detail: hookbaseProvider (the provider value for hookbase_create_source), signatureVerification (algorithm, headerName, kind, secretSource, secretLabel — the vendor's own name for the credential, secretInstruction — where the user copies it from or pastes it into, secretPlaceholder, secretFormat, secretAfterRegistration, and verifyToken for Meta/WhatsApp, whose create response returns a verify token the user enters in Meta), setupGuide steps, docsUrl, ipRanges, and the event type names. signatureVerification.secretSource says who produces the credential a source stores: "provider" — the vendor issues it; ask the user to copy it from the vendor (see secretInstruction) and pass it as signing_secret to hookbase_create_source, which rejects the create without it for format-checked vendor keys; for the rest a create without it stores no secret (awaitingSigningSecret=true, events unverified until it is set). "public_key" — the vendor's public verification key; ask the user to paste it. "operator" — the vendor only has an input field; omit signing_secret, Hookbase generates one, and the user pastes the returned signingSecret into the vendor. "built_in" — the vendor publishes one key Hookbase already has; send no secret (the API rejects one) — events are still verified. "none" — the vendor does not sign (or Hookbase cannot verify it); no secret needed. secretAfterRegistration=true means the vendor issues its secret only after the ingest URL is registered: create the source without one, then set it later (Notion's token is parked — see hookbase_get_source_pending_verification).
| Parameter | Type | Required | Description |
|---|---|---|---|
provider_id | string | Yes | Catalog provider id from hookbase_list_providers (e.g. "stripe", "github", "mollie-nextgen") |
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) |
throttle | object | No | Throttle configuration for outbound delivery rate limiting (requires a paid plan for modes other than "off"). Shape: { mode: "off" | "rate" | "concurrency", rateLimit?, rateUnit?: "second" | "minute" | "hour", maxConcurrency?, queueLimit? }. rateLimit+rateUnit are required when mode is "rate"; maxConcurrency is required when mode is "concurrency"; queueLimit is optional in either mode. |
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 (paid 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 |
throttle | object | No | Throttle configuration for outbound delivery rate limiting (requires a paid plan for modes other than "off"). Shape: { mode: "off" | "rate" | "concurrency", rateLimit?, rateUnit?: "second" | "minute" | "hour", maxConcurrency?, queueLimit? }. rateLimit+rateUnit are required when mode is "rate"; maxConcurrency is required when mode is "concurrency"; queueLimit is optional in either mode. |
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 (paid 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_tail_events
Poll for events newer than a previous call, for lightweight monitoring. Not a live stream (MCP tool calls are request/response, not push) - call it repeatedly, each time passing the newestReceivedAt from the prior response as since. Returns the most recent limit matching events at/after since, newest first; if more than limit new events arrived between polls, older ones within that window are omitted - poll more often or raise limit to avoid gaps. Omit since on the first call to get a starting snapshot.
| Parameter | Type | Required | Description |
|---|---|---|---|
source_id | string | No | Filter to events from this source only (source ID or slug) |
since | string | No | ISO 8601 timestamp - only return events received at or after this time. Pass the previous response's newestReceivedAt to continue tailing forward. Omit for an initial snapshot of the most recent events. |
limit | number | No | Maximum number of events to return (default 25, cap 100) |
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 |
use_static_ip | boolean | No | Egress this job from a dedicated static IP (paid plans) |
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 |
use_static_ip | boolean | No | Egress this job from a dedicated static IP (paid plans) |
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 |
API Pollers
hookbase_list_api_pollers
List all API pollers in the organization. Pollers make scheduled HTTP requests to a third-party API and re-emit new/changed items as inbound events.
Parameters: None
hookbase_get_api_poller
Get full details for a single API poller, including its schedule, target URL, response parsing config, and last-run status.
| Parameter | Type | Required | Description |
|---|---|---|---|
poller_id | string | Yes | API poller ID |
hookbase_create_api_poller
Create a new API poller. On each scheduled run it makes an HTTP request to url, extracts a list of items from the JSON response (response_path), and emits each new item as an event on source_id. Items are deduped across runs by id_field.
| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Display name for the poller |
source_id | string | Yes | ID of the source to emit polled items into. The source must be provider "custom" (or have no signing secret) since polled items are signed with a generic HMAC scheme. |
url | string | Yes | URL to poll |
cron_expression | string | Yes | Cron expression for the poll schedule (e.g., "*/15 * * * *" for every 15 minutes) |
description | string | No | Optional description |
http_method | GET | POST | PUT | No | HTTP method (default: GET) |
headers | object | No | Custom headers to include (e.g., an Authorization header) |
response_path | string | No | Dot path to the array of items within the JSON response body (e.g., "data.items"); omit if the response is itself the array |
id_field | string | No | Field on each item used to dedupe across runs (default: "id") |
event_type_field | string | No | Field on each item to use as the emitted event type; falls back to default_event_type when absent |
default_event_type | string | No | Event type to use when event_type_field is absent or unset on an item (default: "item.polled") |
timezone | string | No | Timezone for the cron schedule (default: UTC) |
is_active | boolean | No | Whether the poller runs on its schedule (default: true) |
hookbase_update_api_poller
Update an API poller. Pass only the fields you want to change.
| Parameter | Type | Required | Description |
|---|---|---|---|
poller_id | string | Yes | |
name | string | No | |
description | string | null | No | |
source_id | string | No | |
url | string | No | |
cron_expression | string | No | |
http_method | GET | POST | PUT | No | |
headers | object | null | No | |
response_path | string | null | No | |
id_field | string | No | |
event_type_field | string | null | No | |
default_event_type | string | No | |
timezone | string | No | |
is_active | boolean | No |
hookbase_delete_api_poller
Delete an API poller. Does not affect the source it fed or events it already emitted.
| Parameter | Type | Required | Description |
|---|---|---|---|
poller_id | string | Yes | The ID of the API poller to delete |
hookbase_trigger_api_poller
Manually run an API poller immediately, regardless of its schedule. Makes a real HTTP request to the poller's target URL and emits any new items as events; never delays or skips the next scheduled run.
| Parameter | Type | Required | Description |
|---|---|---|---|
poller_id | string | Yes | The ID of the API poller to trigger |
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: ["a@b.com", ...] } - 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 evaluated against the event payload at send time (max 1000 chars). The endpoint receives the event only when the result is truthy by JSONata's $boolean rules (false, 0, "", [] and a path that matches nothing mean skip). $eventType and $labels are bound. An expression that fails at send time counts as no match; one that doesn't compile is rejected when saved. See Filter Expressions. |
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 | ID of one of the org's transforms, applied to the payload before signing (Content-Type follows its output format). Inactive transforms are skipped; a transform that throws sends the message to the DLQ with reason transform_failed. See Subscription Transforms. |
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 JSONata filter expression, same semantics as hookbase_create_subscription (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, applied before signing (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 |
Public Event Catalog
hookbase_get_public_catalog
List an organization's published event types as they appear in the public event catalog. Defaults to your own organization — pass org_slug to preview another org's catalog. Only event types marked is_public and is_enabled (see hookbase_update_event_type) appear here.
| Parameter | Type | Required | Description |
|---|---|---|---|
org_slug | string | No | Organization slug to look up; defaults to your own organization |
hookbase_get_public_catalog_event_type
Get full published detail (schema + example payload) for one event type from the public event catalog. Defaults to your own organization — pass org_slug to look up another org's catalog.
| Parameter | Type | Required | Description |
|---|---|---|---|
event_type_name | string | Yes | The event type name, e.g. "order.created" |
org_slug | string | No | Organization slug to look up; defaults to your own organization |
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" |
Operational Webhooks
hookbase_list_operational_webhooks
List operational webhooks configured for a webhook application.
| Parameter | Type | Required | Description |
|---|---|---|---|
application_id | string | Yes | The webhook application ID |
hookbase_get_operational_webhook
Get details for a single operational webhook, including delivery counters and last error.
| Parameter | Type | Required | Description |
|---|---|---|---|
application_id | string | Yes | The webhook application ID |
webhook_id | string | Yes | The operational webhook ID |
hookbase_create_operational_webhook
Create an operational webhook for an application. Returns a whsec_-prefixed signing secret shown only once — save it immediately.
| Parameter | Type | Required | Description |
|---|---|---|---|
application_id | string | Yes | The webhook application ID |
url | string | Yes | URL to notify (HTTPS required, except localhost for development) |
description | string | No | |
on_message_exhausted | boolean | No | Notify when a message exhausts all delivery attempts (default: true) |
on_circuit_breaker_open | boolean | No | Notify when an endpoint's circuit breaker opens (default: true) |
on_circuit_breaker_close | boolean | No | Notify when an endpoint's circuit breaker closes (default: false) |
on_endpoint_disabled | boolean | No | Notify when an endpoint is disabled (default: true) |
on_endpoint_created | boolean | No | Notify when an endpoint is created (default: false) |
on_endpoint_updated | boolean | No | Notify when an endpoint is updated (default: false) |
on_endpoint_deleted | boolean | No | Notify when an endpoint is deleted (default: false) |
hookbase_update_operational_webhook
Update an operational webhook's URL, description, subscribed event flags, or enabled state. Pass only the fields you want to change.
| Parameter | Type | Required | Description |
|---|---|---|---|
application_id | string | Yes | The webhook application ID |
webhook_id | string | Yes | The operational webhook ID |
url | string | No | |
description | string | null | No | |
on_message_exhausted | boolean | No | |
on_circuit_breaker_open | boolean | No | |
on_circuit_breaker_close | boolean | No | |
on_endpoint_disabled | boolean | No | |
on_endpoint_created | boolean | No | |
on_endpoint_updated | boolean | No | |
on_endpoint_deleted | boolean | No | |
is_enabled | boolean | No |
hookbase_delete_operational_webhook
Delete an operational webhook. Does not affect the application's actual outbound endpoints or traffic.
| Parameter | Type | Required | Description |
|---|---|---|---|
application_id | string | Yes | The webhook application ID |
webhook_id | string | Yes | The operational webhook ID to delete |
hookbase_get_operational_webhook_logs
Get recent delivery logs for an operational webhook, for debugging why notifications aren't arriving.
| Parameter | Type | Required | Description |
|---|---|---|---|
application_id | string | Yes | The webhook application ID |
webhook_id | string | Yes | The operational webhook ID |
limit | number | No | Maximum number of log entries (default 50, max 100) |
hookbase_test_operational_webhook
Send a test event of every operational webhook type to verify connectivity and signature handling. Makes a real HTTP request to the configured URL for each type.
| Parameter | Type | Required | Description |
|---|---|---|---|
application_id | string | Yes | The webhook application ID |
webhook_id | string | Yes | The operational webhook ID to test |
hookbase_rotate_operational_webhook_secret
Rotate the signing secret for an operational webhook. Takes effect immediately (no grace period) — the new secret is returned once and must be saved.
| Parameter | Type | Required | Description |
|---|---|---|---|
application_id | string | Yes | The webhook application ID |
webhook_id | string | Yes | The operational webhook ID |
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 |
Signature Verification
hookbase_verify_signature
Check whether a webhook signature matches a payload and secret, using the same verification logic as inbound ingest signature checking. Useful for debugging a rejected webhook or validating a provider integration before wiring up a source. Read-only - makes no changes and does not require an existing source.
| Parameter | Type | Required | Description |
|---|---|---|---|
provider | string | Yes | Signature provider id, e.g. stripe, github, shopify, gitlab, paddle, square, linear |
payload | string | Yes | Raw request body exactly as received - the exact bytes/string the signature was computed over |
secret | string | Yes | Signing secret to verify against |
signature | string | Yes | Signature value to check, as received in the provider's signature header |
timestamp | number | No | Unix timestamp, for providers whose signature scheme includes one (e.g. Stripe) |