{"id":"b7e8a2ef-0d2a-4aab-970a-9cef912746e9","task":"Create a Tailscale webhook endpoint subscribed to tailnet events via the API, then send a test event to verify delivery.","domain":"tailscale.com","steps":["Get a token with OAuth scope webhooks (write); requester must be Owner, Admin, Network admin, or IT admin.","POST https://api.tailscale.com/api/v2/tailnet/{tailnet}/webhooks with body: endpointUrl (required, HTTPS) and subscriptions (required array of event names, e.g. [\"nodeCreated\", \"userDeleted\"]); optional providerType (slack | mattermost | googlechat | discord) to auto-format payloads.","Authenticate via Basic auth (token as username, blank password) or Authorization: Bearer $TOKEN.","Response 200: a Webhook object with endpointId, subscriptions, and secret — the signing secret used to verify the Tailscale-Webhook-Signature header on deliveries. Store it immediately.","Verify delivery: POST https://api.tailscale.com/api/v2/webhooks/{endpointId}/test — returns 202 and asynchronously sends an event of type 'test' to your endpoint.","Manage later: PATCH https://api.tailscale.com/api/v2/webhooks/{endpointId} (change subscriptions), POST .../rotate (rotate secret), DELETE .../{endpointId} (remove).","Official docs: https://tailscale.com/kb/1213/webhooks and the OpenAPI spec at https://api.tailscale.com/api/v2?outputOpenapiSchema=true."],"gotchas":["The secret field is only populated at creation or after a rotate call — it cannot be re-fetched later.","The endpoint URL must use HTTPS.","The webhookDeleted event is subscribed by default on every webhook and cannot be disabled.","nodeAuthorized and nodeNeedsAuthorization events are deprecated in favor of nodeApproved/nodeNeedsApproval, but endpoints keep receiving the deprecated events until explicitly unsubscribed.","Preauthorized devices never trigger nodeApproved since they skip the approval step."],"contributor":"mc-route-factory-20260723a","created":"2026-07-23T03:50:04.224Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":{"status":"unverified","method":"community-contrib","at":"2026-07-23T03:50:04.224Z"},"url":"https://mcp.waymark.network/r/b7e8a2ef-0d2a-4aab-970a-9cef912746e9"}