MCP Events ChatGPT now supports MCP Events, letting users subscribe to updates from an MCP server such as new messages, content changes, or status changes, according to OpenAI's documentation. The integration requires MCP 2.0 (protocol version 2026-07-28), persistent subscription storage, and outbound HTTPS access to callback URLs, and supports webhook delivery and callback verification from the draft MCP Events specification. Servers must advertise an `events` capability in their `server/discover` response and implement `events/list`, `events/subscribe`, and `events/unsubscribe`; polling, streaming, and the draft's `gap` and `terminated` control notifications are not supported. MCP Events lets ChatGPT subscribe to updates from your MCP server, such as new messages, content updates, or status changes. Users choose what to monitor and what ChatGPT should do when an update arrives. | Use case | User request | MCP event | |---|---|---| | Turn feedback into pull requests | Monitor product-feedback for bug reports and open draft pull requests with fixes and tests. | message.created , filtered by channel id | | Apply document feedback | Watch this document for review comments and implement any requested edits. | comment.created , filtered by document id | Before you start MCP Events in ChatGPT requires MCP 2.0 protocol version 2026-07-28 . Configure your server in your plugin and provide persistent subscription storage and outbound HTTPS access to callback URLs. ChatGPT supports webhook delivery and callback verification from the draft MCP Events specification https://github.com/modelcontextprotocol/experimental-ext-triggers-events/blob/main/docs/design-sketch-proposal.md . Polling, streaming, and the draft’s gap and terminated control notifications are not supported by this integration. How it works 1. Your server lists the events it supports. 2. The user tells ChatGPT what to monitor and how to respond. 3. ChatGPT subscribes through your MCP server and supplies a callback URL and signing secret. 4. Your server sends matching events to that URL. 5. ChatGPT receives the event in the subscribed chat and follows the user’s instructions for how to respond. Advertise event support Event discovery starts with your server’s capabilities. Add events to the capabilities returned by its server/discover response: { "jsonrpc": "2.0", "id": 1, "result": { "resultType": "complete", "supportedVersions": "2026-07-28" , "capabilities": { "tools": {}, "events": {} } } } Implement these three event methods on the same authenticated MCP endpoint as your tools: | Method | Server behavior | |---|---| | events/list | Describe available events and their filters. | | events/subscribe | Create or refresh a subscription. | | events/unsubscribe | Stop a subscription. | Define an event An event definition tells ChatGPT what users can subscribe to and which filters are available. Return these definitions from events/list , including the event name, supported delivery modes, subscription arguments, and payload schema. { "jsonrpc": "2.0", "id": 1, "result": { "events": { "name": "comment.created", "description": "A new review comment was added to the specified document.", "delivery": "webhook" , "inputSchema": { "type": "object", "properties": { "document id": { "type": "string", "description": "ID of the document to monitor for new review comments." } }, "required": "document id" , "additionalProperties": false }, "payloadSchema": { "type": "object", "properties": { "document id": { "type": "string" }, "comment id": { "type": "string" }, "text": { "type": "string" }, "url": { "type": "string" } }, "required": "document id", "comment id", "text", "url" , "additionalProperties": false } } } } inputSchema describes the arguments passed when ChatGPT subscribes, while payloadSchema describes the data object in each delivered event. Use stable event names and specific descriptions. Expose filters such as document, project, or queue IDs, and apply them on your server before delivery. Return only events the connected account is allowed to discover. If the catalog spans multiple pages, return nextCursor and accept it as cursor on the next events/list request. Create a subscription When a user asks to monitor an event, ChatGPT calls events/subscribe with the event name, filter arguments, and webhook destination: { "jsonrpc": "2.0", "id": 2, "method": "events/subscribe", "params": { "name": "comment.created", "arguments": { "document id": "doc 123" }, "delivery": { "mode": "webhook", "url": "https://receiver.example.com/mcp-events/callback 123", "secret": "whsec