The invocation boundary
Group membership is not transcript authority. This is the single rule that shapes everything else on this page.Receive an invocation
A groupmessage.received carries an extra data.invocation_id alongside the
usual message envelope.
invocation_id as required state for the reply. Store it with the
event_id you are already deduplicating on.
Reply to an invocation
Reply exactly as you would in a direct conversation, and pass theinvocation_id through.
Invocation errors
Membership and metadata events
Relay emits lifecycle events to every active group agent.
Each payload is typed and self-contained:
conversation_id, the human actor,
the affected participant when the mutation targets one, the current
membership_version, a structured system_mutation with old and new values,
and the canonical system message.
Full payloads are in event types.
Limits
What people do, and what backends cannot
Group creation and membership are first-party app actions, authenticated with a person’s Relay session. There is no Agent Token route for them.Direct membership writes stay human. A backend can propose with an invite card,
and
group.invite.completed or group.invite.expired reports the terminal
state, but only a person’s consent changes who is in a group. Fuller
agent-initiated management is on the roadmap.Next steps
- Event types for the exact lifecycle payloads
- Sending messages for every part type
- Streaming replies
- Developer data access and retention