arcade-mcp/toolkits/zoom/arcade_zoom/tools/meetings.py
Renato Byrro cd837a363d
Separate tools & helper funcs in separate files (#192)
Separates utility and helper functions, as well as constant values (e.g.
base URLs), in dedicated files, apart from tools files.
2025-01-08 16:39:25 -03:00

54 lines
1.5 KiB
Python

from typing import Annotated, Optional
from arcade.sdk import ToolContext, tool
from arcade.sdk.auth import Zoom
from arcade_zoom.tools.utils import _handle_zoom_api_error, _send_zoom_request
@tool(
requires_auth=Zoom(
scopes=["meeting:read:list_upcoming_meetings"],
)
)
async def list_upcoming_meetings(
context: ToolContext,
user_id: Annotated[
Optional[str],
"The user's user ID or email address. Defaults to 'me' for the current user.",
] = "me",
) -> Annotated[dict, "List of upcoming meetings within the next 24 hours"]:
"""List a Zoom user's upcoming meetings within the next 24 hours."""
endpoint = f"/users/{user_id}/upcoming_meetings"
response = await _send_zoom_request(context, "GET", endpoint)
if not (200 <= response.status_code < 300):
_handle_zoom_api_error(response)
response_json = response.json()
return dict(response_json)
@tool(
requires_auth=Zoom(
scopes=["meeting:read:invitation"],
)
)
async def get_meeting_invitation(
context: ToolContext,
meeting_id: Annotated[
str,
"The meeting's numeric ID (as a string).",
],
) -> Annotated[dict, "Meeting invitation string"]:
"""Retrieve the invitation note for a specific Zoom meeting."""
endpoint = f"/meetings/{meeting_id}/invitation"
response = await _send_zoom_request(context, "GET", endpoint)
if not (200 <= response.status_code < 300):
_handle_zoom_api_error(response)
response_json = response.json()
return dict(response_json)