|
[ |
|
{ |
|
"type": "function", |
|
"function": { |
|
"name": "get_weather", |
|
"description": "Get current weather information for a specific location", |
|
"parameters": { |
|
"type": "object", |
|
"properties": { |
|
"location": { |
|
"type": "string", |
|
"description": "The city or location to get weather for" |
|
} |
|
}, |
|
"required": [ |
|
"location" |
|
] |
|
} |
|
} |
|
}, |
|
{ |
|
"type": "function", |
|
"function": { |
|
"name": "browse_website", |
|
"description": "Browses any website and returns its content. Can extract webpage title, text content, or specific elements.", |
|
"parameters": { |
|
"type": "object", |
|
"properties": { |
|
"url": { |
|
"type": "string", |
|
"description": "The URL to browse. Must include http:// or https:// prefix." |
|
} |
|
}, |
|
"required": [ |
|
"url" |
|
] |
|
} |
|
} |
|
}, |
|
{ |
|
"type": "function", |
|
"function": { |
|
"name": "wait_for_multiple_choice_answer", |
|
"description": "Present a question with multiple choice options to the user and wait for their response", |
|
"parameters": { |
|
"type": "object", |
|
"properties": { |
|
"question": { |
|
"type": "string", |
|
"description": "The main question to ask the user" |
|
}, |
|
"options": { |
|
"type": "array", |
|
"items": { |
|
"type": "string" |
|
}, |
|
"description": "List of options for the user to choose from" |
|
}, |
|
"allowMultiple": { |
|
"type": "boolean", |
|
"description": "Whether the user can select multiple options" |
|
} |
|
}, |
|
"required": [ |
|
"question", |
|
"options" |
|
] |
|
} |
|
} |
|
}, |
|
{ |
|
"type": "function", |
|
"function": { |
|
"name": "search_youtube", |
|
"description": "Search YouTube for videos matching the given query and return an AI snapshot of results", |
|
"parameters": { |
|
"type": "object", |
|
"properties": { |
|
"query": { |
|
"type": "string", |
|
"description": "The search query to look for videos" |
|
} |
|
}, |
|
"required": [ |
|
"query" |
|
] |
|
} |
|
} |
|
}, |
|
{ |
|
"type": "function", |
|
"function": { |
|
"name": "render_playlist", |
|
"description": "Render a playlist from the provided videos", |
|
"parameters": { |
|
"type": "object", |
|
"properties": { |
|
"title": { |
|
"type": "string", |
|
"description": "The title of the playlist" |
|
}, |
|
"description": { |
|
"type": "string", |
|
"description": "Description of the playlist" |
|
}, |
|
"videos": { |
|
"type": "array", |
|
"items": { |
|
"type": "object", |
|
"properties": { |
|
"title": { |
|
"type": "string" |
|
}, |
|
"artist": { |
|
"type": "string" |
|
}, |
|
"thumbnail": { |
|
"type": "string" |
|
}, |
|
"duration": { |
|
"type": "string" |
|
} |
|
} |
|
}, |
|
"description": "List of videos in the playlist" |
|
} |
|
}, |
|
"required": [ |
|
"title", |
|
"videos" |
|
] |
|
} |
|
} |
|
}, |
|
{ |
|
"type": "function", |
|
"function": { |
|
"name": "get_open_tabs", |
|
"description": "Get information about all currently open tabs in the browser", |
|
"parameters": { |
|
"type": "object", |
|
"properties": {}, |
|
"required": [] |
|
} |
|
} |
|
}, |
|
{ |
|
"type": "function", |
|
"function": { |
|
"name": "get_tab_details", |
|
"description": "Get detailed information about a specific tab by ID. If no tabId is provided, uses the current tab context.", |
|
"parameters": { |
|
"type": "object", |
|
"properties": { |
|
"tabId": { |
|
"type": "string", |
|
"description": "The ID of the tab to get details for (optional if context provides tabId)" |
|
} |
|
}, |
|
"required": [] |
|
} |
|
} |
|
}, |
|
{ |
|
"type": "function", |
|
"function": { |
|
"name": "get_ai_snapshot", |
|
"description": "Get an AI snapshot of a tab. This is used to tell what is on a given tab/website as an accessibility snapshot. If no tabId is provided, uses the current tab context.", |
|
"parameters": { |
|
"type": "object", |
|
"properties": { |
|
"tabId": { |
|
"type": "string", |
|
"description": "The ID of the tab to get a snapshot of (optional if context provides tabId)" |
|
} |
|
}, |
|
"required": [] |
|
} |
|
} |
|
}, |
|
{ |
|
"type": "function", |
|
"function": { |
|
"name": "get_browser_history", |
|
"description": "Get browser history to understand user interests and provide context for tasks. Can search by keywords, domains, or get most visited sites. Useful for understanding user preferences when creating playlists, recommendations, or understanding browsing patterns.", |
|
"parameters": { |
|
"type": "object", |
|
"properties": { |
|
"query": { |
|
"type": "string", |
|
"description": "Search query to filter history by URL or title keywords (e.g., \"javascript\", \"music\", \"cooking\")" |
|
}, |
|
"domain": { |
|
"type": "string", |
|
"description": "Filter history by specific domain (e.g., \"youtube.com\", \"github.com\", \"spotify.com\")" |
|
}, |
|
"limit": { |
|
"type": "number", |
|
"description": "Maximum number of results to return (default: 50, max: 200)", |
|
"minimum": 1, |
|
"maximum": 200 |
|
}, |
|
"sortBy": { |
|
"type": "string", |
|
"enum": [ |
|
"relevance", |
|
"recent", |
|
"most_visited" |
|
], |
|
"description": "How to sort the results (default: relevance)" |
|
}, |
|
"daysBack": { |
|
"type": "number", |
|
"description": "Only include history from the last N days (e.g., 7 for last week, 30 for last month)", |
|
"minimum": 1 |
|
} |
|
}, |
|
"required": [] |
|
} |
|
} |
|
}, |
|
{ |
|
"type": "function", |
|
"function": { |
|
"name": "open_tab", |
|
"description": "Open a new tab with the specified URL and return info about the created tab", |
|
"parameters": { |
|
"type": "object", |
|
"properties": { |
|
"url": { |
|
"type": "string", |
|
"description": "The URL to open in the new tab" |
|
} |
|
}, |
|
"required": [ |
|
"url" |
|
] |
|
} |
|
} |
|
}, |
|
{ |
|
"type": "function", |
|
"function": { |
|
"name": "upsert_content_posts", |
|
"description": "Create content posts from video data (typically from YouTube search results). This allows saving videos as content posts that users can browse in their interest categories.", |
|
"parameters": { |
|
"type": "object", |
|
"properties": { |
|
"videos": { |
|
"type": "array", |
|
"description": "Array of video objects to create content posts from", |
|
"items": { |
|
"type": "object", |
|
"properties": { |
|
"title": { |
|
"type": "string", |
|
"description": "Video title" |
|
}, |
|
"channel": { |
|
"type": "string", |
|
"description": "YouTube channel name" |
|
}, |
|
"views": { |
|
"type": "string", |
|
"description": "View count (e.g., \"1.2M views\")" |
|
}, |
|
"duration": { |
|
"type": "string", |
|
"description": "Video duration (e.g., \"10:35\")" |
|
}, |
|
"thumbnail": { |
|
"type": "string", |
|
"description": "Thumbnail image URL" |
|
}, |
|
"url": { |
|
"type": "string", |
|
"description": "YouTube video URL" |
|
}, |
|
"description": { |
|
"type": "string", |
|
"description": "Video description (optional)" |
|
} |
|
}, |
|
"required": [ |
|
"title", |
|
"url" |
|
] |
|
} |
|
}, |
|
"searchQuery": { |
|
"type": "string", |
|
"description": "The search query used to find these videos (for context)" |
|
} |
|
}, |
|
"required": [ |
|
"videos" |
|
] |
|
} |
|
} |
|
} |
|
] |