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:
- Install required dependencies:
uv pip install agno requests openai-
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:adminmeeting:read:admincloud_recording:read:admin
- Note your Account ID, Client ID, and Client Secret
-
Set up environment variables:
export ZOOM_ACCOUNT_ID=your_account_id
export ZOOM_CLIENT_ID=your_client_id
export ZOOM_CLIENT_SECRET=your_client_secretExample 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
| Parameter | Type | Default | Description |
|---|---|---|---|
account_id | Optional[str] | None | Zoom account ID. If not provided, uses ZOOM_ACCOUNT_ID environment variable. |
client_id | Optional[str] | None | Zoom client ID. If not provided, uses ZOOM_CLIENT_ID environment variable. |
client_secret | Optional[str] | None | Zoom client secret. If not provided, uses ZOOM_CLIENT_SECRET environment variable. |
timeout | int | 30 | Per-request HTTP timeout in seconds. |
Toolkit Functions
| Function | Description |
|---|---|
get_access_token | Get or refresh the Server-to-Server OAuth access token |
schedule_meeting | Currently uses /users/me; incompatible with Server-to-Server OAuth until corrected. |
get_upcoming_meetings | Get one page of upcoming meetings (up to 30); pass an explicit user_id. |
list_meetings | Get one page of meetings by type; pass an explicit user_id. |
get_meeting_recordings | Get recordings for a specific meeting |
delete_meeting | Delete a scheduled meeting |
get_meeting | Get 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.