How it is announced
With protocol2026-07-28, the server/discover result carries "events": {} in capabilities. The methods use the same endpoint and authentication as the tools. They answer for your credential’s primary workspace.
events/list
Returns the fourteen events of the catalog. Each has name, description, delivery: ["webhook"], inputSchema (the subscription arguments) and payloadSchema (the schema of data).
The only argument is optional: subject, to receive only one object’s events (opportunity/<id>).
events/subscribe
It returns
{ "id", "refreshBefore", "cursor": null, "truncated" }. Subscribe again before refreshBefore with the same values to renew. The id comes from who you are, the address, the event and the arguments: subscribing again with the same values renews instead of duplicating, and re-enables one that was turned off. A new secret replaces the old one; for 24 hours Brein signs with both.
A person subscribes, through their MCP client; an API key cannot. Not allowed in a test workspace: nothing leaves Brein from there.
Address verification
Before accepting, Brein sends to yoururl:
X-MCP-Subscription-Id header. Answer 2xx with { "challenge": "<the same value>" } within 10 seconds. A verified address is not verified again for 24 hours.
events/unsubscribe
The same name, arguments and delivery (without secret). Returns {}, even if it no longer existed. Delivery stops and history is kept.
What you receive
eventId is the event id in the ledger and does not change between retries. Verify the signature as for a Destination. An event can arrive more than once and out of order.
When the subscription expires, Brein stops delivering what is pending.
