create_meeting
Schedule or instantiate Zoom meetings with user ID, topic, and type. Specify start time, duration, timezone, password, agenda, and settings for custom meeting configurations.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| agenda | No | Meeting description | |
| duration | No | Meeting duration in minutes | |
| password | No | Password for the meeting | |
| settings | No | Meeting settings | |
| start_time | No | Meeting start time in format YYYY-MM-DDThh:mm:ss | |
| timezone | No | Time zone for start_time | |
| topic | Yes | Meeting topic | |
| type | Yes | Meeting type (1: instant, 2: scheduled, 3: recurring with no fixed time, 8: recurring 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": "Meeting description",
"type": "string"
},
"duration": {
"description": "Meeting duration in minutes",
"type": "number"
},
"password": {
"description": "Password for the meeting",
"type": "string"
},
"settings": {
"additionalProperties": true,
"description": "Meeting settings",
"properties": {},
"type": "object"
},
"start_time": {
"description": "Meeting start time in format YYYY-MM-DDThh:mm:ss",
"type": "string"
},
"timezone": {
"description": "Time zone for start_time",
"type": "string"
},
"topic": {
"description": "Meeting topic",
"type": "string"
},
"type": {
"description": "Meeting type (1: instant, 2: scheduled, 3: recurring with no fixed time, 8: recurring with fixed time)",
"maximum": 8,
"minimum": 1,
"type": "number"
},
"user_id": {
"description": "The user ID or email address",
"type": "string"
}
},
"required": [
"user_id",
"topic",
"type"
],
"type": "object"
}
Implementation Reference
- src/tools/meetings.js:42-49 (handler)The handler function that executes the create_meeting tool by posting to the Zoom API /users/{user_id}/meetings endpoint.handler: async ({ user_id, ...meetingData }) => { try { const response = await zoomApi.post(`/users/${user_id}/meetings`, meetingData); return handleApiResponse(response); } catch (error) { return handleApiError(error); } }
- src/tools/meetings.js:31-41 (schema)Zod schema defining the input parameters and validation for the create_meeting tool.schema: { user_id: z.string().describe("The user ID or email address"), topic: z.string().describe("Meeting topic"), type: z.number().min(1).max(8).describe("Meeting type (1: instant, 2: scheduled, 3: recurring with no fixed time, 8: recurring with fixed time)"), start_time: z.string().optional().describe("Meeting start time in format YYYY-MM-DDThh:mm:ss"), duration: z.number().optional().describe("Meeting duration in minutes"), timezone: z.string().optional().describe("Time zone for start_time"), password: z.string().optional().describe("Password for the meeting"), agenda: z.string().optional().describe("Meeting description"), settings: z.object({}).passthrough().optional().describe("Meeting settings") },
- src/server.js:46-46 (registration)Registers the meetingsTools array with the MCP server, including the create_meeting tool.registerTools(meetingsTools);
- src/server.js:2-2 (registration)Imports the meetingsTools from src/tools/meetings.js containing the create_meeting tool definition.import { meetingsTools } from './tools/meetings.js';