Send and debug webhooks — applications, endpoints, messages, delivery attempts and replays.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Create a new application (one tenant/customer of yours) in the Svix environment. Svix REST: POST /api/v1/app.
Human-readable application name.
Your own stable id for this application, unique per environment.
Arbitrary string key/value metadata.
Optional throttle rate, messages per second.
The server marks this tool as destructive. Running it may delete or overwrite data on the server or in any account you connected with your headers.
Create a new application (one tenant/customer of yours) in the Svix environment. Svix REST: POST /api/v1/app.
| Argument | Type | Description |
|---|---|---|
| uid | string | Your own stable id for this application, unique per environment. |
| name* | string | Human-readable application name. |
| metadata | object | Arbitrary string key/value metadata. |
| rate_limit | integer | Optional throttle rate, messages per second. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"name"
],
"properties": {
"uid": {
"type": "string",
"description": "Your own stable id for this application, unique per environment."
},
"name": {
"type": "string",
"description": "Human-readable application name."
},
"metadata": {
"type": "object",
"description": "Arbitrary string key/value metadata.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string"
}
},
"rate_limit": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Optional throttle rate, messages per second."
}
}
}Register a webhook endpoint URL for one application, optionally scoped to specific event types and channels. Svix REST: POST /api/v1/app/{app_id}/endpoint.
| Argument | Type | Description |
|---|---|---|
| uid | string | Your own stable id for this endpoint. |
| url* | string | The HTTPS URL Svix should deliver webhooks to. |
| app_id* | string | The application's Svix id or uid. |
| channels | array | Only deliver messages on these channels. |
| disabled | boolean | Create the endpoint in a disabled state. |
| description | string | Human-readable note about this endpoint. |
| event_types | array | Only deliver these event types. Omit to receive all of them. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"app_id",
"url"
],
"properties": {
"uid": {
"type": "string",
"description": "Your own stable id for this endpoint."
},
"url": {
"type": "string",
"description": "The HTTPS URL Svix should deliver webhooks to."
},
"app_id": {
"type": "string",
"description": "The application's Svix id or uid."
},
"channels": {
"type": "array",
"items": {
"type": "string"
},
"description": "Only deliver messages on these channels."
},
"disabled": {
"type": "boolean",
"description": "Create the endpoint in a disabled state."
},
"description": {
"type": "string",
"description": "Human-readable note about this endpoint."
},
"event_types": {
"type": "array",
"items": {
"type": "string"
},
"description": "Only deliver these event types. Omit to receive all of them."
}
}
}Fetch a single application by its Svix id or your own uid. Svix REST: GET /api/v1/app/{app_id}.
| Argument | Type | Description |
|---|---|---|
| app_id* | string | The application's Svix id (app_...) or your uid. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"app_id"
],
"properties": {
"app_id": {
"type": "string",
"description": "The application's Svix id (app_...) or your uid."
}
}
}Fetch a single webhook endpoint, including its URL, subscribed event types and channels. Svix REST: GET /api/v1/app/{app_id}/endpoint/{endpoint_id}.
| Argument | Type | Description |
|---|---|---|
| app_id* | string | The application's Svix id or uid. |
| endpoint_id* | string | The endpoint's Svix id (ep_...) or uid. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"app_id",
"endpoint_id"
],
"properties": {
"app_id": {
"type": "string",
"description": "The application's Svix id or uid."
},
"endpoint_id": {
"type": "string",
"description": "The endpoint's Svix id (ep_...) or uid."
}
}
}Read delivery statistics for one endpoint — counts of success, pending, sending and fail. The fastest way to see whether an endpoint is healthy. Svix REST: GET /api/v1/app/{app_id}/endpoint/{endpoint_id}/stats.
| Argument | Type | Description |
|---|---|---|
| since | string | ISO-8601 start of the window, e.g. 2026-08-01T00:00:00Z. |
| until | string | ISO-8601 end of the window. |
| app_id* | string | The application's Svix id or uid. |
| endpoint_id* | string | The endpoint's Svix id or uid. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"app_id",
"endpoint_id"
],
"properties": {
"since": {
"type": "string",
"description": "ISO-8601 start of the window, e.g. 2026-08-01T00:00:00Z."
},
"until": {
"type": "string",
"description": "ISO-8601 end of the window."
},
"app_id": {
"type": "string",
"description": "The application's Svix id or uid."
},
"endpoint_id": {
"type": "string",
"description": "The endpoint's Svix id or uid."
}
}
}Fetch a single event type by name, including its description and JSON schema. Svix REST: GET /api/v1/event-type/{event_type_name}.
| Argument | Type | Description |
|---|---|---|
| event_type_name* | string | The event type name, e.g. invoice.paid. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"event_type_name"
],
"properties": {
"event_type_name": {
"type": "string",
"description": "The event type name, e.g. invoice.paid."
}
}
}Fetch a single message, including its event type and payload. Svix REST: GET /api/v1/app/{app_id}/msg/{msg_id}.
| Argument | Type | Description |
|---|---|---|
| app_id* | string | The application's Svix id or uid. |
| msg_id* | string | The message's Svix id (msg_...) or your eventId. |
| with_content | boolean | Include the payload. Defaults to true. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"app_id",
"msg_id"
],
"properties": {
"app_id": {
"type": "string",
"description": "The application's Svix id or uid."
},
"msg_id": {
"type": "string",
"description": "The message's Svix id (msg_...) or your eventId."
},
"with_content": {
"type": "boolean",
"description": "Include the payload. Defaults to true."
}
}
}Check that the Svix API is reachable and the API key works. Returns 200 with an empty body when healthy. Svix REST: GET /api/v1/health.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}List the applications (your tenants/customers) in the Svix environment. Svix REST: GET /api/v1/app.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Page size, 1-250. Svix defaults to 50. |
| order | string | Sort order by creation time. |
| iterator | string | Cursor from the previous page's `iterator` field. Omit for the first page. |
| exclude_apps_with_no_endpoints | boolean | Skip applications that have no endpoints configured. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"limit": {
"type": "integer",
"maximum": 250,
"minimum": 1,
"description": "Page size, 1-250. Svix defaults to 50."
},
"order": {
"enum": [
"ascending",
"descending"
],
"type": "string",
"description": "Sort order by creation time."
},
"iterator": {
"type": "string",
"description": "Cursor from the previous page's `iterator` field. Omit for the first page."
},
"exclude_apps_with_no_endpoints": {
"type": "boolean",
"description": "Skip applications that have no endpoints configured."
}
}
}List delivery attempts against one endpoint, newest first. Filter by status to find the failures. Svix REST: GET /api/v1/app/{app_id}/attempt/endpoint/{endpoint_id}.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Page size, 1-250. Svix defaults to 50. |
| app_id* | string | The application's Svix id or uid. |
| status | integer | Filter by attempt status: 0 success, 1 pending, 2 fail, 3 sending. |
| iterator | string | Cursor from the previous page's `iterator` field. Omit for the first page. |
| endpoint_id* | string | The endpoint's Svix id or uid. |
| status_code_class | integer | Filter by response class: 0 any, 100, 200, 300, 400, 500. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"app_id",
"endpoint_id"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 250,
"minimum": 1,
"description": "Page size, 1-250. Svix defaults to 50."
},
"app_id": {
"type": "string",
"description": "The application's Svix id or uid."
},
"status": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Filter by attempt status: 0 success, 1 pending, 2 fail, 3 sending."
},
"iterator": {
"type": "string",
"description": "Cursor from the previous page's `iterator` field. Omit for the first page."
},
"endpoint_id": {
"type": "string",
"description": "The endpoint's Svix id or uid."
},
"status_code_class": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Filter by response class: 0 any, 100, 200, 300, 400, 500."
}
}
}List every delivery attempt Svix made for one message, across endpoints — status, response code and body. This is the tool for answering 'why did this webhook not arrive?'. Svix REST: GET /api/v1/app/{app_id}/attempt/msg/{msg_id}.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Page size, 1-250. Svix defaults to 50. |
| app_id* | string | The application's Svix id or uid. |
| msg_id* | string | The message's Svix id. |
| status | integer | Filter by attempt status: 0 success, 1 pending, 2 fail, 3 sending. |
| iterator | string | Cursor from the previous page's `iterator` field. Omit for the first page. |
| endpoint_id | string | Only attempts against this endpoint. |
| status_code_class | integer | Filter by response class: 0 any, 100, 200, 300, 400, 500. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"app_id",
"msg_id"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 250,
"minimum": 1,
"description": "Page size, 1-250. Svix defaults to 50."
},
"app_id": {
"type": "string",
"description": "The application's Svix id or uid."
},
"msg_id": {
"type": "string",
"description": "The message's Svix id."
},
"status": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Filter by attempt status: 0 success, 1 pending, 2 fail, 3 sending."
},
"iterator": {
"type": "string",
"description": "Cursor from the previous page's `iterator` field. Omit for the first page."
},
"endpoint_id": {
"type": "string",
"description": "Only attempts against this endpoint."
},
"status_code_class": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Filter by response class: 0 any, 100, 200, 300, 400, 500."
}
}
}List Svix background tasks (bulk replays, expunges, imports) with their status. Use it to follow up a recover or replay. Svix REST: GET /api/v1/background-task.
| Argument | Type | Description |
|---|---|---|
| task | string | Filter by task kind, e.g. endpoint.recover. |
| limit | integer | Page size, 1-250. Svix defaults to 50. |
| status | string | Filter by task status. |
| iterator | string | Cursor from the previous page's `iterator` field. Omit for the first page. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"task": {
"type": "string",
"description": "Filter by task kind, e.g. endpoint.recover."
},
"limit": {
"type": "integer",
"maximum": 250,
"minimum": 1,
"description": "Page size, 1-250. Svix defaults to 50."
},
"status": {
"enum": [
"running",
"finished",
"failed"
],
"type": "string",
"description": "Filter by task status."
},
"iterator": {
"type": "string",
"description": "Cursor from the previous page's `iterator` field. Omit for the first page."
}
}
}List the messages destined for one endpoint, with each message's delivery status. Svix REST: GET /api/v1/app/{app_id}/endpoint/{endpoint_id}/msg.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Page size, 1-250. Svix defaults to 50. |
| app_id* | string | The application's Svix id or uid. |
| iterator | string | Cursor from the previous page's `iterator` field. Omit for the first page. |
| endpoint_id* | string | The endpoint's Svix id or uid. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"app_id",
"endpoint_id"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 250,
"minimum": 1,
"description": "Page size, 1-250. Svix defaults to 50."
},
"app_id": {
"type": "string",
"description": "The application's Svix id or uid."
},
"iterator": {
"type": "string",
"description": "Cursor from the previous page's `iterator` field. Omit for the first page."
},
"endpoint_id": {
"type": "string",
"description": "The endpoint's Svix id or uid."
}
}
}List the webhook endpoints registered for one application. Svix REST: GET /api/v1/app/{app_id}/endpoint.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Page size, 1-250. Svix defaults to 50. |
| order | string | Sort order by creation time. |
| app_id* | string | The application's Svix id or uid. |
| iterator | string | Cursor from the previous page's `iterator` field. Omit for the first page. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"app_id"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 250,
"minimum": 1,
"description": "Page size, 1-250. Svix defaults to 50."
},
"order": {
"enum": [
"ascending",
"descending"
],
"type": "string",
"description": "Sort order by creation time."
},
"app_id": {
"type": "string",
"description": "The application's Svix id or uid."
},
"iterator": {
"type": "string",
"description": "Cursor from the previous page's `iterator` field. Omit for the first page."
}
}
}List the event types defined in the environment — the catalogue endpoints can subscribe to. Svix REST: GET /api/v1/event-type.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Page size, 1-250. Svix defaults to 50. |
| iterator | string | Cursor from the previous page's `iterator` field. Omit for the first page. |
| with_content | boolean | Include each event type's JSON schema. |
| include_archived | boolean | Also return archived (deprecated) event types. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"limit": {
"type": "integer",
"maximum": 250,
"minimum": 1,
"description": "Page size, 1-250. Svix defaults to 50."
},
"iterator": {
"type": "string",
"description": "Cursor from the previous page's `iterator` field. Omit for the first page."
},
"with_content": {
"type": "boolean",
"description": "Include each event type's JSON schema."
},
"include_archived": {
"type": "boolean",
"description": "Also return archived (deprecated) event types."
}
}
}List the webhook messages sent for one application, newest first. Filter by event type, channel, tag or time window. Svix REST: GET /api/v1/app/{app_id}/msg.
| Argument | Type | Description |
|---|---|---|
| tag | string | Only messages carrying this tag. |
| after | string | ISO-8601 lower bound on message time. |
| limit | integer | Page size, 1-250. Svix defaults to 50. |
| app_id* | string | The application's Svix id or uid. |
| before | string | ISO-8601 upper bound on message time. |
| channel | string | Only messages on this channel. |
| iterator | string | Cursor from the previous page's `iterator` field. Omit for the first page. |
| event_types | array | Only messages of these event types, e.g. ["invoice.paid"]. |
| with_content | boolean | Include each message's payload. Defaults to true. |
Replay every failed message for one endpoint since a timestamp. Runs as a background task — follow it with svix_list_background_tasks. Svix REST: POST /api/v1/app/{app_id}/endpoint/{endpoint_id}/recover.
| Argument | Type | Description |
|---|---|---|
| since* | string | ISO-8601 start of the replay window, e.g. 2026-08-01T00:00:00Z. |
| until | string | ISO-8601 end of the replay window. Defaults to now. |
| app_id* | string | The application's Svix id or uid. |
| endpoint_id* | string | The endpoint to recover. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"app_id",
"endpoint_id",
"since"
],
"properties": {
"since": {
"type": "string",
"description": "ISO-8601 start of the replay window, e.g. 2026-08-01T00:00:00Z."
},
"until": {
"type": "string",
"description": "ISO-8601 end of the replay window. Defaults to now."
},
"app_id": {
"type": "string",
"description": "The application's Svix id or uid."
},
"endpoint_id": {
"type": "string",
"description": "The endpoint to recover."
}
}
}Queue one message for redelivery to one endpoint. The usual fix after a customer's endpoint was down. Svix REST: POST /api/v1/app/{app_id}/msg/{msg_id}/endpoint/{endpoint_id}/resend.
| Argument | Type | Description |
|---|---|---|
| app_id* | string | The application's Svix id or uid. |
| msg_id* | string | The message's Svix id. |
| endpoint_id* | string | The endpoint to redeliver to. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"app_id",
"msg_id",
"endpoint_id"
],
"properties": {
"app_id": {
"type": "string",
"description": "The application's Svix id or uid."
},
"msg_id": {
"type": "string",
"description": "The message's Svix id."
},
"endpoint_id": {
"type": "string",
"description": "The endpoint to redeliver to."
}
}
}Send a webhook message to every endpoint of an application subscribed to the event type. This delivers real traffic to your customers' URLs. Svix REST: POST /api/v1/app/{app_id}/msg.
| Argument | Type | Description |
|---|---|---|
| tags | array | Tags for later filtering. |
| app_id* | string | The application's Svix id or uid. |
| payload* | object | The JSON body delivered to the endpoints. |
| channels | array | Restrict delivery to endpoints on these channels. |
| event_id | string | Your own idempotency id for this message. |
| event_type* | string | The event type name, e.g. invoice.paid. Must already exist. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"app_id",
"event_type",
"payload"
],
"properties": {
"tags": {
"type": "array",
"items": {
"type": "string"
},
"description": "Tags for later filtering."
},
"app_id": {
"type": "string",
"description": "The application's Svix id or uid."
},
"payload": {
"type": "object",
"description": "The JSON body delivered to the endpoints.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"channels": {
"type": "array",
"items": {
"type": "string"
},
"description": "Restrict delivery to endpoints on these channels."
},
"event_id": {
"type": "string",
"description": "Your own idempotency id for this message."
},
"event_type": {
"type": "string",
"description": "The event type name, e.g. invoice.paid. Must already exist."
}
}
}{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"app_id"
],
"properties": {
"tag": {
"type": "string",
"description": "Only messages carrying this tag."
},
"after": {
"type": "string",
"description": "ISO-8601 lower bound on message time."
},
"limit": {
"type": "integer",
"maximum": 250,
"minimum": 1,
"description": "Page size, 1-250. Svix defaults to 50."
},
"app_id": {
"type": "string",
"description": "The application's Svix id or uid."
},
"before": {
"type": "string",
"description": "ISO-8601 upper bound on message time."
},
"channel": {
"type": "string",
"description": "Only messages on this channel."
},
"iterator": {
"type": "string",
"description": "Cursor from the previous page's `iterator` field. Omit for the first page."
},
"event_types": {
"type": "array",
"items": {
"type": "string"
},
"description": "Only messages of these event types, e.g. [\"invoice.paid\"]."
},
"with_content": {
"type": "boolean",
"description": "Include each message's payload. Defaults to true."
}
}
}