Railhook

Official registry AI and agents

Webhooks for AI agents: send events, manage endpoints, inspect and retry deliveries.

What can you do with Railhook?

  • Sends each event to every endpoint subscribed to its type. The event is stored in the same
  • Retries a failed delivery after 1m, 5m, 15m, 1h, 6h and 24h (7 attempts). What still fails
  • Signs every request with HMAC-SHA256 in Standard Webhooks
  • Deduplicates on Idempotency-Key: a repeated key returns the first event instead of a new one.
  • Optional per-endpoint ordering, rate limits and a circuit breaker.
  • Customer portal: embed a page where your customers add endpoints, pick event types, and see and
  • Replay: resend one delivery, or replay a time range of events as new deliveries.
  • Incoming webhooks: one URL per source, signature verified (Stripe, GitHub, GitLab, Shopify,

Install

Add this to your client's MCP configuration (Claude Desktop: claude_desktop_config.json; Cursor: .cursor/mcp.json; VS Code and others use the same "mcpServers" shape).

Remote (streamable-http)
Claude Code
claude mcp add --transport http railhook 'https://railhook.io/mcp'
JSON configuration (Claude Desktop, Cursor, VS Code)
{
    "mcpServers": {
        "railhook": {
            "type": "http",
            "url": "https://railhook.io/mcp"
        }
    }
}
NPM package @railhook/mcp
Claude Code
claude mcp add railhook -e 'RAILHOOK_API_KEY=<your railhook_api_key>' -e 'RAILHOOK_BASE_URL=<RAILHOOK_BASE_URL>' -- npx -y @railhook/mcp@3.7.0
JSON configuration (Claude Desktop, Cursor, VS Code)
{
    "mcpServers": {
        "railhook": {
            "command": "npx",
            "args": [
                "-y",
                "@railhook/mcp@3.7.0"
            ],
            "env": {
                "RAILHOOK_API_KEY": "<your railhook_api_key>",
                "RAILHOOK_BASE_URL": "<RAILHOOK_BASE_URL>"
            }
        }
    }
}

Environment variables

  • RAILHOOK_API_KEY required secret A Railhook project API key. A READ_ONLY key is enough to explore.
  • RAILHOOK_BASE_URL Your Railhook origin when self-hosted. Defaults to https://railhook.io.

Documentation

From the project's README on GitHub, refreshed weekly. Links open on GitHub.

Contents
  1. Install
  2. Send an event
  3. What it does
  4. Docs
  5. License

Open-source webhook gateway. Send webhooks to your customers and receive them from Stripe, GitHub and others, with retries, signatures and a record of every attempt. Self-hosted or in Railhook Cloud.

Website · Docs · API reference · Railhook Cloud · Changelog

Install

Locally, with Docker:

git clone https://github.com/vadymkykalo/railhook && cd railhook
make up

Then open http://localhost:8080. make up writes a .env with development secrets, builds the images and starts PostgreSQL, Redis, the API, the worker and the dashboard.

On a server with a domain (HTTPS through Let's Encrypt):

curl -fsSL https://railhook.io/install.sh | bash -s -- --domain hooks.example.com --email ops@example.com

It generates the secrets, pulls the latest release and adds ./railhook for status, logs, upgrade and backup. About 3 GiB of RAM. Plain Compose and Helm: Install with Docker, Kubernetes.

Send an event

Create a project, an endpoint and an API key in the dashboard, then:

curl -X POST http://localhost:8080/api/v1/events \
  -H "X-API-Key: $RAILHOOK_API_KEY" \
  -H "Idempotency-Key: order-12345-completed" \
  -H "Content-Type: application/json" \
  -d '{"type":"order.completed","data":{"orderId":"ord_12345"}}'

Railhook signs it and delivers it to every endpoint subscribed to order.completed.

What it does

  • Sends each event to every endpoint subscribed to its type. The event is stored in the same transaction as the API call; the worker claims it from Postgres and delivers it.
  • Retries a failed delivery after 1m, 5m, 15m, 1h, 6h and 24h (7 attempts). What still fails goes to Failed Messages for bulk retry.
  • Signs every request with HMAC-SHA256 in Standard Webhooks headers. A rotated secret keeps signing alongside the new one for 24 hours.
  • Deduplicates on Idempotency-Key: a repeated key returns the first event instead of a new one.
  • Optional per-endpoint ordering, rate limits and a circuit breaker.
  • Customer portal: embed a page where your customers add endpoints, pick event types, and see and retry their deliveries.
  • Replay: resend one delivery, or replay a time range of events as new deliveries.
  • Incoming webhooks: one URL per source, signature verified (Stripe, GitHub, GitLab, Shopify, Slack, Twilio, Square, Adyen, SendGrid, HubSpot, or generic HMAC), raw request stored, then forwarded to your destinations with retries after 1m, 5m, 15m and 1h (5 attempts). A missing provider is one class to add: see Adding an inbound provider.
  • Every attempt is recorded with its request, response and timing.
  • SDKs for Node, Python and PHP, a CLI that tunnels webhooks to localhost, and an MCP server at /mcp.
  • Prometheus metrics, Grafana dashboards and alert rules in monitoring/, and a Helm chart.

Docs

License

MIT. Self-hosted has every feature, with no licence key. Third-party notices: NOTICE, docs/licenses/.

Frequently asked questions

What is Railhook?

Webhooks for AI agents: send events, manage endpoints, inspect and retry deliveries.

How do I install Railhook?

It runs as a remote server. In Claude Code: claude mcp add --transport http railhook 'https://railhook.io/mcp'. For other clients, paste the JSON configuration from this page into their MCP settings.

Does Railhook need an API key?

Yes. It expects RAILHOOK_API_KEY, which you set in its configuration.

Is Railhook open source?

Yes. Its code is on GitHub under the MIT license.

Who maintains Railhook?

It is published by vadymkykalo. AI.tn lists it but does not maintain or endorse it.

From the official MCP Registry. Listing is not an endorsement: review a server's code and permissions before giving it access to your data.