get_goodday_smart_query
Query Goodday project management data using natural language to retrieve information about projects, tasks, and users without modifying any data.
Instructions
Natural language interface for common project management queries.
Args: query: Natural language query (e.g., "show me all tasks assigned to John", "what projects do I have")
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes |
Implementation Reference
- goodday_mcp/main.py:1050-1090 (handler)The handler function for the 'get_goodday_smart_query' tool. It processes natural language queries by matching patterns to call other Goodday tools like get_projects, get_users, get_user_assigned_tasks, etc.@mcp.tool() async def get_goodday_smart_query(query: str) -> str: """Natural language interface for common project management queries. Args: query: Natural language query (e.g., "show me all tasks assigned to John", "what projects do I have") """ query_lower = query.lower().strip() # Parse common query patterns if "projects" in query_lower and ("my" in query_lower or "i have" in query_lower): return await get_projects() elif "users" in query_lower or "team members" in query_lower: return await get_users() elif "assigned to" in query_lower: # Extract user name from query user_match = re.search(r"assigned to (\w+)", query_lower) if user_match: user_name = user_match.group(1) user = await find_user_by_name_or_email(user_name) if user: return await get_user_assigned_tasks(user.get("id")) else: return f"User '{user_name}' not found." else: return "Please specify a user name for assigned tasks query." elif "action required" in query_lower: # Extract user name from query user_match = re.search(r"action required (?:for|by) (\w+)", query_lower) if user_match: user_name = user_match.group(1) user = await find_user_by_name_or_email(user_name) if user: return await get_user_action_required_tasks(user.get("id")) else: return f"User '{user_name}' not found." else: return "Please specify a user name for action required tasks query." else: return f"Query not recognized. Try queries like:\n- 'show me all projects'\n- 'show me all users'\n- 'show tasks assigned to [user]'\n- 'show action required tasks for [user]'"