svix

Send and debug webhooks — applications, endpoints, messages, delivery attempts and replays.

Should I use this

Quality & Safety

A
Description quality
98%
Schema completeness
95%
Naming quality
80%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (1)

  • LOWTool 'svix_create_endpoint' description lacks action verbin svix_create_endpoint

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~3,731Tokens (tool definitions)
~1.5 KBTypical response size
Significant attention impact (2.91% of 128k context)

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-http

What it can do

Tool inventory

Tools (19)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢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

Rate this Server

Evidence

Recent observations

verifiedversion not recorded19 tools