> ## Documentation Index
> Fetch the complete documentation index at: https://docs.pinkfish.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# zoom

> Meetings, recordings, and participants

**Server path:** `/zoom` | **Type:** Application | **PCID required:** Yes

## Tools

| Tool                                                                          | Description                                                                                                                                                                                                                                                                                                                                                                                                    |
| ----------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [`zoom_list_scheduled_meetings`](#zoom_list_scheduled_meetings)               | List scheduled and upcoming meetings for the current user.                                                                                                                                                                                                                                                                                                                                                     |
| [`zoom_get_user_details`](#zoom_get_user_details)                             | Get details about a specific Zoom user                                                                                                                                                                                                                                                                                                                                                                         |
| [`zoom_create_meeting`](#zoom_create_meeting)                                 | Create a new scheduled meeting in Zoom                                                                                                                                                                                                                                                                                                                                                                         |
| [`zoom_get_meeting_details`](#zoom_get_meeting_details)                       | Get details about a specific Zoom meeting                                                                                                                                                                                                                                                                                                                                                                      |
| [`zoom_update_meeting`](#zoom_update_meeting)                                 | Update an existing scheduled meeting in Zoom                                                                                                                                                                                                                                                                                                                                                                   |
| [`zoom_delete_meeting`](#zoom_delete_meeting)                                 | Permanently delete a scheduled meeting in Zoom                                                                                                                                                                                                                                                                                                                                                                 |
| [`zoom_list_webinars`](#zoom_list_webinars)                                   | List all webinars for the current user in Zoom                                                                                                                                                                                                                                                                                                                                                                 |
| [`zoom_create_webinar`](#zoom_create_webinar)                                 | Create a new webinar in Zoom                                                                                                                                                                                                                                                                                                                                                                                   |
| [`zoom_get_webinar_participants`](#zoom_get_webinar_participants)             | Get participants for a specific webinar in Zoom                                                                                                                                                                                                                                                                                                                                                                |
| [`zoom_get_recording_transcript`](#zoom_get_recording_transcript)             | Get transcript from a Zoom meeting recording. Use zoom\_list\_recordings first to get the meeting UUID. Returns artifactUrl that you can reference directly - do NOT fetch the URL content. For workflows, returns transcript\_content directly. from/to are optional; omitting them uses defaults (7 days ago to tomorrow) which often works better for recent recordings due to Zoom indexing lag.           |
| [`zoom_download_recording`](#zoom_download_recording)                         | Download a Zoom meeting recording file (video/audio). Use zoom\_list\_recordings first to get the meeting UUID. Returns either artifactUrl (for direct reference - do NOT fetch the URL content) or downloadUrl with streaming format (for efficient downloading via pf.mcp.downloadFile() or MCP server proxy). Supports MP4 (video), M4A (audio), and other recording formats.                               |
| [`zoom_list_recordings`](#zoom_list_recordings)                               | List past meeting recordings. Returns recording metadata including files and transcripts. Use zoom\_get\_recording\_transcript with the meeting UUID to get transcript content.<br />IMPORTANT: The `download_url` in `recording_files` requires authentication. Append `?access_token=&#123;download_access_token&#125;` to each `download_url`, where `download_access_token` comes from the meeting object. |
| [`zoom_send_chat_message`](#zoom_send_chat_message)                           | Send a chat message to a Zoom contact or channel                                                                                                                                                                                                                                                                                                                                                               |
| [`zoom_list_past_meeting_participants`](#zoom_list_past_meeting_participants) | Get participants list for a past Zoom meeting                                                                                                                                                                                                                                                                                                                                                                  |
| [`zoom_list_user_call_logs`](#zoom_list_user_call_logs)                       | Get Zoom Phone call logs (requires Zoom Phone subscription). For regular meeting recordings (cloud recordings of past meetings), use zoom\_list\_recordings instead.                                                                                                                                                                                                                                           |
| [`zoom_list_channels`](#zoom_list_channels)                                   | List available Zoom chat channels                                                                                                                                                                                                                                                                                                                                                                              |
| [`zoom_list_trigger_capabilities`](#zoom_list_trigger_capabilities)           | List available Zoom trigger types for automation. Used by the trigger configuration system                                                                                                                                                                                                                                                                                                                     |
| [`zoom_poll_trigger`](#zoom_poll_trigger)                                     | Poll for new Zoom cloud recordings since last check. Used by automation triggers. Returns recording metadata including files, duration, and topic                                                                                                                                                                                                                                                              |

***

## zoom\_list\_scheduled\_meetings

List scheduled and upcoming meetings for the current user.

**Parameters:**

| Parameter  | Type   | Required | Default | Description                  |
| ---------- | ------ | -------- | ------- | ---------------------------- |
| `pageSize` | number | No       | `30`    | Number of meetings to return |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID"
      },
      "pageSize": {
        "type": "number",
        "default": 30,
        "description": "Number of meetings to return"
      }
    },
    "required": [
      "PCID"
    ]
  }
  ```
</Expandable>

***

## zoom\_get\_user\_details

Get details about a specific Zoom user

**Parameters:**

| Parameter | Type   | Required | Default | Description                                              |
| --------- | ------ | -------- | ------- | -------------------------------------------------------- |
| `userId`  | string | No       | `"me"`  | User ID to get details for, defaults to the current user |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID"
      },
      "userId": {
        "type": "string",
        "default": "me",
        "description": "User ID to get details for, defaults to the current user"
      }
    },
    "required": [
      "PCID"
    ]
  }
  ```
</Expandable>

***

## zoom\_create\_meeting

Create a new scheduled meeting in Zoom

**Parameters:**

| Parameter   | Type   | Required | Default | Description                                                                                         |
| ----------- | ------ | -------- | ------- | --------------------------------------------------------------------------------------------------- |
| `topic`     | string | Yes      | —       | Topic of the meeting                                                                                |
| `type`      | string | Yes      | —       | Type of the meeting (1: Instant, 2: Scheduled, 3: Recurring No Fixed Time, 8: Recurring Fixed Time) |
| `startTime` | string | Yes      | —       | Meeting start time in ISO 8601 format                                                               |
| `duration`  | number | Yes      | —       | Meeting duration in minutes                                                                         |
| `timezone`  | string | Yes      | —       | Meeting timezone (e.g., "America/New\_York", "UTC")                                                 |
| `agenda`    | string | No       | —       | Meeting agenda or description                                                                       |
| `settings`  | object | No       | —       | Optional meeting configuration settings                                                             |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID"
      },
      "topic": {
        "type": "string",
        "description": "Topic of the meeting"
      },
      "type": {
        "type": "string",
        "enum": [
          "Instant",
          "Scheduled",
          "RecurringNoFixedTime",
          "RecurringFixedTime",
          1,
          2,
          3,
          8
        ],
        "description": "Type of the meeting (1: Instant, 2: Scheduled, 3: Recurring No Fixed Time, 8: Recurring Fixed Time)"
      },
      "startTime": {
        "type": "string",
        "description": "Meeting start time in ISO 8601 format"
      },
      "duration": {
        "type": "number",
        "description": "Meeting duration in minutes"
      },
      "timezone": {
        "type": "string",
        "description": "Meeting timezone (e.g., \"America/New_York\", \"UTC\")"
      },
      "agenda": {
        "type": "string",
        "description": "Meeting agenda or description"
      },
      "settings": {
        "type": "object",
        "properties": {
          "hostVideo": {
            "type": "boolean",
            "description": "Start meeting with host video enabled"
          },
          "participantVideo": {
            "type": "boolean",
            "description": "Start meeting with participant video enabled"
          },
          "joinBeforeHost": {
            "type": "boolean",
            "description": "Allow participants to join before the host"
          },
          "muteUponEntry": {
            "type": "boolean",
            "description": "Mute participants when they join the meeting"
          },
          "waitingRoom": {
            "type": "boolean",
            "description": "Enable waiting room for additional security"
          },
          "autoRecording": {
            "type": "string",
            "description": "Auto recording setting: \"local\", \"cloud\", or \"none\""
          }
        },
        "description": "Optional meeting configuration settings"
      }
    },
    "required": [
      "PCID",
      "topic",
      "type",
      "startTime",
      "duration",
      "timezone"
    ]
  }
  ```
</Expandable>

***

## zoom\_get\_meeting\_details

Get details about a specific Zoom meeting

**Parameters:**

| Parameter   | Type   | Required | Default | Description                            |
| ----------- | ------ | -------- | ------- | -------------------------------------- |
| `meetingId` | string | Yes      | —       | Zoom Meeting ID or Personal Meeting ID |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID"
      },
      "meetingId": {
        "type": "string",
        "description": "Zoom Meeting ID or Personal Meeting ID"
      }
    },
    "required": [
      "PCID",
      "meetingId"
    ]
  }
  ```
</Expandable>

***

## zoom\_update\_meeting

Update an existing scheduled meeting in Zoom

**Parameters:**

| Parameter   | Type   | Required | Default | Description                           |
| ----------- | ------ | -------- | ------- | ------------------------------------- |
| `meetingId` | string | Yes      | —       | Zoom Meeting ID to update             |
| `topic`     | string | No       | —       | Updated meeting title/topic           |
| `duration`  | number | No       | —       | Updated meeting duration in minutes   |
| `agenda`    | string | No       | —       | Updated meeting agenda or description |
| `settings`  | object | No       | —       | Optional settings for the meeting     |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID"
      },
      "meetingId": {
        "type": "string",
        "description": "Zoom Meeting ID to update"
      },
      "topic": {
        "type": "string",
        "description": "Updated meeting title/topic"
      },
      "duration": {
        "type": "number",
        "description": "Updated meeting duration in minutes"
      },
      "agenda": {
        "type": "string",
        "description": "Updated meeting agenda or description"
      },
      "settings": {
        "type": "object",
        "properties": {
          "joinBeforeHost": {
            "type": "boolean",
            "description": "Allow participants to join before the host"
          },
          "waitingRoom": {
            "type": "boolean",
            "description": "Whether to enable waiting room"
          }
        },
        "description": "Optional settings for the meeting"
      }
    },
    "required": [
      "PCID",
      "meetingId"
    ]
  }
  ```
</Expandable>

***

## zoom\_delete\_meeting

Permanently delete a scheduled meeting in Zoom

**Parameters:**

| Parameter   | Type   | Required | Default | Description               |
| ----------- | ------ | -------- | ------- | ------------------------- |
| `meetingId` | string | Yes      | —       | Zoom Meeting ID to delete |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID"
      },
      "meetingId": {
        "type": "string",
        "description": "Zoom Meeting ID to delete"
      }
    },
    "required": [
      "PCID",
      "meetingId"
    ]
  }
  ```
</Expandable>

***

## zoom\_list\_webinars

List all webinars for the current user in Zoom

**Parameters:**

| Parameter  | Type   | Required | Default       | Description                                                                                                                    |
| ---------- | ------ | -------- | ------------- | ------------------------------------------------------------------------------------------------------------------------------ |
| `pageSize` | number | No       | `30`          | Number of webinars to return                                                                                                   |
| `type`     | string | No       | `"scheduled"` | The type of webinar: scheduled (all valid previous, live, and upcoming webinars) or upcoming (only upcoming and live webinars) |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID"
      },
      "pageSize": {
        "type": "number",
        "default": 30,
        "description": "Number of webinars to return"
      },
      "type": {
        "type": "string",
        "enum": [
          "scheduled",
          "upcoming"
        ],
        "default": "scheduled",
        "description": "The type of webinar: scheduled (all valid previous, live, and upcoming webinars) or upcoming (only upcoming and live webinars)"
      }
    },
    "required": [
      "PCID"
    ]
  }
  ```
</Expandable>

***

## zoom\_create\_webinar

Create a new webinar in Zoom

**Parameters:**

| Parameter         | Type      | Required | Default | Description                                                                                                                         |
| ----------------- | --------- | -------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------- |
| `topic`           | string    | Yes      | —       | The main topic of the webinar                                                                                                       |
| `type`            | string    | Yes      | —       | Webinar type: 5 = Webinar, 6 = Recurring webinar (no fixed time), 9 = Recurring webinar (fixed time)                                |
| `startTime`       | string    | No       | —       | Webinar start time in ISO 8601 format (e.g., "2024-01-15T10:00:00Z"). Only for scheduled and/or recurring webinars with fixed time. |
| `duration`        | number    | No       | —       | The webinar duration in minutes. Only used for scheduled webinars.                                                                  |
| `timezone`        | string    | No       | —       | The timezone to assign to the start\_time value. Only for scheduled or recurring webinars with a fixed time.                        |
| `agenda`          | string    | No       | —       | A description for the webinar                                                                                                       |
| `password`        | string    | No       | —       | The webinar passcode (max 10 alphanumeric characters including special characters like !, @, #)                                     |
| `defaultPasscode` | boolean   | No       | `true`  | Whether to automatically generate a passcode when none is provided and user Passcode setting is enabled                             |
| `scheduleFor`     | string    | No       | —       | The email address or user ID of the user for whom the webinar is being scheduled                                                    |
| `templateId`      | string    | No       | —       | The ID of a webinar template to use for scheduling                                                                                  |
| `recurrence`      | object    | No       | —       | Recurrence settings for recurring webinars of type 9 (fixed time)                                                                   |
| `settings`        | object    | No       | —       | Optional webinar configuration settings                                                                                             |
| `tracking_fields` | object\[] | No       | —       | Custom tracking fields for the webinar                                                                                              |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID"
      },
      "topic": {
        "type": "string",
        "description": "The main topic of the webinar"
      },
      "type": {
        "type": "string",
        "enum": [
          "Webinar",
          "RecurringNoFixedTime",
          "RecurringFixedTime",
          5,
          6,
          9
        ],
        "description": "Webinar type: 5 = Webinar, 6 = Recurring webinar (no fixed time), 9 = Recurring webinar (fixed time)"
      },
      "startTime": {
        "type": "string",
        "description": "Webinar start time in ISO 8601 format (e.g., \"2024-01-15T10:00:00Z\"). Only for scheduled and/or recurring webinars with fixed time."
      },
      "duration": {
        "type": "number",
        "description": "The webinar duration in minutes. Only used for scheduled webinars."
      },
      "timezone": {
        "type": "string",
        "description": "The timezone to assign to the start_time value. Only for scheduled or recurring webinars with a fixed time."
      },
      "agenda": {
        "type": "string",
        "description": "A description for the webinar"
      },
      "password": {
        "type": "string",
        "description": "The webinar passcode (max 10 alphanumeric characters including special characters like !, @, #)"
      },
      "defaultPasscode": {
        "type": "boolean",
        "default": true,
        "description": "Whether to automatically generate a passcode when none is provided and user Passcode setting is enabled"
      },
      "scheduleFor": {
        "type": "string",
        "description": "The email address or user ID of the user for whom the webinar is being scheduled"
      },
      "templateId": {
        "type": "string",
        "description": "The ID of a webinar template to use for scheduling"
      },
      "recurrence": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "Daily",
              "Weekly",
              "Monthly",
              1,
              2,
              3
            ],
            "description": "Recurrence type: 1 = Daily, 2 = Weekly, 3 = Monthly"
          },
          "repeatInterval": {
            "type": "number",
            "description": "Interval between recurrences"
          },
          "endTimes": {
            "type": "number",
            "description": "Number of times the webinar will recur"
          },
          "endDateTime": {
            "type": "string",
            "description": "End date and time for recurring webinar"
          },
          "weeklyDays": {
            "type": "string",
            "description": "Days of the week for weekly recurrence (1-7, where 1=Sunday)"
          },
          "monthlyDay": {
            "type": "number",
            "description": "Day of the month for monthly recurrence"
          },
          "monthlyWeek": {
            "type": "number",
            "description": "Week of the month for monthly recurrence"
          },
          "monthlyWeekDay": {
            "type": "number",
            "description": "Day of the week for monthly recurrence"
          }
        },
        "description": "Recurrence settings for recurring webinars of type 9 (fixed time)"
      },
      "settings": {
        "type": "object",
        "properties": {
          "host_video": {
            "type": "boolean",
            "description": "Whether to enable host video"
          },
          "panelists_video": {
            "type": "boolean",
            "description": "Whether to enable panelists video"
          },
          "practice_session": {
            "type": "boolean",
            "description": "Whether to enable practice session"
          },
          "hd_video": {
            "type": "boolean",
            "description": "Whether to enable HD video"
          },
          "hd_video_for_attendees": {
            "type": "boolean",
            "description": "Whether to enable HD video for attendees"
          },
          "approval_type": {
            "type": "string",
            "enum": [
              "AutomaticallyApprove",
              "ManuallyApprove",
              "NoRegistrationRequired",
              0,
              1,
              2
            ],
            "description": "Registration approval type: 0 = Automatically approve, 1 = Manually approve, 2 = No registration required"
          },
          "registration_type": {
            "type": "number",
            "description": "Registration type for the webinar"
          },
          "audio": {
            "type": "string",
            "enum": [
              "both",
              "telephony",
              "voip",
              "thirdParty"
            ],
            "description": "Audio options: both = Computer and telephone, telephony = Telephone only, voip = Computer audio only, thirdParty = Third party audio"
          },
          "auto_recording": {
            "type": "string",
            "enum": [
              "local",
              "cloud",
              "none"
            ],
            "description": "Auto recording setting: local = Local recording, cloud = Cloud recording, none = No recording"
          },
          "enforce_login": {
            "type": "boolean",
            "description": "Whether to enforce login for the webinar"
          },
          "allow_multiple_devices": {
            "type": "boolean",
            "description": "Whether to allow attendees to join from multiple devices"
          },
          "alternative_hosts": {
            "type": "string",
            "description": "Alternative host email addresses (semicolon-separated)"
          },
          "alternative_host_update_polls": {
            "type": "boolean",
            "description": "Whether alternative hosts can update polls"
          },
          "audio_conference_info": {
            "type": "string",
            "description": "Audio conference information"
          },
          "authentication_domains": {
            "type": "string",
            "description": "Authentication domains (comma-separated)"
          },
          "authentication_option": {
            "type": "string",
            "description": "Authentication option ID"
          },
          "contact_email": {
            "type": "string",
            "description": "Contact email for the webinar"
          },
          "contact_name": {
            "type": "string",
            "description": "Contact name for the webinar"
          },
          "email_language": {
            "type": "string",
            "description": "Email language (e.g., \"en-US\")"
          },
          "global_dial_in_countries": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Global dial-in countries (array of country codes)"
          },
          "language_interpretation": {
            "type": "object",
            "properties": {
              "enable": {
                "type": "boolean",
                "description": "Whether to enable language interpretation"
              },
              "interpreters": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "email": {
                      "type": "string",
                      "description": "Interpreter email address"
                    }
                  }
                },
                "description": "List of interpreters"
              }
            },
            "description": "Language interpretation settings"
          },
          "attendees_and_panelists_reminder_email_notification": {
            "type": "object",
            "properties": {
              "enable": {
                "type": "boolean",
                "description": "Whether to enable reminder email notifications"
              },
              "type": {
                "type": "number",
                "description": "Reminder type"
              }
            },
            "description": "Attendees and panelists reminder email notification settings"
          },
          "follow_up_absentees_email_notification": {
            "type": "object",
            "properties": {
              "enable": {
                "type": "boolean",
                "description": "Whether to enable follow-up email for absentees"
              },
              "type": {
                "type": "number",
                "description": "Follow-up type"
              }
            },
            "description": "Follow-up absentees email notification settings"
          },
          "follow_up_attendees_email_notification": {
            "type": "object",
            "properties": {
              "enable": {
                "type": "boolean",
                "description": "Whether to enable follow-up email for attendees"
              },
              "type": {
                "type": "number",
                "description": "Follow-up type"
              }
            },
            "description": "Follow-up attendees email notification settings"
          }
        },
        "description": "Optional webinar configuration settings"
      },
      "tracking_fields": {
        "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "field": {
              "type": "string",
              "description": "Tracking field name"
            },
            "value": {
              "type": "string",
              "description": "Tracking field value"
            }
          }
        },
        "description": "Custom tracking fields for the webinar"
      }
    },
    "required": [
      "PCID",
      "topic",
      "type"
    ]
  }
  ```
</Expandable>

***

## zoom\_get\_webinar\_participants

Get participants for a specific webinar in Zoom

**Parameters:**

| Parameter   | Type   | Required | Default | Description                             |
| ----------- | ------ | -------- | ------- | --------------------------------------- |
| `webinarId` | string | Yes      | —       | Zoom Webinar ID to get participants for |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID"
      },
      "webinarId": {
        "type": "string",
        "description": "Zoom Webinar ID to get participants for"
      }
    },
    "required": [
      "PCID",
      "webinarId"
    ]
  }
  ```
</Expandable>

***

## zoom\_get\_recording\_transcript

Get transcript from a Zoom meeting recording. Use zoom\_list\_recordings first to get the meeting UUID. Returns artifactUrl that you can reference directly - do NOT fetch the URL content. For workflows, returns transcript\_content directly. from/to are optional; omitting them uses defaults (7 days ago to tomorrow) which often works better for recent recordings due to Zoom indexing lag.

**Parameters:**

| Parameter     | Type   | Required | Default | Description                                                                                                                                           |
| ------------- | ------ | -------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
| `meetingUuid` | string | Yes      | —       | Meeting UUID from recordings (e.g., "VUe3+A+uSwC1Rb1Cxo/L4w=="). Use the "uuid" field from zoom\_list\_recordings response.                           |
| `from`        | string | No       | —       | Start date for recording search in YYYY-MM-DD format. Defaults to 7 days ago if not specified.                                                        |
| `to`          | string | No       | —       | End date for recording search in YYYY-MM-DD format. Defaults to tomorrow (today + 1 day) to handle timezone boundaries and indexing lag.              |
| `timezone`    | string | No       | —       | IANA timezone string (e.g., "America/Los\_Angeles"). Use the "timezone" field from zoom\_list\_recordings response. Defaults to UTC if not specified. |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID"
      },
      "meetingUuid": {
        "type": "string",
        "description": "Meeting UUID from recordings (e.g., \"VUe3+A+uSwC1Rb1Cxo/L4w==\"). Use the \"uuid\" field from zoom_list_recordings response."
      },
      "from": {
        "type": "string",
        "description": "Start date for recording search in YYYY-MM-DD format. Defaults to 7 days ago if not specified."
      },
      "to": {
        "type": "string",
        "description": "End date for recording search in YYYY-MM-DD format. Defaults to tomorrow (today + 1 day) to handle timezone boundaries and indexing lag."
      },
      "timezone": {
        "type": "string",
        "description": "IANA timezone string (e.g., \"America/Los_Angeles\"). Use the \"timezone\" field from zoom_list_recordings response. Defaults to UTC if not specified."
      }
    },
    "required": [
      "PCID",
      "meetingUuid"
    ]
  }
  ```
</Expandable>

***

## zoom\_download\_recording

Download a Zoom meeting recording file (video/audio). Use zoom\_list\_recordings first to get the meeting UUID. Returns either artifactUrl (for direct reference - do NOT fetch the URL content) or downloadUrl with streaming format (for efficient downloading via pf.mcp.downloadFile() or MCP server proxy). Supports MP4 (video), M4A (audio), and other recording formats.

**Parameters:**

| Parameter     | Type   | Required | Default | Description                                                                                                                                                                                                                                                                      |
| ------------- | ------ | -------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `meetingUuid` | string | Yes      | —       | Meeting UUID from recordings (e.g., "VUe3+A+uSwC1Rb1Cxo/L4w=="). Use the "uuid" field from zoom\_list\_recordings response.                                                                                                                                                      |
| `fileType`    | string | No       | —       | Type of recording file to download. If not specified, downloads the first available recording file (prefers MP4, then M4A). Use "MP4" for video recordings, "M4A" for audio-only recordings. Note: Transcripts are not supported - use zoom\_get\_recording\_transcript instead. |
| `from`        | string | No       | —       | Start date for recording search in YYYY-MM-DD format. Defaults to 7 days ago if not specified.                                                                                                                                                                                   |
| `to`          | string | No       | —       | End date for recording search in YYYY-MM-DD format. Defaults to tomorrow (today + 1 day) to handle timezone boundaries and indexing lag.                                                                                                                                         |
| `timezone`    | string | No       | —       | IANA timezone string (e.g., "America/Los\_Angeles"). Use the "timezone" field from zoom\_list\_recordings response. Defaults to UTC if not specified.                                                                                                                            |
| `filename`    | string | No       | —       | Custom filename for the downloaded recording                                                                                                                                                                                                                                     |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID"
      },
      "meetingUuid": {
        "type": "string",
        "description": "Meeting UUID from recordings (e.g., \"VUe3+A+uSwC1Rb1Cxo/L4w==\"). Use the \"uuid\" field from zoom_list_recordings response."
      },
      "fileType": {
        "type": "string",
        "enum": [
          "MP4",
          "M4A",
          "TIMELINE",
          "CHAT",
          "CC",
          "CSV"
        ],
        "description": "Type of recording file to download. If not specified, downloads the first available recording file (prefers MP4, then M4A). Use \"MP4\" for video recordings, \"M4A\" for audio-only recordings. Note: Transcripts are not supported - use zoom_get_recording_transcript instead."
      },
      "from": {
        "type": "string",
        "description": "Start date for recording search in YYYY-MM-DD format. Defaults to 7 days ago if not specified."
      },
      "to": {
        "type": "string",
        "description": "End date for recording search in YYYY-MM-DD format. Defaults to tomorrow (today + 1 day) to handle timezone boundaries and indexing lag."
      },
      "timezone": {
        "type": "string",
        "description": "IANA timezone string (e.g., \"America/Los_Angeles\"). Use the \"timezone\" field from zoom_list_recordings response. Defaults to UTC if not specified."
      },
      "filename": {
        "type": "string",
        "description": "Custom filename for the downloaded recording"
      }
    },
    "required": [
      "PCID",
      "meetingUuid"
    ]
  }
  ```
</Expandable>

***

## zoom\_list\_recordings

List past meeting recordings. Returns recording metadata including files and transcripts. Use zoom\_get\_recording\_transcript with the meeting UUID to get transcript content.

IMPORTANT: The `download_url` in `recording_files` requires authentication. Append `?access_token=&#123;download_access_token&#125;` to each `download_url`, where `download_access_token` comes from the meeting object.

**Parameters:**

| Parameter       | Type    | Required | Default                | Description                                                                                                                                                                                             |
| --------------- | ------- | -------- | ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `userId`        | string  | No       | `"me"`                 | The user's ID or email address. For user-level apps, pass 'me'                                                                                                                                          |
| `pageSize`      | number  | No       | `30`                   | The number of records returned within a single API call (max: 300)                                                                                                                                      |
| `nextPageToken` | string  | No       | —                      | The next page token paginates through a large set of results. Expires in 15 minutes.                                                                                                                    |
| `mc`            | string  | No       | `"false"`              | The query metadata of the recording if using an on-premise meeting connector                                                                                                                            |
| `trash`         | boolean | No       | `false`                | List recordings from trash: true = List from trash, false = Do not list from trash                                                                                                                      |
| `from`          | string  | No       | —                      | Start date in 'yyyy-mm-dd' UTC format. Maximum range is a month. Defaults to current date if not provided. For 'today' in a timezone like PST, use from=today and to=tomorrow to span the UTC boundary. |
| `to`            | string  | No       | —                      | End date in 'yyyy-mm-dd' UTC format. For 'today' in PST, use tomorrow's date as to (since today in PST spans two UTC dates).                                                                            |
| `trashType`     | string  | No       | `"meeting_recordings"` | Type of cloud recording to retrieve from trash: meeting\_recordings (List all meeting recordings) or recording\_file (List all individual recording files)                                              |
| `meetingId`     | number  | No       | —                      | The meeting ID to filter recordings                                                                                                                                                                     |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID"
      },
      "userId": {
        "type": "string",
        "default": "me",
        "description": "The user's ID or email address. For user-level apps, pass 'me'"
      },
      "pageSize": {
        "type": "number",
        "default": 30,
        "description": "The number of records returned within a single API call (max: 300)"
      },
      "nextPageToken": {
        "type": "string",
        "description": "The next page token paginates through a large set of results. Expires in 15 minutes."
      },
      "mc": {
        "type": "string",
        "default": "false",
        "description": "The query metadata of the recording if using an on-premise meeting connector"
      },
      "trash": {
        "type": "boolean",
        "default": false,
        "description": "List recordings from trash: true = List from trash, false = Do not list from trash"
      },
      "from": {
        "type": "string",
        "description": "Start date in 'yyyy-mm-dd' UTC format. Maximum range is a month. Defaults to current date if not provided. For 'today' in a timezone like PST, use from=today and to=tomorrow to span the UTC boundary."
      },
      "to": {
        "type": "string",
        "description": "End date in 'yyyy-mm-dd' UTC format. For 'today' in PST, use tomorrow's date as to (since today in PST spans two UTC dates)."
      },
      "trashType": {
        "type": "string",
        "enum": [
          "meeting_recordings",
          "recording_file"
        ],
        "default": "meeting_recordings",
        "description": "Type of cloud recording to retrieve from trash: meeting_recordings (List all meeting recordings) or recording_file (List all individual recording files)"
      },
      "meetingId": {
        "type": "number",
        "description": "The meeting ID to filter recordings"
      }
    },
    "required": [
      "PCID"
    ]
  }
  ```
</Expandable>

***

## zoom\_send\_chat\_message

Send a chat message to a Zoom contact or channel

**Parameters:**

| Parameter   | Type   | Required | Default | Description                                 |
| ----------- | ------ | -------- | ------- | ------------------------------------------- |
| `message`   | string | Yes      | —       | Message content to send                     |
| `toContact` | string | No       | —       | Email address of contact to send message to |
| `toChannel` | string | No       | —       | Channel ID to send message to               |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID"
      },
      "message": {
        "type": "string",
        "description": "Message content to send"
      },
      "toContact": {
        "type": "string",
        "description": "Email address of contact to send message to"
      },
      "toChannel": {
        "type": "string",
        "description": "Channel ID to send message to"
      }
    },
    "required": [
      "PCID",
      "message"
    ]
  }
  ```
</Expandable>

***

## zoom\_list\_past\_meeting\_participants

Get participants list for a past Zoom meeting

**Parameters:**

| Parameter   | Type   | Required | Default | Description                                |
| ----------- | ------ | -------- | ------- | ------------------------------------------ |
| `meetingId` | string | Yes      | —       | Meeting ID or UUID to get participants for |
| `pageSize`  | number | No       | `30`    | Number of participants to return per page  |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID"
      },
      "meetingId": {
        "type": "string",
        "description": "Meeting ID or UUID to get participants for"
      },
      "pageSize": {
        "type": "number",
        "default": 30,
        "description": "Number of participants to return per page"
      }
    },
    "required": [
      "PCID",
      "meetingId"
    ]
  }
  ```
</Expandable>

***

## zoom\_list\_user\_call\_logs

Get Zoom Phone call logs (requires Zoom Phone subscription). For regular meeting recordings (cloud recordings of past meetings), use zoom\_list\_recordings instead.

**Parameters:**

| Parameter   | Type   | Required | Default | Description                        |
| ----------- | ------ | -------- | ------- | ---------------------------------- |
| `userId`    | string | No       | —       | User ID (defaults to current user) |
| `startDate` | string | No       | —       | Start date in yyyy-mm-dd format    |
| `endDate`   | string | No       | —       | End date in yyyy-mm-dd format      |
| `pageSize`  | number | No       | `30`    | Number of call logs to return      |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID"
      },
      "userId": {
        "type": "string",
        "description": "User ID (defaults to current user)"
      },
      "startDate": {
        "type": "string",
        "description": "Start date in yyyy-mm-dd format"
      },
      "endDate": {
        "type": "string",
        "description": "End date in yyyy-mm-dd format"
      },
      "pageSize": {
        "type": "number",
        "default": 30,
        "description": "Number of call logs to return"
      }
    },
    "required": [
      "PCID"
    ]
  }
  ```
</Expandable>

***

## zoom\_list\_channels

List available Zoom chat channels

**Parameters:**

| Parameter       | Type   | Required | Default | Description                    |
| --------------- | ------ | -------- | ------- | ------------------------------ |
| `pageSize`      | number | No       | `50`    | Number of channels to return   |
| `nextPageToken` | string | No       | —       | Next page token for pagination |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID"
      },
      "pageSize": {
        "type": "number",
        "default": 50,
        "description": "Number of channels to return"
      },
      "nextPageToken": {
        "type": "string",
        "description": "Next page token for pagination"
      }
    },
    "required": [
      "PCID"
    ]
  }
  ```
</Expandable>

***

## zoom\_list\_trigger\_capabilities

List available Zoom trigger types for automation. Used by the trigger configuration system

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {}
  }
  ```
</Expandable>

***

## zoom\_poll\_trigger

Poll for new Zoom cloud recordings since last check. Used by automation triggers. Returns recording metadata including files, duration, and topic

**Parameters:**

| Parameter      | Type      | Required | Default | Description                                                                                               |
| -------------- | --------- | -------- | ------- | --------------------------------------------------------------------------------------------------------- |
| `cursor`       | string    | No       | —       | Opaque cursor from previous poll response. Pass this unchanged to get only NEW recordings since last poll |
| `minTimestamp` | number    | No       | —       | Unix timestamp (seconds). Ignore recordings before this time. Typically set to trigger creation time      |
| `eventTypes`   | string\[] | No       | —       | Filter by recording file types. Only meetings containing at least one matching file type are returned     |
| `batchMode`    | boolean   | No       | —       | Process all new recordings in a single automation run (batch) vs one run per recording (individual)       |
| `maxResults`   | number    | No       | `100`   | Maximum number of recording events to return                                                              |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for Zoom connection"
      },
      "cursor": {
        "type": "string",
        "description": "Opaque cursor from previous poll response. Pass this unchanged to get only NEW recordings since last poll"
      },
      "minTimestamp": {
        "type": "number",
        "description": "Unix timestamp (seconds). Ignore recordings before this time. Typically set to trigger creation time"
      },
      "eventTypes": {
        "type": "array",
        "items": {
          "type": "string",
          "enum": [
            "MP4",
            "M4A",
            "TRANSCRIPT",
            "CHAT",
            "CC",
            "TIMELINE"
          ]
        },
        "description": "Filter by recording file types. Only meetings containing at least one matching file type are returned"
      },
      "batchMode": {
        "type": "boolean",
        "description": "Process all new recordings in a single automation run (batch) vs one run per recording (individual)"
      },
      "maxResults": {
        "type": "number",
        "default": 100,
        "description": "Maximum number of recording events to return"
      }
    },
    "required": [
      "PCID"
    ]
  }
  ```
</Expandable>
