browser_click
ChatGPTClicks an element of the page in your tab, with the mouse, as a person would. Returns the page after the click.
browser_navigate
ChatGPTOpens a web page in the user's cloud browser, which is logged in to the user's sites: for websites Upsy has no tools for, like checking an order or a booking. For email, calendar, Slack, Drive and the apps in app_tools, use their tools instead. Your first page opens a new tab of yours (grouped under your name); later ones reuse your current tab unless newTab. back: true goes back a page. Returns a snapshot of the page: its text and elements, with refs for browser_click, browser_type and browser_select. No code needed.
browser_open
ChatGPTFor what the browser_* tools can't do, with your own code: returns a Chrome DevTools Protocol endpoint of the user's cloud browser for Playwright, Puppeteer, browser-use, Stagehand or Playwright MCP (--cdp-endpoint). Most pages are easier with browser_navigate, browser_click and browser_type, which need no code. The browser is logged in to the user's sites. Open your own tabs with context.newPage(); they are grouped under your name. The URL must be used within 5 minutes; the connection then stays open. For Stagehand 4, pass stagehand: true: its extension is loaded in the browser and you get the extensionId to connect with.
browser_press_key
ChatGPTPresses a key in your tab, e.g. Enter, Escape, Tab, ArrowDown, or a shortcut like Control+Enter. It goes to the focused element. Returns the page after.
browser_screenshot
ChatGPTA screenshot of what your tab of the user's browser shows, for when the look matters (images, charts, layout). Brings the tab to the front.
browser_scroll
ChatGPTScrolls the page in your tab by most of a screen, with the mouse wheel; with a ref, the part of the page that element is in. For pages that load more as you scroll. Returns the page after.
browser_select
ChatGPTPicks an option of a dropdown (a <select>) in your tab, by its text. For other menus, click the menu, then the option. Returns the page after.
browser_snapshot
ChatGPTThe page in your tab of the user's browser as it is now: its text and elements, with refs for browser_click, browser_type and browser_select.
browser_tabs
ChatGPTLists your tabs in the user's browser (the ones you opened), marking your current one. close: a tab to close first.
browser_type
ChatGPTTypes text into a field of the page in your tab (an input, a text area or an editor), with the keyboard, replacing what's in it. submit: true presses Enter after. Returns the page after.
create_draft
ChatGPTSaves a draft in the user's Gmail (not sent). For a reply, set replyToMessageId. Attach the user's files, or another email's, with attachments. Returns JSON with the draft's id, for send_message.
email_archive
ChatGPTArchives Gmail emails: they leave the inbox but stay in All Mail and search. Pass read: true to also mark them read.
email_attachment
ChatGPTReturns one Gmail attachment's file (ids from get_message). Up to 10.0 MB; text files come back as text. To save it to Google Drive or attach it to an email, pass its ids instead (drive_upload's from_email, send_message's attachments): Upsy copies it, so it doesn't pass through you.
email_delete_draft
ChatGPTDeletes a Gmail draft for good.
email_labels
ChatGPTLists the user's Gmail labels (their own and system ones like INBOX, STARRED, IMPORTANT).
email_list_drafts
ChatGPTThe user's Gmail drafts, with ids for email_send_draft and email_delete_draft.
email_read_thread
ChatGPTReturns every message in a Gmail thread (thread id from search_threads or get_message), oldest first.
email_send_draft
ChatGPTSends an existing Gmail draft as it is. Only send what the user asked for.
email_trash
ChatGPTMoves Gmail emails to the trash. Gmail deletes them for good after 30 days; until then they can be restored. Only trash what the user asked for.
email_untrash
ChatGPTMoves Gmail emails out of the trash, back where they were.
email_update
ChatGPTChanges Gmail emails: mark read or unread, star or unstar, mark important, move back to the inbox, or add and remove labels by name (see email_labels). New label names are created. To archive, use email_archive.
files_list
ChatGPTLists the user's documents (CV, ID scans, contracts, …) and the files you saved earlier, with their ids.
files_read
ChatGPTReturns a file's extracted text (paged with offset) and a short-lived download URL for the original, e.g. to attach it somewhere.
files_search
ChatGPTSearches the user's own documents (CV, passport and ID scans, contracts, invoices, …) and the files you saved, by meaning. Look here when a task needs one of their documents or personal details, e.g. to fill in a form. Returns matching files with a snippet.
files_upload
ChatGPTSaves a file you produced (report, itinerary, summary, …) into your own folder in the user's Upsy. The user sees it under Agent files; other agents don't. Pass content for text or content_base64 for binary files. Max 2.9 MB.
get_message
ChatGPTOne message from the user's Gmail by id. messageFormat "MINIMAL" returns its headers and labels (id, threadId, labelIds, sender, to, cc, subject, date, snippet); "FULL", the default, adds its text body and attachments. Returns JSON.
memory_read
ChatGPTReturns the user's memory: one markdown document they wrote about themselves (who they are, preferences, family, work, …). Read it at the start of a task to personalize it, and before asking the user for details they may have saved (addresses, preferences, names).
memory_suggest
ChatGPTSuggests adding something to the user's memory, e.g. a lasting preference they just told you. Nothing changes until the user accepts it in their Upsy. Write one short sentence in the user's voice or as a fact about them.
search_threads
ChatGPTSearches the user's Gmail conversations with Gmail search syntax, e.g. "in:sent" or "from:alice newer_than:7d". Returns JSON: threads, each with its messages (id, threadId, labelIds, sender, to, cc, subject, date, snippet).
send_message
ChatGPTSends an email from the user's Gmail: a new one (to, subject, body, and optionally cc, htmlBody and attachments; replyToMessageId to reply in its thread), or a draft by draftId (from create_draft). Only send what the user asked for. Returns JSON with the sent message's id.
slack_list_channels
ChatGPTThe Slack channels, group DMs and DMs the user is in, with ids for slack_read_channel, and the names of DMs' people (users). JSON.
slack_read_channel
ChatGPTA Slack channel's or DM's messages, newest first, with each message's ts (for slack_read_thread and replies), author, and reply_count when it has a thread, plus the names of the people in them (users). JSON.
slack_read_thread
ChatGPTA Slack thread: the message it started from, then its replies, oldest first, with the names of the people in it (users). JSON.
slack_read_user_profile
ChatGPTA person's Slack profile: name, display name, title, email, timezone and status. Without user_id, the user's own. JSON.
slack_search_channels
ChatGPTFinds public and private Slack channels the user can see whose name contains the query, with their ids, topics and member counts. JSON.
slack_search_messages
ChatGPTSearches every Slack message and DM the user can see, e.g. "launch plan" or "what did Ada say about pricing". Returns matches with channel, ts, author, text and permalink. JSON. This is the user's own Slack, connected to Upsy.
slack_search_users
ChatGPTFinds people in the user's Slack workspace by name, display name or email, with their user ids, titles and emails. JSON.
slack_send_message
ChatGPTSends a message as the user to a channel, or to a person's DM with their user id. thread_ts replies in that thread; reply_broadcast also shows the reply in the channel. Uses Slack's mrkdwn (bold, <@U…> mentions). Only send what the user asked for. Returns the message's channel, ts and permalink. JSON. This is the user's own Slack, connected to Upsy.
upsy_connectors
ChatGPTThe user's connectors in Upsy and what you may do with each: nothing yet. Returns each account's address, your access (All, Read-only, some tools only, or not allowed) and the tools that reach it. The user changes access in Upsy.