participant_events
Retrieve recent DDS participant lifecycle events (discovered/lost) to see who joined or left the bus and when they first appeared.
Instructions
Return DDS participant lifecycle events (discovered / lost) from a recent window, e.g. 'who was on the bus 5 minutes ago and left?' or 'when did this participant first appear?'. Returns list[ParticipantEvent]: each entry carries guid, event_type, vendor, timestamp_ns (wall-clock ns since epoch), time_source, observed_ns, optional name (the participant's announced DDS name), optional hostname, domain_id, and mode_effective (live/mock). time_source says what timestamp_ns is: dds_source_timestamp (the DDS timestamp of the announcement or dispose) or observed_local (when TopicForge noticed, weakest). observed_ns is when TopicForge noticed, always at or after a DDS-derived timestamp_ns. Crash caveat: a lost timestamp is an upper bound of the death. After a clean shutdown it is exact; after a crash it is when the lease expired, so the process died between timestamp_ns minus the dead participant's lease and timestamp_ns (10 s Cyclone default, 20 s Fast DDS, 100 s RTI), and the two cases cannot be told apart. A restarted node is a new participant: expect one lost and one discovered per restart, with different guids and the same name. Sorted newest-first. Capped at 200 events, silently (reduce lookback_seconds if you hit it). TopicForge only knows what happened since it started watching (see health_check.observer_started_ns). Backend caveats: Fast DDS captures arrivals and removals through listener callbacks; Cyclone tracks discovery in the background (a pass every 0.5 s, independent of tool calls), so restarts and crashes are recorded as they happen, but a participant cycle faster than the discovery reader's history depth between two passes can be missed; mock returns a fixture timeline. Right after server start the call waits up to 3 s for discovery to warm up. Read-only by architecture. Raises an MCP error when no DDS module is active (install pip install topicforge[dds] and set TOPICFORGE_DDS_BACKEND=cyclone|fast).
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| domain_id | No | Accepted for compatibility (0..232). TopicForge observes the domain it joined at startup (TOPICFORGE_DDS_DOMAIN_ID); this argument does not switch domains, and the response `domain_id` says which one was observed. | |
| lookback_seconds | No | Window (in seconds) over which to return events. Defaults to 300 (5 minutes). Range: 1..86400 (1 second to 24 hours). Larger windows may hit the 200-event cap: narrow the window or filter on `domain_id` when that happens. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| result | Yes |