Commit graph experimental-ext-triggers-e.../docs
Author SHA1 Message Date
Peter Alexander
641eca02a7
Revise Events design sketch: webhook cursor model, subscription identity, security hardening
Resolve internal contradictions and design gaps found in review:
- Webhook cursors are now client-owned (per-event retry, no server watermark); name/params/delivery.url are immutable identity fields; unsubscribe requires delivery.url
- Unify error/terminated shape across modes; define heartbeat and terminated notifications; renumber error codes to -32011..-32016 to avoid base-spec collision
- SSRF: validate at delivery time, block fe80::/10, MUST NOT follow redirects; HMAC: X-MCP-Subscription-Id header, hex-lowercase encoding, mandatory timestamp, retry regenerates
- events/stream scoped to event notifications only (existing GET SSE retained); StreamEventsResult send rules clarified per transport
- Broadcast emit now uses author-supplied match/transform hooks with ctx; poll lease keyed on (principal, eventName, hash(params)); eventId SHOULD be upstream's stable identifier
- Qualify at-least-once for emit-only types; refresh reactivates suspended delivery; capability uses listChanged
- Add Open Questions on multi-event-name subscriptions and ownership-verification handshake

Add design-sketch-revision-deltas.md documenting all changes for implementations built against the prior revision.
2026-04-17 11:52:12 +01:00
Peter Alexander
4f8a1129d8
Add delivery-mode diagrams, e2e webhook appendix, and clarifications
- Mermaid sequence diagrams for poll/push/webhook delivery
- Appendix: end-to-end GitHub example with Redis sub store
- Push: clarify multiple concurrent streams allowed; note HTTP/2 dependency
- Webhook: specify 2xx ACK requires durability or end-consumer processing
- Use nextPollSeconds consistently
2026-04-10 12:41:21 +01:00
Peter Alexander
603f5de12a
Add Events design sketch proposal 2026-04-09 21:30:11 +01:00