Server has 11 tools with complete input schemas and descriptions. Naming follows verb_noun convention (list_, create_, get_, update_, add_, etc.). Descriptions are present but vary in quality, some are concise (10-50 chars), others verbose (100+ chars). All parameters have type definitions and descriptions. However, parameter descriptions lack actionable constraints (enums, ranges, formats). Output schemas are not documented, tools return JSON strings without specifying field structure. Error handling is minimal; no recovery guidance or categorization. No tool annotations (readOnlyHint/destructiveHint). Missing pagination for list_meetings and list_recordings despite potentially large result sets.
Add a registrant to a meeting. Args: meeting_id: The Zoom meeting ID email: Registrant's email first_name: Registrant's first name last_name: Registrant's last name (optional)
Create a new Zoom meeting. Args: topic: Meeting title start_time: Start time in ISO format (e.g., '2026-02-11T10:00:00') duration: Duration in minutes (default: 45) timezone: IANA timezone (default: America/New_York) agenda: Optional meeting description waiting_room: Enable waiting room (default: True) auto_recording: 'cloud', 'local', or 'none' (default: cloud)
Get details for a specific meeting. Args: meeting_id: The Zoom meeting ID
Get AI-generated meeting summary. Args: meeting_id: The Zoom meeting ID
Get participants from a past meeting. Args: meeting_id: The Zoom meeting ID (must be a past meeting)
Output schemas not documented. Tools return JSON strings without specifying field structure (e.g., what fields does create_meeting return?). LLMs cannot plan downstream calls or extract required data.
Parameter descriptions lack actionable constraints. E.g., 'meeting_type' accepts 'upcoming', 'scheduled', 'live', 'pending' but description does not declare these as an enum. 'auto_recording' accepts 'cloud', 'local', 'none' but is free-form string. LLMs will hallucinate invalid values.
No pagination support for list_meetings and list_recordings. Tools accept no limit/offset/cursor parameters. Large result sets will blow context window and degrade LLM reasoning.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 68 | 2026-07-28+ | v2 |
Get recording details for a meeting. Args: meeting_id: The Zoom meeting ID
Get the full transcript (VTT/CC) for a past meeting, parsed into timestamped entries plus a single plain-text block. Requires cloud recording with audio transcription enabled for the meeting. If the file exists but cannot be downloaded anonymously or via Composio, returns metadata + a `note` explaining how to fetch it manually. Args: meeting_id: The Zoom meeting ID (must be a past meeting with a recording)
Get only the plain-text body of a meeting transcript — no JSON wrapper, no timestamps. Useful for piping into an LLM for summarization. Args: meeting_id: The Zoom meeting ID (must be a past meeting with a recording)
List Zoom meetings. Args: meeting_type: Type of meetings - 'upcoming', 'scheduled', 'live', or 'pending'
List cloud recordings in a date range. Args: from_date: Start date (YYYY-MM-DD) to_date: End date (YYYY-MM-DD, optional)
Update an existing meeting. Args: meeting_id: The Zoom meeting ID topic: New title (optional) start_time: New start time in ISO format (optional) duration: New duration in minutes (optional) agenda: New agenda (optional)
No tool annotations. Tools lack readOnlyHint (for get_*, list_*) and destructiveHint (for create_, update_, add_). Agents cannot distinguish safe reads from state-modifying operations without reading descriptions.
Error handling is minimal. No recovery guidance (e.g., 'If meeting not found, try list_meetings first'). No error categorization (retryable vs user-fixable vs fatal). Agents cannot self-correct on failures.