Zoom

Read Zoom meetings and recordings with ZoomTools using Server-to-Server OAuth credentials.

Zoom enables an Agent to interact with Zoom, allowing it to read meetings and recordings and delete existing meetings through the Zoom API. The toolkit uses Zoom's Server-to-Server OAuth authentication for secure API access.

Prerequisites

The Zoom toolkit requires the following setup:

  1. Install required dependencies:
uv pip install agno requests openai
  1. Set up Server-to-Server OAuth app in Zoom Marketplace:

    • Go to Zoom Marketplace
    • Click "Develop" → "Build App"
    • Choose "Server-to-Server OAuth" app type
    • Configure the app with required scopes:
      • meeting:write:admin
      • meeting:read:admin
      • cloud_recording:read:admin
    • Note your Account ID, Client ID, and Client Secret
  2. Set up environment variables:

export ZOOM_ACCOUNT_ID=your_account_id
export ZOOM_CLIENT_ID=your_client_id
export ZOOM_CLIENT_SECRET=your_client_secret

Example Usage

Set ZOOM_USER_ID to a real Zoom user ID or email in the account. This example reads one page of meetings for that user:

export ZOOM_USER_ID="user@example.com"
from os import environ
from agno.agent import Agent
from agno.tools.zoom import ZoomTools

agent = Agent(tools=[ZoomTools(include_tools=["list_meetings", "get_meeting"])])
agent.print_response(
    f"List scheduled meetings for Zoom user {environ['ZOOM_USER_ID']}.",
    markdown=True,
)

The current schedule_meeting implementation hardcodes /users/me/meetings. Zoom's Server-to-Server OAuth API requires an explicit user ID or email, so scheduling needs an upstream adapter fix. The method has no user_id argument to override that path. list_meetings and get_upcoming_meetings accept user_id; always pass it with this authentication mode.

The example selects read tools explicitly. Other methods obtain access tokens internally; exposing get_access_token as a model tool would return the bearer token itself.

Toolkit Params

ParameterTypeDefaultDescription
account_idOptional[str]NoneZoom account ID. If not provided, uses ZOOM_ACCOUNT_ID environment variable.
client_idOptional[str]NoneZoom client ID. If not provided, uses ZOOM_CLIENT_ID environment variable.
client_secretOptional[str]NoneZoom client secret. If not provided, uses ZOOM_CLIENT_SECRET environment variable.
timeoutint30Per-request HTTP timeout in seconds.

Toolkit Functions

FunctionDescription
get_access_tokenGet or refresh the Server-to-Server OAuth access token
schedule_meetingCurrently uses /users/me; incompatible with Server-to-Server OAuth until corrected.
get_upcoming_meetingsGet one page of upcoming meetings (up to 30); pass an explicit user_id.
list_meetingsGet one page of meetings by type; pass an explicit user_id.
get_meeting_recordingsGet recordings for a specific meeting
delete_meetingDelete a scheduled meeting
get_meetingGet detailed information about a specific meeting

You can use include_tools or exclude_tools to modify the list of tools the agent has access to. Learn more about selecting tools.

Rate Limits

The Zoom API groups endpoints into Light, Medium, Heavy, and Resource-intensive categories, each with its own requests-per-second limit that scales with your account plan. Each endpoint's documentation lists which category it falls under.

For exact per-plan values, refer to Zoom API Rate Limits.

Developer Resources