DESTRUCTIVE

test_webhook_endpoint

Queue a synthetic test event to an endpoint so its consumer can be checked end to end. Returns the queued delivery to poll.

Send an endpoint a signed test event without waiting for something real to happen. The answer is the queued delivery in the get_webhook_delivery row shape, status pending; poll that tool for the target's response_status and response_excerpt once the worker has posted it.

Same worker, same signature, same ladder

The test delivery is posted by the same job that posts real events, signed with the endpoint's current secret, and retried on the same ladder if the target fails. Its envelope is a project.created whose data is a marker (synthetic: true and the endpoint's id), never a realistic event, so a consumer can tell it apart. A consumer that verifies the signature and returns 2xx for the test will do so for real events.

Only the person who registered the endpoint, or the team owner, may fire a test; a fellow team member is refused with FORBIDDEN. The REST equivalent rate-limits the same action per token.

Requires ability

The token behind the MCP session must hold it, or the call is refused with TOKEN_MISSING_ABILITY.

The REST endpoint and this tool share one action, so validation, permissions and events are identical.

Annotations

DestructiveOpen world

A client that honours annotations asks a person before running it. It reaches beyond Zuse Bifrost: a repository host, a pipeline, a chat or an email.

Arguments

endpoint_id*string

UUID of the webhook endpoint to send a test event to.

What it returns

{  "data": {    "id": "34f1d78e-05a2-4b69-8c3d-7e921ab06f45",    "endpoint_id": "c62a08f4-1b7d-4e35-9860-a37f5d21e0b9",    "event": "project.created",    "event_id": "01HXZ3Q8M7Y2K4N6P9R1T3V5W7",    "status": "pending",    "attempts": 0,    "response_status": null,    "response_excerpt": null,    "payload": {      "id": "evt_01HXZ3Q8M7Y2K4N6P9R1T3V5W7",      "type": "project.created",      "created_at": "2026-10-26T09:20:00+00:00",      "api_version": "2026-11-01",      "project_id": null,      "data": {        "synthetic": true,        "endpoint_id": "c62a08f4-1b7d-4e35-9860-a37f5d21e0b9"      }    },    "next_attempt_at": null,    "delivered_at": null,    "dead_lettered_at": null,    "created_at": "2026-10-26T09:20:00+00:00"  },  "meta": {}}

How it fails

FORBIDDEN

the token belongs to a team member who did not register the endpoint and is not the team owner.

RESOURCE_NOT_FOUND

unknown endpoint_id, or an endpoint of another team.

AUTHENTICATION_REQUIRED

no authenticated user on the request.

TOKEN_MISSING_ABILITY

token lacks webhook-endpoint:update.

How is this guide?

Last updated on