create_webinar
Schedule and manage Zoom webinars programmatically by specifying user ID, topic, type, start time, and duration. Supports recurring events and customized settings via the Zoom API MCP Server.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| agenda | No | Webinar description | |
| duration | No | Webinar duration in minutes | |
| password | No | Webinar password | |
| settings | No | Webinar settings | |
| start_time | No | Webinar start time | |
| timezone | No | Time zone | |
| topic | Yes | Webinar topic | |
| type | Yes | Webinar type (5: Webinar, 6: Recurring webinar with no fixed time, 9: Recurring webinar with fixed time) | |
| user_id | Yes | The user ID or email address |
Input Schema (JSON Schema)
{
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"agenda": {
"description": "Webinar description",
"type": "string"
},
"duration": {
"description": "Webinar duration in minutes",
"type": "number"
},
"password": {
"description": "Webinar password",
"type": "string"
},
"settings": {
"additionalProperties": true,
"description": "Webinar settings",
"properties": {},
"type": "object"
},
"start_time": {
"description": "Webinar start time",
"type": "string"
},
"timezone": {
"description": "Time zone",
"type": "string"
},
"topic": {
"description": "Webinar topic",
"type": "string"
},
"type": {
"description": "Webinar type (5: Webinar, 6: Recurring webinar with no fixed time, 9: Recurring webinar with fixed time)",
"maximum": 9,
"minimum": 5,
"type": "number"
},
"user_id": {
"description": "The user ID or email address",
"type": "string"
}
},
"required": [
"user_id",
"topic",
"type"
],
"type": "object"
}
Implementation Reference
- src/tools/webinars.js:40-47 (handler)The handler function for the 'create_webinar' tool. It makes a POST request to the Zoom API endpoint `/users/${user_id}/webinars` with the webinar data and handles the response or error.handler: async ({ user_id, ...webinarData }) => { try { const response = await zoomApi.post(`/users/${user_id}/webinars`, webinarData); return handleApiResponse(response); } catch (error) { return handleApiError(error); } }
- src/tools/webinars.js:29-39 (schema)Zod schema defining the input parameters and validation for the 'create_webinar' tool.schema: { user_id: z.string().describe("The user ID or email address"), topic: z.string().describe("Webinar topic"), type: z.number().min(5).max(9).describe("Webinar type (5: Webinar, 6: Recurring webinar with no fixed time, 9: Recurring webinar with fixed time)"), start_time: z.string().optional().describe("Webinar start time"), duration: z.number().optional().describe("Webinar duration in minutes"), timezone: z.string().optional().describe("Time zone"), password: z.string().optional().describe("Webinar password"), agenda: z.string().optional().describe("Webinar description"), settings: z.object({}).passthrough().optional().describe("Webinar settings") },
- src/server.js:48-48 (registration)Registers the webinarsTools array (which contains the 'create_webinar' tool) with the MCP server via the registerTools function.registerTools(webinarsTools);