INNER CODE UNIT · Python
_execute_tool
existence-master/Sentient · src/server/mcp_hub/gcal/main.py:44
async def _execute_tool(ctx: Context, action_name: str, **kwargs) -> Dict[str, Any]:
"""Helper to handle auth and execution for all tools using Composio."""
tool_name = inspect.stack()[1].function
logger.info(f"Executing tool: {tool_name} with parameters: {kwargs}")
try:
user_id = auth.get_user_id_from_context(ctx)
connection_id = await auth.get_composio_connection_id(user_id, "gcalendar")
# NEW: Fetch user info including privacy filters
user_info = await auth.get_user_info(user_id)
privacy_filters = user_info.get("privacy_filters", {})
keyword_filters = privacy_filters.get("keywords", [])
email_filters = [email.lower() for email in privacy_filters.get("emails", [])]
# Composio's execute method is synchronous, so we use asyncio.to_thread
# Filter out None values from kwargs before passing to Composio
filtered_kwargs = {k: v for k, v in kwargs.items() if v is not None}