svix
Send and debug webhooks — applications, endpoints, messages, delivery attempts and replays.
Should I use this
Quality & Safety
Findings (1)
- LOWin svix_create_endpoint
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"svix": {
"url": "https://svix.usefulapi.io/mcp"
}
}
}Remote endpoints
https://svix.usefulapi.io/mcpstreamable-httpWhat it can do
Tool inventory
Tools (19)
🟢svix_list_applications(limit, iterator, order, exclude_apps_with_no_endpoints)
List the applications (your tenants/customers) in the Svix environment. Svix REST: GET /api/v1/app.
Input Schema
{
"type": "object",
"properties": {
"limit": {
"description": "Page size, 1-250. Svix defaults to 50.",
"type": "integer",
"minimum": 1,
"maximum": 250
},
"iterator": {
"description": "Cursor from the previous page's `iterator` field. Omit for the first page.",
"type": "string"
},
"order": {
"description": "Sort order by creation time.",
"type": "string",
"enum": [
"ascending",
"descending"
]
},
"exclude_apps_with_no_endpoints": {
"description": "Skip applications that have no endpoints configured.",
"type": "boolean"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢svix_get_application(app_id)
Fetch a single application by its Svix id or your own uid. Svix REST: GET /api/v1/app/{app_id}.
Input Schema
{
"type": "object",
"properties": {
"app_id": {
"type": "string",
"description": "The application's Svix id (app_...) or your uid."
}
},
"required": [
"app_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢svix_list_endpoints(app_id, limit, iterator, order)
List the webhook endpoints registered for one application. Svix REST: GET /api/v1/app/{app_id}/endpoint.
Input Schema
{
"type": "object",
"properties": {
"app_id": {
"type": "string",
"description": "The application's Svix id or uid."
},
"limit": {
"description": "Page size, 1-250. Svix defaults to 50.",
"type": "integer",
"minimum": 1,
"maximum": 250
},
"iterator": {
"description": "Cursor from the previous page's `iterator` field. Omit for the first page.",
"type": "string"
},
"order": {
"description": "Sort order by creation time.",
"type": "string",
"enum": [
"ascending",
"descending"
]
}
},
"required": [
"app_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢svix_get_endpoint(app_id, endpoint_id)
Fetch a single webhook endpoint, including its URL, subscribed event types and channels. Svix REST: GET /api/v1/app/{app_id}/endpoint/{endpoint_id}.
Input Schema
{
"type": "object",
"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."
}
},
"required": [
"app_id",
"endpoint_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢svix_get_endpoint_stats(app_id, endpoint_id, since, until)
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.
Input Schema
{
"type": "object",
"properties": {
"app_id": {
"type": "string",
"description": "The application's Svix id or uid."
},
"endpoint_id": {
"type": "string",
"description": "The endpoint's Svix id or uid."
},
"since": {
"description": "ISO-8601 start of the window, e.g. 2026-08-01T00:00:00Z.",
"type": "string"
},
"until": {
"description": "ISO-8601 end of the window.",
"type": "string"
}
},
"required": [
"app_id",
"endpoint_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢svix_list_messages(app_id, limit, iterator, event_types, channel, ...)
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.
Input Schema
{
"type": "object",
"properties": {
"app_id": {
"type": "string",
"description": "The application's Svix id or uid."
},
"limit": {
"description": "Page size, 1-250. Svix defaults to 50.",
"type": "integer",
"minimum": 1,
"maximum": 250
},
"iterator": {
"description": "Cursor from the previous page's `iterator` field. Omit for the first page.",
"type": "string"
},
"event_types": {
"description": "Only messages of these event types, e.g. [\"invoice.paid\"].",
"type": "array",
"items": {
"type": "string"
}
},
"channel": {
"description": "Only messages on this channel.",
"type": "string"
},
"tag": {
"description": "Only messages carrying this tag.",
"type": "string"
},
"before": {
"description": "ISO-8601 upper bound on message time.",
"type": "string"
},
"after": {
"description": "ISO-8601 lower bound on message time.",
"type": "string"
},
"with_content": {
"description": "Include each message's payload. Defaults to true.",
"type": "boolean"
}
},
"required": [
"app_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢svix_get_message(app_id, msg_id, with_content)
Fetch a single message, including its event type and payload. Svix REST: GET /api/v1/app/{app_id}/msg/{msg_id}.
Input Schema
{
"type": "object",
"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": {
"description": "Include the payload. Defaults to true.",
"type": "boolean"
}
},
"required": [
"app_id",
"msg_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢svix_list_attempts_by_message(app_id, msg_id, limit, iterator, status, ...)
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}.
Input Schema
{
"type": "object",
"properties": {
"app_id": {
"type": "string",
"description": "The application's Svix id or uid."
},
"msg_id": {
"type": "string",
"description": "The message's Svix id."
},
"limit": {
"description": "Page size, 1-250. Svix defaults to 50.",
"type": "integer",
"minimum": 1,
"maximum": 250
},
"iterator": {
"description": "Cursor from the previous page's `iterator` field. Omit for the first page.",
"type": "string"
},
"status": {
"description": "Filter by attempt status: 0 success, 1 pending, 2 fail, 3 sending.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"status_code_class": {
"description": "Filter by response class: 0 any, 100, 200, 300, 400, 500.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"endpoint_id": {
"description": "Only attempts against this endpoint.",
"type": "string"
}
},
"required": [
"app_id",
"msg_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢svix_list_attempts_by_endpoint(app_id, endpoint_id, limit, iterator, status, ...)
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}.
Input Schema
{
"type": "object",
"properties": {
"app_id": {
"type": "string",
"description": "The application's Svix id or uid."
},
"endpoint_id": {
"type": "string",
"description": "The endpoint's Svix id or uid."
},
"limit": {
"description": "Page size, 1-250. Svix defaults to 50.",
"type": "integer",
"minimum": 1,
"maximum": 250
},
"iterator": {
"description": "Cursor from the previous page's `iterator` field. Omit for the first page.",
"type": "string"
},
"status": {
"description": "Filter by attempt status: 0 success, 1 pending, 2 fail, 3 sending.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"status_code_class": {
"description": "Filter by response class: 0 any, 100, 200, 300, 400, 500.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
}
},
"required": [
"app_id",
"endpoint_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢svix_list_endpoint_messages(app_id, endpoint_id, limit, iterator)
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.
Input Schema
{
"type": "object",
"properties": {
"app_id": {
"type": "string",
"description": "The application's Svix id or uid."
},
"endpoint_id": {
"type": "string",
"description": "The endpoint's Svix id or uid."
},
"limit": {
"description": "Page size, 1-250. Svix defaults to 50.",
"type": "integer",
"minimum": 1,
"maximum": 250
},
"iterator": {
"description": "Cursor from the previous page's `iterator` field. Omit for the first page.",
"type": "string"
}
},
"required": [
"app_id",
"endpoint_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢svix_list_event_types(limit, iterator, include_archived, with_content)
List the event types defined in the environment — the catalogue endpoints can subscribe to. Svix REST: GET /api/v1/event-type.
Input Schema
{
"type": "object",
"properties": {
"limit": {
"description": "Page size, 1-250. Svix defaults to 50.",
"type": "integer",
"minimum": 1,
"maximum": 250
},
"iterator": {
"description": "Cursor from the previous page's `iterator` field. Omit for the first page.",
"type": "string"
},
"include_archived": {
"description": "Also return archived (deprecated) event types.",
"type": "boolean"
},
"with_content": {
"description": "Include each event type's JSON schema.",
"type": "boolean"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢svix_get_event_type(event_type_name)
Fetch a single event type by name, including its description and JSON schema. Svix REST: GET /api/v1/event-type/{event_type_name}.
Input Schema
{
"type": "object",
"properties": {
"event_type_name": {
"type": "string",
"description": "The event type name, e.g. invoice.paid."
}
},
"required": [
"event_type_name"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢svix_list_background_tasks(limit, iterator, status, task)
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.
Input Schema
{
"type": "object",
"properties": {
"limit": {
"description": "Page size, 1-250. Svix defaults to 50.",
"type": "integer",
"minimum": 1,
"maximum": 250
},
"iterator": {
"description": "Cursor from the previous page's `iterator` field. Omit for the first page.",
"type": "string"
},
"status": {
"description": "Filter by task status.",
"type": "string",
"enum": [
"running",
"finished",
"failed"
]
},
"task": {
"description": "Filter by task kind, e.g. endpoint.recover.",
"type": "string"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢svix_health
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.
Input Schema
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴svix_create_application(name, uid, rate_limit, metadata)
Create a new application (one tenant/customer of yours) in the Svix environment. Svix REST: POST /api/v1/app.
Input Schema
{
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Human-readable application name."
},
"uid": {
"description": "Your own stable id for this application, unique per environment.",
"type": "string"
},
"rate_limit": {
"description": "Optional throttle rate, messages per second.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"metadata": {
"description": "Arbitrary string key/value metadata.",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string"
}
}
},
"required": [
"name"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴svix_create_endpoint(app_id, url, description, uid, event_types, ...)
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.
Input Schema
{
"type": "object",
"properties": {
"app_id": {
"type": "string",
"description": "The application's Svix id or uid."
},
"url": {
"type": "string",
"description": "The HTTPS URL Svix should deliver webhooks to."
},
"description": {
"description": "Human-readable note about this endpoint.",
"type": "string"
},
"uid": {
"description": "Your own stable id for this endpoint.",
"type": "string"
},
"event_types": {
"description": "Only deliver these event types. Omit to receive all of them.",
"type": "array",
"items": {
"type": "string"
}
},
"channels": {
"description": "Only deliver messages on these channels.",
"type": "array",
"items": {
"type": "string"
}
},
"disabled": {
"description": "Create the endpoint in a disabled state.",
"type": "boolean"
}
},
"required": [
"app_id",
"url"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴svix_send_message(app_id, event_type, payload, event_id, channels, ...)
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.
Input Schema
{
"type": "object",
"properties": {
"app_id": {
"type": "string",
"description": "The application's Svix id or uid."
},
"event_type": {
"type": "string",
"description": "The event type name, e.g. invoice.paid. Must already exist."
},
"payload": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {},
"description": "The JSON body delivered to the endpoints."
},
"event_id": {
"description": "Your own idempotency id for this message.",
"type": "string"
},
"channels": {
"description": "Restrict delivery to endpoints on these channels.",
"type": "array",
"items": {
"type": "string"
}
},
"tags": {
"description": "Tags for later filtering.",
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"app_id",
"event_type",
"payload"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴svix_resend_message(app_id, msg_id, endpoint_id)
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.
Input Schema
{
"type": "object",
"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."
}
},
"required": [
"app_id",
"msg_id",
"endpoint_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴svix_recover_endpoint(app_id, endpoint_id, since, until)
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.
Input Schema
{
"type": "object",
"properties": {
"app_id": {
"type": "string",
"description": "The application's Svix id or uid."
},
"endpoint_id": {
"type": "string",
"description": "The endpoint to recover."
},
"since": {
"type": "string",
"description": "ISO-8601 start of the replay window, e.g. 2026-08-01T00:00:00Z."
},
"until": {
"description": "ISO-8601 end of the replay window. Defaults to now.",
"type": "string"
}
},
"required": [
"app_id",
"endpoint_id",
"since"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Community
Evidence