Svix MCP by usefulapi
Server Details
Send and debug webhooks — applications, endpoints, messages, delivery attempts and replays.
- Status
- Healthy
- Uptime
- 49.5% over 21 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
- Repository
- m190/usefulapi-mcp
- GitHub Stars
- 0
TDQS
Scored across 19 tools
Each tool targets a distinct resource/action pair (applications, endpoints, event types, messages, attempts, background tasks). Overlaps like list_messages vs list_endpoint_messages are clarified by scope in the descriptions. No ambiguous duplicates.
All tools use the svix_ prefix and consistent snake_case verb_noun pattern (create/get/list/send/resend/recover). Minor 'health' noun is conventional and clear.
19 tools cover the webhook service surface; slightly above the 3-15 typical range but each tool maps to a distinct operation. Not bloated, but could be trimmed with fewer list variants.
Core delivery lifecycle is covered (create app/endpoint, send message, inspect attempts, resend/recover). However, there are no update/delete tools for applications or endpoints, and event types cannot be created or modified—a notable gap for full webhook configuration.
Available Tools
19 toolssvix_create_applicationCreate an applicationBDestructiveInspect
Create a new application (one tenant/customer of yours) in the Svix environment. Svix REST: POST /api/v1/app.
| Name | Required | Description | Default |
|---|---|---|---|
| uid | No | Your own stable id for this application, unique per environment. | |
| name | Yes | Human-readable application name. | |
| metadata | No | Arbitrary string key/value metadata. | |
| rate_limit | No | Optional throttle rate, messages per second. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only give destructiveHint=true, which is an unusual flag for a create and is not explained or contradicted by the description. The description adds the REST endpoint mapping and the tenant/customer framing, but says nothing about auth requirements, uniqueness collisions on uid, or what the response contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, with the core purpose front-loaded and the REST mapping trailing as supporting detail. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a create tool with a nested metadata object, no output schema, and an unexplained destructiveHint, the description leaves gaps: what the call returns, how uid collisions behave, and whether rate_limit is applied immediately are all unaddressed. Adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter (uid, name, metadata, rate_limit) is already documented in the schema, including the per-environment uniqueness of uid. The description adds no additional parameter semantics, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Create a new application') and adds useful domain meaning — an application is 'one tenant/customer of yours' — plus the underlying REST call. It is clearly distinguishable from the get_/list_ siblings, though it never names them explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description says what the tool does but never when to reach for it versus alternatives such as svix_list_applications (to check for an existing tenant) or svix_create_endpoint (to wire the app up). No prerequisites, no idempotency/uniqueness guidance, no mention of what to do if the uid already exists.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
svix_create_endpointCreate an endpointBDestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| uid | No | Your own stable id for this endpoint. | |
| url | Yes | The HTTPS URL Svix should deliver webhooks to. | |
| app_id | Yes | The application's Svix id or uid. | |
| channels | No | Only deliver messages on these channels. | |
| disabled | No | Create the endpoint in a disabled state. | |
| description | No | Human-readable note about this endpoint. | |
| event_types | No | Only deliver these event types. Omit to receive all of them. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, so the safety profile is partly covered by structured data. The description adds real context — one application per call, optional event-type/channel narrowing, and the underlying REST verb/path — but says nothing about auth requirements, idempotency/duplicate-URL behavior, or what happens to an existing endpoint at the same URL.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences: purpose and scoping first, REST route second. No filler, and the most decision-relevant information (what is created, for which app, with what scope) is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Seven parameters and no output schema, so the description carries more burden than it meets — notably it omits that creating an endpoint yields a signing secret the caller must retain, and gives no guidance on the disabled-first pattern. It covers the create action adequately but leaves the agent without the post-call essentials.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and every parameter (uid, url, app_id, channels, disabled, description, event_types) is documented in the schema itself. The description only restates the event-types and channels scoping already present there, adding no syntax, format, or constraint detail beyond it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb (Register), the resource (a webhook endpoint URL), and the scope (one application, optionally narrowed by event types and channels). The verb+resource pair is unambiguous against siblings like svix_get_endpoint or svix_list_endpoints, though no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description says what gets registered but never states when to reach for this tool versus svix_get_endpoint, svix_list_endpoints, or svix_recover_endpoint, nor any prerequisite such as the application needing to exist first. Usage is only inferable from the resource name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
svix_get_applicationGet one applicationARead-onlyInspect
Fetch a single application by its Svix id or your own uid. Svix REST: GET /api/v1/app/{app_id}.
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | The application's Svix id (app_...) or your uid. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds the underlying REST route (GET /api/v1/app/{app_id}), which is mildly useful for debugging, but it discloses nothing about error behavior, auth requirements, or return shape.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the core action and zero filler. Every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter read tool with annotations covering safety and a fully documented schema, the description supplies enough to call it correctly. It could note what the returned application contains, but with no output schema that omission is acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the single app_id parameter is fully documented in the schema. The description only repeats the same id-or-uid duality, adding no syntax, format, or constraint beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (fetch) and resource (a single application), and the word 'single' distinguishes it implicitly from the sibling svix_list_applications. An agent can tell what this does without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use or when-not-to-use guidance and no named alternative (e.g., svix_list_applications for multiple results). Usage is only implied by the word 'single', which is minimal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
svix_get_endpointGet one endpointARead-onlyInspect
Fetch a single webhook endpoint, including its URL, subscribed event types and channels. Svix REST: GET /api/v1/app/{app_id}/endpoint/{endpoint_id}.
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | The application's Svix id or uid. | |
| endpoint_id | Yes | The endpoint's Svix id (ep_...) or uid. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already tells the agent this is a safe read, so the bar is lower. The description adds genuine value by disclosing what the response contains (URL, event types, channels) and the underlying REST route, which matters because there is no output schema. It stops short of noting failure modes (e.g. unknown endpoint id) or auth requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the payload summary and followed by the REST mapping; no filler. The GET path is slightly redundant for an agent that only needs the tool contract, but it is compact and useful for API-literate callers.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-required-param read with full schema coverage and a readOnly annotation, the definition covers purpose, return contents and endpoint binding. The only missing piece is error/empty behavior, which is minor given the tool's simplicity and lack of an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both app_id and endpoint_id are fully documented in the schema, including the ep_... id format. The description adds nothing about parameters beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Fetch a single webhook endpoint') and enumerates the data it exposes (URL, subscribed event types, channels). The word 'single' plus the field listing cleanly separates it from svix_list_endpoints and svix_get_endpoint_stats without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Use is only implied: 'a single' suggests one record vs the list sibling, but there is no explicit when-to-use statement, no prerequisites (e.g. needing a valid ep_ id), and no named alternative. Adequate but leaves the selection reasoning to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
svix_get_endpoint_statsGet endpoint delivery statsARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| since | No | ISO-8601 start of the window, e.g. 2026-08-01T00:00:00Z. | |
| until | No | ISO-8601 end of the window. | |
| app_id | Yes | The application's Svix id or uid. | |
| endpoint_id | Yes | The endpoint's Svix id or uid. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already covers the safety profile, so the bar is lower; the description adds real value by disclosing the shape of the result (counts bucketed by success/pending/sending/fail) even though there is no output schema. It does not mention auth requirements or the default time window, which is the remaining gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the verb and resource, then the value proposition, then the REST path — no filler sentences. The 'Svix REST: GET ...' clause is useful for API parity but slightly extraneous for an agent that already has the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read tool with no output schema, the description supplies the return-field breakdown and the API path, which is nearly enough to call it correctly. The only real omission is what window is used when the optional since/until parameters are left out.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so app_id, endpoint_id, since and until are already documented with formats and examples. The description adds nothing about the optional time-window parameters (e.g. default range when since/until are omitted), so it sits at the baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Read delivery statistics for one endpoint') and even enumerates the returned counters (success, pending, sending, fail), so an agent knows exactly what comes back. It does not name or contrast with any sibling (e.g. svix_health, svix_list_attempts_by_endpoint), which keeps it out of 5 territory.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'The fastest way to see whether an endpoint is healthy' implies a use case, but no explicit when-to-use/when-not guidance and no alternative is named. An agent can infer this is the quick health-check call, but must still guess how it relates to svix_list_attempts_by_endpoint or svix_health.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
svix_get_event_typeGet one event typeARead-onlyInspect
Fetch a single event type by name, including its description and JSON schema. Svix REST: GET /api/v1/event-type/{event_type_name}.
| Name | Required | Description | Default |
|---|---|---|---|
| event_type_name | Yes | The event type name, e.g. invoice.paid. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already tells the agent this is a safe read. The description adds useful payload context (returns description and JSON schema) and names the underlying REST route, but says nothing about error behavior when the name is unknown or whether the result is cached.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the action and return payload front-loaded and the REST route appended, which is genuinely useful for a REST-backed tool. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read-only lookup with 100% schema coverage, the description covers what is fetched and what comes back. Nothing an agent needs to invoke it correctly is missing, though it could note behavior for non-existent names.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter is fully documented in the schema with an example ('invoice.paid.'), so the baseline of 3 applies. The description's 'by name' adds no syntax or format detail beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Fetch') and resource ('a single event type') and scopes it to one item, which distinguishes it from svix_list_event_types without opening a schema. The sibling is not named explicitly, so it stops short of the top mark.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: fetch one event type when you already know its name. No explicit when-to-use, when-not-to-use, or comparison against svix_list_event_types is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
svix_get_messageGet one messageARead-onlyInspect
Fetch a single message, including its event type and payload. Svix REST: GET /api/v1/app/{app_id}/msg/{msg_id}.
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | The application's Svix id or uid. | |
| msg_id | Yes | The message's Svix id (msg_...) or your eventId. | |
| with_content | No | Include the payload. Defaults to true. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already establishes this is a safe read, and the GET /api/v1/... path in the description reinforces that. The description adds the payload-inclusion behavior, but says nothing about auth requirements, error cases (missing message), or whether content can be omitted by default.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the purpose front-loaded and the REST mapping appended for orientation. Nothing is wasted, though the endpoint path is arguably redundant given the tool name convention.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description usefully signals that the response includes event type and payload. Combined with full schema coverage and a readOnly annotation, this is nearly complete; only error/auth behavior is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so app_id, msg_id, and with_content are all documented in the schema itself. The description adds no parameter-level meaning beyond what the schema provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Fetch a single message") and identifies what comes back (event type and payload). The word "single" implicitly contrasts with the list_messages sibling, though no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent infers this is for retrieving one known message rather than enumerating. There is no explicit when-to-use-vs-alternatives statement, no mention of when to prefer svix_list_messages or svix_list_attempts_by_message instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
svix_healthCheck API healthARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=true; the description goes further by disclosing what the call validates (reachability plus API key validity) and the success signature (200 with empty body). It does not say what a failure looks like or whether auth errors are distinguishable, which is the one remaining gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, each carrying distinct information: purpose, expected response, and endpoint. The most important detail (what is being checked) is front-loaded and nothing is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description carries the return-value burden and does so explicitly (200 with empty body). For a zero-parameter diagnostic whose annotations already cover the safety profile, nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4. There is nothing for the description to clarify here, and it correctly does not invent or omit parameter detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Check that the Svix API is reachable') plus the additional verification of API key validity. It is unmistakably distinct from the sibling tools, which are all CRUD operations on applications, endpoints, and messages.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The nature of a health check makes the usage context clear, and the REST path (GET /api/v1/health) confirms it is a diagnostic rather than a data operation. No explicit when/when-not phrasing or named alternatives are given, but no plausible alternative exists among the siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
svix_list_applicationsList applicationsBRead-onlyInspect
List the applications (your tenants/customers) in the Svix environment. Svix REST: GET /api/v1/app.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Page size, 1-250. Svix defaults to 50. | |
| order | No | Sort order by creation time. | |
| iterator | No | Cursor from the previous page's `iterator` field. Omit for the first page. | |
| exclude_apps_with_no_endpoints | No | Skip applications that have no endpoints configured. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already tells the agent this is a safe read, so the description's main addition is the GET /api/v1/app mapping. It says nothing about paging semantics, default page size behavior, or what a page actually contains, which is the behavior an agent most needs here.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the resource and its domain alias front-loaded, followed by the underlying REST route. Nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description is the only place the return shape could be explained, and it never says a page of application objects plus an iterator is returned. Paging is implied only through the parameter descriptions, leaving a modest gap for a paginated list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with per-parameter descriptions (limit range and default, order enum, iterator cursor, endpoint filter), so the schema carries parameter meaning. The description adds no parameter detail beyond what is already documented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (applications), and usefully disambiguates Svix jargon by equating applications with tenants/customers. It does not explicitly contrast itself with svix_get_application, but the list-vs-get distinction is unambiguous from the verb.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to choose this over svix_get_application, or on how pagination should be driven (iterator/limit/order). The REST endpoint mapping is descriptive, not prescriptive. An agent must infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
svix_list_attempts_by_endpointList delivery attempts for an endpointARead-onlyInspect
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}.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Page size, 1-250. Svix defaults to 50. | |
| app_id | Yes | The application's Svix id or uid. | |
| status | No | Filter by attempt status: 0 success, 1 pending, 2 fail, 3 sending. | |
| iterator | No | Cursor from the previous page's `iterator` field. Omit for the first page. | |
| endpoint_id | Yes | The endpoint's Svix id or uid. | |
| status_code_class | No | Filter by response class: 0 any, 100, 200, 300, 400, 500. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already tells the agent this is a safe read. The description adds the newest-first ordering and the underlying REST path, which is useful context, but says nothing about pagination behavior, rate limits, or result shape beyond what the schema's iterator field already documents.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core purpose and ordering; the REST path is borderline redundant but compact and aids cross-referencing. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool with no output schema, the description covers purpose, scope, and ordering, and the schema documents pagination and filters. Missing only an explicit note on the return shape, which is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description only gestures at status filtering and adds no format, allowed-value, or interaction detail beyond what each parameter description already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (list) and resource (delivery attempts) scoped to a single endpoint, plus the ordering (newest first). This distinguishes it from svix_list_attempts_by_message by implication, though it does not name that sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Filter by status to find the failures" gives one implied use case, but there is no when-to-use vs alternatives guidance and no mention of when to prefer svix_list_attempts_by_message or other attempt-related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
svix_list_attempts_by_messageList delivery attempts for a messageARead-onlyInspect
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}.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Page size, 1-250. Svix defaults to 50. | |
| app_id | Yes | The application's Svix id or uid. | |
| msg_id | Yes | The message's Svix id. | |
| status | No | Filter by attempt status: 0 success, 1 pending, 2 fail, 3 sending. | |
| iterator | No | Cursor from the previous page's `iterator` field. Omit for the first page. | |
| endpoint_id | No | Only attempts against this endpoint. | |
| status_code_class | No | Filter by response class: 0 any, 100, 200, 300, 400, 500. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already tells the agent this is a safe read, so the bar is lower. The description adds that each attempt carries status, response code and body, which is useful output context, but says nothing about pagination behavior, ordering, or how attempts against failed vs. successful endpoints appear. Useful but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences: what it returns, why you'd call it, and the underlying REST route. Front-loaded with the verb and scope, zero filler, and the API path is compactly appended.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully summarizes the return payload (status, response code, body) and the diagnostic intent. It omits pagination/iterator semantics for multi-page results, which the schema only partially implies, leaving a small gap for a 7-parameter listing tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and all seven parameters (app_id, msg_id, limit, status, iterator, endpoint_id, status_code_class) are documented in the schema with ranges and enum meanings. The description adds no parameter-level detail beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List every delivery attempt Svix made for one message, across endpoints') and pins the scope to a single message, which cleanly separates it from the sibling svix_list_attempts_by_endpoint. The REST path (GET /api/v1/app/{app_id}/attempt/msg/{msg_id}) removes any residual ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"This is the tool for answering 'why did this webhook not arrive?'" gives a concrete diagnostic scenario for selecting it, which is stronger than implied usage. It never names the by-endpoint alternative or gives a when-not-to-use condition, so it falls short of the explicit routing seen in the top tier.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
svix_list_background_tasksList background tasksARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| task | No | Filter by task kind, e.g. endpoint.recover. | |
| limit | No | Page size, 1-250. Svix defaults to 50. | |
| status | No | Filter by task status. | |
| iterator | No | Cursor from the previous page's `iterator` field. Omit for the first page. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already tells the agent this is a safe, non-mutating call. The description adds that the covered tasks are long-running bulk operations (replays, expunges, imports) whose status is tracked, which is useful context, but it says nothing about polling cadence or whether results are eventually consistent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences that front-load purpose and then usage, with zero redundancy. The trailing 'Svix REST: GET /api/v1/background-task' line is reference detail rather than instruction, but it is short and harmless.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, four-optional-parameter list tool with full schema coverage and no output schema, the description supplies the necessary scope and trigger context. The only gap is behavior around paging results, which the schema's iterator field largely covers.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so task, limit, status, and iterator are already fully documented in the schema, including the enum values and cursor semantics. The description only adds the parenthetical notion that status is part of the view; baseline 3 is appropriate when the schema carries the parameter burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List Svix background tasks') and clarifies scope with concrete examples ('bulk replays, expunges, imports') plus what is returned ('with their status'). No sibling tool covers background tasks, so the agent can distinguish it immediately from the list_* message/endpoint/attempt tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use it to follow up a recover or replay' gives a clear triggering context that ties this tool to sibling operations like svix_recover_endpoint. It stops short of stating when not to use it (e.g. to inspect individual deliveries, use svix_list_attempts_by_message), so it is not a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
svix_list_endpoint_messagesList messages for an endpointARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Page size, 1-250. Svix defaults to 50. | |
| app_id | Yes | The application's Svix id or uid. | |
| iterator | No | Cursor from the previous page's `iterator` field. Omit for the first page. | |
| endpoint_id | Yes | The endpoint's Svix id or uid. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so safety is covered. The description adds that each returned message carries its delivery status, which is useful context beyond the annotations, but it says nothing about ordering, default page size behavior, or cursor semantics (those live only in the schema).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences: the semantic purpose is front-loaded first, the API mapping second. No filler, no restatement of the title, and the delivery-status detail is packed into the opening clause.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does state what a caller gets back (messages plus per-message delivery status) and the schema fully documents pagination. Minor gaps remain: no mention of ordering or whether results can be filtered by status, but nothing essential to invoking it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, including limit range, iterator cursor semantics, and id/uid acceptance for both ids, so the schema carries the parameter burden. The description merely echoes app_id and endpoint_id in the URL template and adds no format or validation detail beyond it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb and resource with an explicit scope qualifier: 'messages destined for one endpoint, with each message's delivery status.' The endpoint scoping implicitly distinguishes it from the app-wide svix_list_messages, but the sibling is never named, so an agent must infer the split.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by the endpoint-scoped framing; there is no explicit when-to-use versus svix_list_messages, svix_get_message, or svix_list_attempts_by_endpoint. The REST path mapping hints at the resource relationship but is not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
svix_list_endpointsList endpointsARead-onlyInspect
List the webhook endpoints registered for one application. Svix REST: GET /api/v1/app/{app_id}/endpoint.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Page size, 1-250. Svix defaults to 50. | |
| order | No | Sort order by creation time. | |
| app_id | Yes | The application's Svix id or uid. | |
| iterator | No | Cursor from the previous page's `iterator` field. Omit for the first page. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already tells the agent this is a safe read, so the description only needs to add context. It contributes the single-application scoping and the REST path, but says nothing about pagination behavior or result shape beyond what the schema's iterator/limit fields imply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero waste, with the purpose and scope front-loaded before the REST reference. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool with a fully documented schema and no output schema, the definition covers what an agent needs to invoke it correctly. The only mild gap is that pagination workflow (first page vs cursor) is left entirely to the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: app_id, limit, order, and iterator are all documented with meaning, defaults, and cursor semantics in the schema itself. The description adds no parameter detail, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (webhook endpoints) with an explicit scope constraint ('registered for one application'), and the REST path confirms the resource. An agent can distinguish it from svix_get_endpoint (singular fetch) and svix_list_endpoint_messages (messages, not endpoints).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use or when-not-to-use guidance and no named alternatives, despite many sibling list/get tools. The 'for one application' phrasing implies the required context but nothing routes the agent between this and, say, svix_list_endpoint_messages or svix_get_endpoint.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
svix_list_event_typesList event typesARead-onlyInspect
List the event types defined in the environment — the catalogue endpoints can subscribe to. Svix REST: GET /api/v1/event-type.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Page size, 1-250. Svix defaults to 50. | |
| iterator | No | Cursor from the previous page's `iterator` field. Omit for the first page. | |
| with_content | No | Include each event type's JSON schema. | |
| include_archived | No | Also return archived (deprecated) event types. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true so the safety profile is covered, but the description adds no behavioural context of its own — no pagination behaviour, no mention that archived types are excluded by default, no rate limits. The REST route mapping is metadata, not behaviour.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence capturing the resource, plus a short REST route annotation. Nothing is padded, though the route line is marginally redundant for an agent that only needs selection guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A read-only, zero-required-parameter list tool with 100% parameter documentation and no output schema needs little more than this. Only the default filtering of archived types is left implicit, which the include_archived param partially compensates for.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters (limit, iterator, with_content, include_archived) are fully documented in the schema. The description adds nothing beyond that, making the baseline 3 correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (event types), and adds the conceptual scope — the catalogue of event types endpoints can subscribe to. The plural 'list' versus the sibling svix_get_event_type is self-evident, so an agent can route correctly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains what the resource is for, which implies when to reach for it (browsing the subscribable catalogue before creating an endpoint), but there is no explicit when-to-use, no exclusions, and no named alternative such as svix_get_event_type for a single type.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
svix_list_messagesList messagesBRead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | Only messages carrying this tag. | |
| after | No | ISO-8601 lower bound on message time. | |
| limit | No | Page size, 1-250. Svix defaults to 50. | |
| app_id | Yes | The application's Svix id or uid. | |
| before | No | ISO-8601 upper bound on message time. | |
| channel | No | Only messages on this channel. | |
| iterator | No | Cursor from the previous page's `iterator` field. Omit for the first page. | |
| event_types | No | Only messages of these event types, e.g. ["invoice.paid"]. | |
| with_content | No | Include each message's payload. Defaults to true. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already tells the agent this is a safe read; the description adds the newest-first ordering and the scoping to a single application, plus the REST path. Pagination is only implied via schema's iterator field, and no rate-limit or content-size behavior is disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences front-loading scope and ordering, then filters, then the REST endpoint. No filler, though the REST path is of marginal value to an agent invoking an MCP tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a nine-parameter list tool with no output schema, the description omits return shape and pagination workflow (iterator/limit usage), which the agent must infer from the schema. Annotations cover safety, but pagination guidance is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all nine parameters are documented in the schema itself. The description echoes the filter set (event type, channel, tag, time window) without adding format details, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (webhook messages) scoped to one application, with an ordering guarantee (newest first). It does not name or distinguish itself from the closest sibling, svix_list_endpoint_messages, which narrows messages to a single endpoint.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The filter dimensions (event type, channel, tag, time window) give implicit guidance on when the tool applies, but there is no explicit when-not and no routing to alternatives such as svix_list_endpoint_messages for endpoint-scoped listings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
svix_recover_endpointRecover an endpoint's failed messagesADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| since | Yes | ISO-8601 start of the replay window, e.g. 2026-08-01T00:00:00Z. | |
| until | No | ISO-8601 end of the replay window. Defaults to now. | |
| app_id | Yes | The application's Svix id or uid. | |
| endpoint_id | Yes | The endpoint to recover. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only supply destructiveHint=true; the description adds the non-obvious trait that this starts a background task rather than completing synchronously, plus how to track it. It does not say whether replayed messages can duplicate deliveries or whether the operation is reversible, so a point is withheld.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, zero filler, with the core action and scope front-loaded before the async caveat and the API route. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter mutation with no output schema, the description covers the async nature and the follow-up tool needed to observe results. It omits what happens to already-delivered messages and any permission requirements, but the essentials for correct invocation are present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents app_id, endpoint_id, since and until. The description only restates 'since a timestamp' and the window concept without adding format or default details beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Replay') and resource scope ('every failed message for one endpoint since a timestamp'), which cleanly separates it from svix_resend_message (single message) and svix_list_attempts_by_endpoint (read-only). The REST route reinforces the exact operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives the triggering condition (failed messages on one endpoint since a timestamp) and explicit follow-up guidance ('follow it with svix_list_background_tasks'), which is real operational context. It stops short of stating when NOT to use it versus svix_resend_message, so it falls below a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
svix_resend_messageResend a message to one endpointADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | The application's Svix id or uid. | |
| msg_id | Yes | The message's Svix id. | |
| endpoint_id | Yes | The endpoint to redeliver to. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With destructiveHint=true already declared, the description adds meaningful context by saying the message is 'queued' (async redelivery rather than a synchronous send) and by citing the exact REST route. It does not say whether this creates a new delivery attempt, whether duplicate delivery is possible, or what permissions are required.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly written sentences front-load the action, then the usage cue, with zero filler; the REST path is a single conventional line. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
All three required params are covered by schema and there is no output schema to explain. However, for a destructiveHint retry operation the description omits outcome behavior (new attempt created, effect on existing attempt history) and failure conditions, leaving the agent with only the surface intent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so app_id, msg_id and endpoint_id are fully documented in the schema and the description adds no syntax, format, or ID-type nuance beyond it. Baseline 3 applies when the schema carries the parameter burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (redeliver/resend) and resource (one message to one endpoint), with scope narrowed by 'one endpoint' so an agent can tell it apart from the broader svix_recover_endpoint. It never names the sibling alternatives explicitly, so differentiation is inferential rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'The usual fix after a customer's endpoint was down' gives a clear when-to-use condition that an agent can act on. There is no when-not guidance (e.g. disabled endpoint, already-delivered message) and no reference to svix_recover_endpoint for bulk recovery.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
svix_send_messageSend a messageADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | Tags for later filtering. | |
| app_id | Yes | The application's Svix id or uid. | |
| payload | Yes | The JSON body delivered to the endpoints. | |
| channels | No | Restrict delivery to endpoints on these channels. | |
| event_id | No | Your own idempotency id for this message. | |
| event_type | Yes | The event type name, e.g. invoice.paid. Must already exist. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The only annotation is destructiveHint=true, so the description carries most of the behavioral burden. It adds genuinely useful context beyond the annotation: delivery goes to real customer URLs, and the message fans out across all subscribed endpoints. It still omits retry/async semantics and any auth or rate-limit notes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight, front-loaded sentences with zero filler. The trailing 'Svix REST: POST /api/v1/app/{app_id}/msg' line is mildly redundant for an agent already calling the MCP tool, but it is brief and harmless.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema and a nested payload object, the description conveys purpose, scope, and external side effects adequately. It stops short of describing what comes back (e.g., a message id) or how event_id idempotency behaves on repeat calls.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% — app_id, event_type, payload, tags, channels, and event_id are all documented in the schema itself. The description adds no parameter-level meaning beyond that, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Send a webhook message') plus precise fan-out scope ('to every endpoint of an application subscribed to the event type'). This distinguishes it from siblings like svix_resend_message and svix_list_endpoint_messages without needing to name them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the description — publish an event to subscribers — and the note that it 'delivers real traffic to your customers' URLs' signals a production side effect. However, it never states when to prefer svix_resend_message or svix_list_messages instead, nor any prerequisite about the event type needing to exist in the app.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
19 tool updates
- Changed
svix_create_application1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
svix_create_endpoint1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
svix_get_application1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
svix_get_endpoint1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
svix_get_endpoint_stats1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
svix_get_event_type1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
svix_get_message1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
svix_health1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
svix_list_applications1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
svix_list_attempts_by_endpoint1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
svix_list_attempts_by_message1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
svix_list_background_tasks1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
svix_list_endpoint_messages1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
svix_list_endpoints1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
svix_list_event_types1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
svix_list_messages1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
svix_recover_endpoint1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
svix_resend_message1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
svix_send_message1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
19 tool updates
- First observed
svix_create_application - First observed
svix_create_endpoint - First observed
svix_get_application - First observed
svix_get_endpoint - First observed
svix_get_endpoint_stats - First observed
svix_get_event_type - First observed
svix_get_message - First observed
svix_health - First observed
svix_list_applications - First observed
svix_list_attempts_by_endpoint - First observed
svix_list_attempts_by_message - First observed
svix_list_background_tasks - First observed
svix_list_endpoint_messages - First observed
svix_list_endpoints - First observed
svix_list_event_types - First observed
svix_list_messages - First observed
svix_recover_endpoint - First observed
svix_resend_message - First observed
svix_send_message
Related MCP Connectors
Send, retry and monitor webhooks: manage endpoints, event types and API keys (OAuth).
Webhooks for AI agents: send events, manage endpoints, inspect and retry deliveries.
A webhook inbox for agents: one call returns a live URL. Mock, verify, inspect and replay.
Webhook capture and replay, delivery pipes, and signed multi-agent rooms. No signup to start.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceWebhook management and debugging. Validate signatures, log events, replay, and analyze webhook traffic.59 PyPIMIT
- AlicenseNot gradedqualityDmaintenanceEnables generating webhook endpoints for testing, inspecting and comparing HTTP request payloads, replaying requests from history, and forwarding requests to localhost.2MIT
- AlicenseAqualityDmaintenanceWebhook management and testing tools for AI agents. Provides tools for sending, validating, generating, and debugging webhooks.511 npmMIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to create webhook URLs, wait for incoming deliveries, inspect payloads, and replay or send signed webhook events to a local handler.43 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.