MCP Events is a very new feature built on a draft extension to the Model Context Protocol. Client support is still arriving and may change as the specification settles.
Supported clients
Other MCP clients will receive events as they add support for the extension.
Use it in ChatGPT
1
Connect Chatbase
Add the Chatbase connector to ChatGPT and approve access, as described in MCP Server.
2
Describe the trigger and the task
In a Work chat, name the AI agent, what to watch for and what to do. For example: “Whenever a new ticket is created on Acme Support, summarize it, suggest a priority and draft a first reply.”
3
Let it run
ChatGPT subscribes to the event and runs the task each time it happens.
Ideas
- Triage new tickets: summarize each new ticket, suggest a priority and draft a first reply.
- Draft replies: when a customer replies on a ticket, draft an answer from the full thread.
- Close knowledge gaps: when the AI agent hands a conversation to a human, explain what it could not answer so you can add the missing source.
- Brief the human: when a conversation escalates, give the person taking over a short summary before they reply.
- Log calls: after each phone call, write a summary and the follow-ups.
- Spot trends: collect the week’s escalations and group them by reason.
Events
Every event is scoped to one AI agent. A delivery carries ids only, never message text, names, emails or phone numbers. The assistant reads the details with the tool named below, using your permissions.chatbase.ticket.created
chatbase.ticket.created
Sent for ordinary tickets from any channel, and for tickets the AI agent or a connected tool creates. Not sent for live chat or Outbound campaign tickets, or for tickets created directly inside a third-party platform.Payload:
agentId, ticketNumber, channel, platform, conversationId, escalatedConversation. For a ticket on another platform, ticketNumber and channel are null and platform names it, for example zendesk. escalatedConversation is true when creating the ticket also handed the conversation to a human.chatbase.conversation.escalated
chatbase.conversation.escalated
Sent only when the AI agent itself decides to hand off. Not sent when a human takes over from the dashboard, or when a platform such as Zendesk takes control.Payload:
agentId, conversationId, reason (ticket or live_chat), ticketNumber. ticketNumber is null when the handoff went to a third-party platform.chatbase.ticket.message_received
chatbase.ticket.message_received
Sent for customer replies on ordinary and Outbound campaign tickets, including automatic replies such as out-of-office emails. Not sent for the first message of a ticket, replies from your team, internal notes, or messages during a live chat with a human. On the Chat Bubble, WhatsApp, Messenger and Instagram, once a ticket is closed and the conversation is back with the AI agent, the customer’s next message goes to the AI agent instead.Payload:
agentId, ticketNumber, messageId.chatbase.conversation.deescalated
chatbase.conversation.deescalated
Sent once per handback: the conversation’s last open ticket was closed, or a live chat on another platform ended. Also sent when a human had taken over from the dashboard, so it can arrive without an earlier escalated event.Payload:
agentId, conversationId.chatbase.phone_call.ended
chatbase.phone_call.ended
Sent once per real phone call, never for voice chat in a web widget.Payload:
agentId, conversationId, durationSeconds.If a client subscribes to both
chatbase.ticket.created and chatbase.conversation.escalated, a ticket the AI agent creates to hand over a conversation arrives only as chatbase.conversation.escalated, which carries the ticketNumber. The client never receives both for one ticket.Good to know
- Conversations in the Playground, Actions and Q&A never send events. Test from a real channel such as the Chat Bubble, email or WhatsApp.
- Actions an assistant takes through the MCP tools also send events. For example, creating a ticket with
chatbase_create_ticketsendschatbase.ticket.created. - Revoking an app under Settings → General → Connected apps ends all its subscriptions immediately.
- If your role loses a permission an event needs, deliveries for that event stop.
Build your own client
The server implements the webhook delivery mode of the MCP Triggers & Events draft. Clients call three JSON-RPC methods onhttps://mcp.chatbase.co/api/mcp, using the same OAuth connection as the tools.
Subscribe
Send the event name,arguments with the agentId, and a delivery object with mode: "webhook", an https url and a secret you generate: whsec_ followed by 24 to 64 random bytes, base64-encoded.
{"type":"verification","challenge":"..."} to it. Respond within 5 seconds with a 2xx and {"challenge":"..."} echoing the same value.
- Lease: the response includes
refreshBefore. Callevents/subscribeagain with the same parameters before then to renew. The lease is 1 minute to 24 hours, 24 hours by default. SendttlMs: nullfor a subscription that lasts until the connection is revoked or expires, and the response returnsrefreshBefore: null. - Limits: 25 live subscriptions per connection. Repeating a subscribe with the same event, arguments and URL renews it rather than creating another.
- URLs:
httpsonly, on a public address. Redirects are not followed.
Deliveries
Each event is a POST signed with Standard Webhooks headers (webhook-id, webhook-timestamp, webhook-signature), using your secret. Verify the signature before trusting the body.
Delivery is at least once and can arrive out of order. Deduplicate on
eventId, and read the record with the tool rather than acting on the payload alone.