create_meeting
Schedule a Zoom meeting by specifying topic, agenda, start time, and timezone. Use this to set up online meetings with custom details.
Instructions
Create a meeting
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| agenda | No | The meeting's agenda. | New Meeting's agenda |
| start_time | No | The meeting's start time. This supports local time and GMT formats.To set a meeting's start time in GMT, use the yyyy-MM-ddTHH:mm:ssZ date-time format. For example, 2020-03-31T12:02:00Z. To set a meeting's start time using a specific timezone, use the yyyy-MM-ddTHH:mm:ss date-time format and specify the timezone ID in the timezone field. If you do not specify a timezone, the timezone value defaults to your Zoom account's timezone. You can also use UTC for the timezone value. Note: If no start_time is set for a scheduled meeting, the start_time is set at the current time and the meeting type changes to an instant meeting, which expires after 30 days. current time is 2026-05-04T21:45:46.369Z. | |
| timezone | No | Timezone for the meeting's start time. The Current timezone is UTC. | |
| topic | No | The meeting's topic. |
Implementation Reference
- operations/meeting.ts:53-62 (handler)The 'createMeeting' async function that sends a POST request to Zoom API to create a meeting. It takes CreateMeetingOptions, calls zoomRequest, and parses the response with ZoomMeetingSchema.
export async function createMeeting(options: CreateMeetingOptions) { const response = await zoomRequest( `https://api.zoom.us/v2/users/me/meetings`, { method: "POST", body: options, }, ); return ZoomMeetingSchema.parse(response); } - operations/meeting.ts:9-28 (schema)CreateMeetingOptionsSchema - Zod schema defining input validation for create_meeting tool with fields: agenda, start_time, timezone, and topic.
export const CreateMeetingOptionsSchema = z.object({ agenda: z .string() .max(2000) .describe("The meeting's agenda.") .default("New Meeting's agenda"), start_time: z .string() .optional() .describe( `The meeting's start time. This supports local time and GMT formats.To set a meeting's start time in GMT, use the yyyy-MM-ddTHH:mm:ssZ date-time format. For example, 2020-03-31T12:02:00Z. To set a meeting's start time using a specific timezone, use the yyyy-MM-ddTHH:mm:ss date-time format and specify the timezone ID in the timezone field. If you do not specify a timezone, the timezone value defaults to your Zoom account's timezone. You can also use UTC for the timezone value. Note: If no start_time is set for a scheduled meeting, the start_time is set at the current time and the meeting type changes to an instant meeting, which expires after 30 days. current time is ${new Date().toISOString()}.`, ), timezone: z .string() .optional() .describe( `Timezone for the meeting's start time. The Current timezone is ${Intl.DateTimeFormat().resolvedOptions().timeZone}.`, ), topic: z.string().max(200).optional().describe("The meeting's topic."), }); - operations/meeting.ts:48-48 (helper)TypeScript type CreateMeetingOptions inferred from the Zod schema.
export type CreateMeetingOptions = z.infer<typeof CreateMeetingOptionsSchema>; - index.ts:123-148 (registration)Registration of 'create_meeting' tool in ListToolsRequestSchema handler, defining its name, description, and inputSchema.
server.setRequestHandler(ListToolsRequestSchema, async () => { return { tools: [ { name: "create_meeting", description: "Create a meeting", inputSchema: zodToJsonSchema(CreateMeetingOptionsSchema), }, { name: "list_meetings", description: "List scheduled meetings", inputSchema: zodToJsonSchema(ListMeetingOptionsSchema), }, { name: "delete_a_meeting", description: "Delete a meeting with a given ID", inputSchema: zodToJsonSchema(DeleteMeetingOptionsSchema), }, { name: "get_a_meeting_details", description: "Retrieve the meeting's details with a given ID", inputSchema: zodToJsonSchema(GetMeetingOptionsSchema), }, ], }; }); - index.ts:150-162 (handler)CallToolRequestSchema handler that dispatches 'create_meeting' - parses arguments with CreateMeetingOptionsSchema and calls createMeeting().
server.setRequestHandler(CallToolRequestSchema, async (request) => { try { if (!request.params.arguments) { throw new Error("No arguments provided"); } switch (request.params.name) { case "create_meeting": { const args = CreateMeetingOptionsSchema.parse(request.params.arguments); const result = await createMeeting(args); return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }], }; }