Buildwithclaude zoom-automation
Automate Zoom meeting creation, management, recordings, webinars, and participant tracking via Rube MCP (Composio). Always search tools first for current schemas.
git clone https://github.com/davepoon/buildwithclaude
T=$(mktemp -d) && git clone --depth=1 https://github.com/davepoon/buildwithclaude "$T" && mkdir -p ~/.claude/skills && cp -r "$T/plugins/all-skills/skills/zoom-automation" ~/.claude/skills/davepoon-buildwithclaude-zoom-automation && rm -rf "$T"
plugins/all-skills/skills/zoom-automation/SKILL.mdZoom Automation via Rube MCP
Automate Zoom operations including meeting scheduling, webinar management, cloud recording retrieval, participant tracking, and usage reporting through Composio's Zoom toolkit.
Toolkit docs: composio.dev/toolkits/zoom
Prerequisites
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
- Active Zoom connection via
with toolkitRUBE_MANAGE_CONNECTIONSzoom - Always call
first to get current tool schemasRUBE_SEARCH_TOOLS - Most features require a paid Zoom account (Pro plan or higher)
Setup
Get Rube MCP: Add
https://rube.app/mcp as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
- Verify Rube MCP is available by confirming
respondsRUBE_SEARCH_TOOLS - Call
with toolkitRUBE_MANAGE_CONNECTIONSzoom - If connection is not ACTIVE, follow the returned auth link to complete Zoom OAuth
- Confirm connection status shows ACTIVE before running any workflows
Core Workflows
1. Create and Schedule Meetings
When to use: User wants to create a new Zoom meeting with specific time, duration, and settings
Tool sequence:
- Verify authenticated user and check license type [Prerequisite]ZOOM_GET_USER
- Create the meeting with topic, time, duration, and settings [Required]ZOOM_CREATE_A_MEETING
- Retrieve full meeting details including join_url [Optional]ZOOM_GET_A_MEETING
- Modify meeting settings or reschedule [Optional]ZOOM_UPDATE_A_MEETING
- Register participants for registration-enabled meetings [Optional]ZOOM_ADD_A_MEETING_REGISTRANT
Key parameters:
: Always useuserId
for user-level apps"me"
: Meeting subject linetopic
:type
(instant),1
(scheduled),2
(recurring no fixed time),3
(recurring fixed time)8
: ISO 8601 format (start_time
for UTC oryyyy-MM-ddTHH:mm:ssZ
with timezone field)yyyy-MM-ddTHH:mm:ss
: Timezone ID (e.g.,timezone
)"America/New_York"
: Duration in minutesduration
:settings__auto_recording
,"none"
, or"local""cloud"
: Boolean to enable waiting roomsettings__waiting_room
: Boolean (disabled when waiting room is enabled)settings__join_before_host
: Array of invitee objects with email addressessettings__meeting_invitees
Pitfalls:
must be in the future; Zoom stores and returns times in UTC regardless of input timezonestart_time- If no
is set for typestart_time
, it becomes an instant meeting that expires after 30 days2 - The
for participants andjoin_url
for host come from the create response - persist thesestart_url
expires in 2 hours (or 90 days forstart_url
users)custCreate- Meeting creation is rate-limited to 100 requests/day
- Setting names use double underscores for nesting (e.g.,
)settings__host_video
2. List and Manage Meetings
When to use: User wants to view upcoming, live, or past meetings
Tool sequence:
- List meetings by type (scheduled, live, upcoming, previous) [Required]ZOOM_LIST_MEETINGS
- Get detailed info for a specific meeting [Optional]ZOOM_GET_A_MEETING
- Modify meeting details [Optional]ZOOM_UPDATE_A_MEETING
Key parameters:
: UseuserId
for authenticated user"me"
:type
(default),"scheduled"
,"live"
,"upcoming"
,"upcoming_meetings""previous_meetings"
: Records per page (default 30)page_size
: Pagination token from previous responsenext_page_token
/from
: Date range filtersto
Pitfalls:
excludes instant meetings and only shows unexpired scheduled meetingsZOOM_LIST_MEETINGS- For past meetings, use
type: "previous_meetings" - Pagination: always follow
until empty to get complete resultsnext_page_token - Token expiration:
expires after 15 minutesnext_page_token - Meeting IDs can exceed 10 digits; store as long integers, not standard integers
3. Manage Recordings
When to use: User wants to list, retrieve, or delete cloud recordings
Tool sequence:
- List all cloud recordings for a user within a date range [Required]ZOOM_LIST_ALL_RECORDINGS
- Get recordings for a specific meeting [Optional]ZOOM_GET_MEETING_RECORDINGS
- Move recordings to trash or permanently delete [Optional]ZOOM_DELETE_MEETING_RECORDINGS
- List archived meeting/webinar files [Optional]ZOOM_LIST_ARCHIVED_FILES
Key parameters:
: UseuserId
for authenticated user"me"
/from
: Date range into
format (max 1 month range)yyyy-mm-dd
: Meeting ID or UUID for specific recording retrievalmeetingId
:action
(recoverable) or"trash"
(permanent) for deletion"delete"
: Set toinclude_fields
to get JWT for downloading recordings"download_access_token"
: Settrash
to list recordings from trashtrue
Pitfalls:
- Date range maximum is 1 month; API auto-adjusts
if range exceeds thisfrom - Cloud Recording must be enabled on the account
- UUIDs starting with
or containing/
must be double URL-encoded//
defaults toZOOM_DELETE_MEETING_RECORDINGS
action (recoverable);"trash"
is permanent"delete"- Download URLs require the OAuth token in the Authorization header for passcode-protected recordings
- Requires Pro plan or higher
4. Get Meeting Participants and Reports
When to use: User wants to see who attended a past meeting or get usage statistics
Tool sequence:
- List attendees of a completed meeting [Required]ZOOM_GET_PAST_MEETING_PARTICIPANTS
- Get meeting details and registration info for upcoming meetings [Optional]ZOOM_GET_A_MEETING
- Get daily usage statistics (meetings, participants, minutes) [Optional]ZOOM_GET_DAILY_USAGE_REPORT
- Get AI-generated meeting summary [Optional]ZOOM_GET_A_MEETING_SUMMARY
Key parameters:
: Meeting ID (latest instance) or UUID (specific occurrence)meetingId
: Records per page (default 30)page_size
: Pagination token for large participant listsnext_page_token
Pitfalls:
only works for completed meetings on paid plansZOOM_GET_PAST_MEETING_PARTICIPANTS- Solo meetings (no other participants) return empty results
- UUID encoding: UUIDs starting with
or containing/
must be double-encoded// - Always paginate with
until empty to avoid dropping attendeesnext_page_token
requires a paid plan with AI Companion enabled; free accounts get 400 errorsZOOM_GET_A_MEETING_SUMMARY
has a Heavy rate limit; avoid frequent callsZOOM_GET_DAILY_USAGE_REPORT
5. Manage Webinars
When to use: User wants to list webinars or register participants for webinars
Tool sequence:
- List scheduled or upcoming webinars [Required]ZOOM_LIST_WEBINARS
- Get detailed webinar information [Optional]ZOOM_GET_A_WEBINAR
- Register a participant for a webinar [Optional]ZOOM_ADD_A_WEBINAR_REGISTRANT
Key parameters:
: UseuserId
for authenticated user"me"
:type
(default) or"scheduled""upcoming"
: Records per page (default 30)page_size
: Pagination tokennext_page_token
Pitfalls:
- Webinar features require Pro plan or higher with Webinar add-on
- Free/basic accounts cannot use webinar tools
- Only shows unexpired webinars
- Registration must be enabled on the webinar for
to workZOOM_ADD_A_WEBINAR_REGISTRANT
Common Patterns
ID Resolution
- User ID: Always use
for user-level apps to refer to the authenticated user"me" - Meeting ID: Numeric ID (store as long integer); use for latest instance
- Meeting UUID: Use for specific occurrence of recurring meetings; double-encode if starts with
or contains/// - Occurrence ID: Use with recurring meetings to target a specific occurrence
Pagination
Most Zoom list endpoints use token-based pagination:
- Follow
until it is empty or missingnext_page_token - Token expires after 15 minutes
- Set explicit
(default 30, varies by endpoint)page_size - Do not use
(deprecated on many endpoints)page_number
Time Handling
- Zoom stores all times in UTC internally
- Provide
field alongsidetimezone
for local time inputstart_time - Use ISO 8601 format:
(UTC) oryyyy-MM-ddTHH:mm:ssZ
(with timezone field)yyyy-MM-ddTHH:mm:ss - Date-only fields use
formatyyyy-mm-dd
Known Pitfalls
Plan Requirements
- Most recording and participant features require Pro plan or higher
- Webinar features require Webinar add-on
- AI meeting summaries require AI Companion feature enabled
- Archived files require "Meeting and Webinar Archiving" enabled by Zoom Support
Rate Limits
- Meeting creation: 100 requests/day, 100 updates per meeting in 24 hours
: Moderate throttle; add delays for batch processingZOOM_GET_PAST_MEETING_PARTICIPANTS
: Heavy rate limitZOOM_GET_DAILY_USAGE_REPORT
,ZOOM_GET_A_MEETING
: Light rate limitZOOM_GET_MEETING_RECORDINGS
,ZOOM_LIST_MEETINGS
: Medium rate limitZOOM_LIST_ALL_RECORDINGS
Parameter Quirks
- Nested settings use double underscore notation (e.g.,
)settings__waiting_room
expires in 2 hours; renew via API if neededstart_url
is automatically disabled whenjoin_before_host
iswaiting_roomtrue- Recurring meeting fields (
) only apply to typerecurrence__*
and38
field has max 10 characters with alphanumeric andpassword
,@
,-
,_
only*
Quick Reference
| Task | Tool Slug | Key Params |
|---|---|---|
| Create meeting | | , , , |
| Get meeting details | | |
| Update meeting | | , fields to update |
| List meetings | | , , |
| Get user info | | |
| List recordings | | , , |
| Get recording | | |
| Delete recording | | , |
| Past participants | | , |
| Daily usage report | | date params |
| Meeting summary | | |
| List webinars | | , |
| Get webinar | | webinar ID |
| Register for meeting | | , participant details |
| Register for webinar | | webinar ID, participant details |
| List archived files | | , |
Powered by Composio