Connect webhook senders and AI clients to the systems your team already runs. Verify and route events, deliver files, or expose selected APIs as authenticated MCP tools.
Choose paths such as /services/mcp and /utilities/mcp. Start each catalogue from the authenticated template: get_service_status calls an HTTP API, while format_greeting uses a native transform. Each call runs only its selected branch. Configure API keys or external-provider OAuth; upstream credentials stay separate.
Serve AI and API clients
Wake agents with business events
An issue webhook reaches a matching subscription. The agent wakes and calls get_issue for the details.
WorkflowHookway
The event starts the workflow; the tool retrieves the details. Requires a client that supports MCP Events.
Create a validated issue.opened event from a verified webhook. Hookway stores matching deliveries in PostgreSQL and sends signed callbacks to authenticated subscribers. A client that supports MCP Events can start an agent turn and call the permitted get_issue tool. Delivery is at least once and unordered, with no historical catch-up. Inspect attempts, retry eligible failures, or revoke a subscription in the console. The self-contained demo uses a disposable OAuth provider and fixture API.
Serve AI and API clients
Handle HTTP requests as a synchronous reverse proxy
Call an API and return its HTTP status and response body to the original caller on the same connection.
WorkflowHookway
The response returns to the original caller on the same connection.
Choose which errors should notify your team with Sentry alert rules. Hookway verifies the signature, filters issue alerts and formats a readable Discord message. The YAML example resolves project names from Sentry event URLs and uses the message or exception when the title is missing. Mentions are disabled. Delivery retries transient failures, using an in-memory queue that can lose pending messages on restart.
Route and deliver events
Fan out one verified event to several backends
Verify an event once, then send it to several destinations, such as an archive and a work queue.
WorkflowHookway
Declare destinations once, then reference them from separate publish branches.
Declare destinations once and reference them from publish nodes. stop_on_failure publishes in order; skip_failed runs direct publish branches concurrently. Dedupe sender retries with a stable sender event ID; a new request receives a new envelope ID.
Route and deliver events
Route each environment to its own queue
Check that the requested environment is allowed, then send the event to its SQS queue.
WorkflowHookway
Only admitted environments reach a queue. Unknown or unresolved targets fail closed.
The route node selects an environment from the parsed body, query, or headers and checks it against the configured routing profile. A dedicated flow pins its environment. The example requires each queue to exist; unknown, unsafe, or unresolved targets fail closed.
Route and deliver events
Branch on payload shape before delivery
Filter out unwanted events or choose a delivery path based on fields such as event type or order status.
WorkflowHookway
Filters stop unwanted events; if / else and switch select between delivery paths.
filter stops a branch, if/else splits two outcomes, and switch picks the first matching port. Conditions can read headers or dotted body paths after JSON or XML parse.
Route and deliver events
Hand verified events to Redis Streams
Append each envelope to a Redis or Valkey stream for workers to consume with XREADGROUP.
WorkflowHookway
Hookway appends events. Your workers own consumer groups and retention.
Hookway writes with XADD; configure Redis persistence and replication for durability. Your consumers own group creation and retention. Choose a list for a simpler work queue or Pub/Sub only when occasional loss is acceptable.
Work with the payload
Store upload attachments in S3, metadata elsewhere
Store files from a webhook upload in S3 and send the accompanying form fields to a queue.
WorkflowHookway
The S3 branch receives decoded file bytes. The queue receives fields and metadata.
Parse multipart/form-data into fields and files, reshape each branch with a code node, then publish.payload: object to S3 and an envelope to RabbitMQ (or any other destination). The S3 key includes a sanitized vendor filename, and PutObject uses the vendor Content-Type.
Work with the payload
Prune XML and forward the transformed document
Verify the sender’s signature, remove unwanted XML elements, and forward the cleaned document to an API.
WorkflowHookway
Verify the raw request first. Forward the transformed document as XML.
body_format: xml keeps attributes and repeated siblings addressable. xml_prune applies fixed rules; http_request can send body: transformed with the pruned document.
Work with the payload
Spot-check webhooks while delivering every event
Capture a sample of incoming webhook bodies and context for your team to inspect.
WorkflowHookway
The example samples about 5% for inspection. Publish still receives every event.
Sample → Inspect runs on a separate observation branch while Publish receives every event. The example samples about 5%. Inspections are view only; uploads are best effort and share replay retention and storage limits.
Run Hookway locally
Clone the repo and start the example stack. No hosted account required.