ack_mentions_activity
ChatGPTAcknowledge the Mentions & reactions inbox after it has been displayed. Marks the caller's unread chat mention notifications read and stamps users.mentions_acked_at, so the projector recomputes both chat.mentions and chat.reactions to 0 durably (the sidebar "Mentions & reactions" item un-bolds and stays cleared across re-fetch). Per-channel read cursors are untouched, so channel message unread counts are unaffected; a reaction that arrives after the ack re-bolds the item.
ack_thread_activity
ChatGPTAcknowledge the Threads inbox on view-enter. Upserts thread_reads.last_read_at = now() for every subscribed thread that currently has an unread reply, so the projector recomputes chat.threads to 0 durably (the sidebar "Threads" badge clears and stays cleared across re-fetch). Does not move per-thread "New" watermarks in an open view.
add_conditional_format
ChatGPTAdd a conditional formatting rule to a spreadsheet. Provide either a booleanRule (highlight cells matching a condition like NUMBER_GREATER, TEXT_CONTAINS, BLANK, CUSTOM_FORMULA) or a gradientRule (color scale across a range). The server generates a unique ID for the rule.
add_deal_line_item
ChatGPTAdd a line item to a deal. Either reference an existing product (via product_id) or create a custom line by providing name and unit_price. The deal amount is auto-recalculated.
add_forwarding_address
ChatGPTAdd a forwarding address (sends verification email).
add_pipeline_member
ChatGPTAdd (or update the role of) a user or team on a CRM pipeline. Provide either user_id or team_id, plus role (admin | member). Admins/owners and pipeline admins can manage members.
add_shared_drive_member
ChatGPTAdd a member (manager-only).
add_sheet_column
ChatGPTAdd a column to a sheet tab.
add_sheet_rows
ChatGPTAppend rows to a sheet tab. Each row is an object keyed by column ID. Example: [{"A": "Widget", "B": 9.99}].
add_sheet_tab
ChatGPTAdd a new tab to a sheet. Auto-generates the name if not provided.
add_slide
ChatGPTAdd a new slide to an existing presentation. Provide the slide as a JSON object with layout, background, and elements. Each element has a type (text, image, shape, table, video, group), position (x, y), size (w, h), and type-specific properties. IMPORTANT: Create SEPARATE text elements for each visual block (title, each bullet point, each paragraph). Do NOT put multiple lines or bullet points in a single text element — create one element per line with proper positioning. Use bullet character '•' instead of markdown '*' or '-'. Set fontSize and fontWeight per element for visual hierarchy. If the user is currently viewing a presentation, use the presentation ID from the page context.
add_task_attachment
ChatGPTAttach a Drive file to a task. Idempotent — re-attaching the same file returns the existing row.
add_team_member
ChatGPTAdd a user to a team with an optional role (admin or member). Only team admins or workspace admins can add members. Default role is 'member'. Use this when the user asks to add someone to a team or distribution list.
admin_integration_delete
ChatGPTdisconnect an integration
admin_integration_update
ChatGPTupdate integration config
admin_integrations_list
ChatGPTlist all integrations for workspace
admin_integrations_slack_channels
ChatGPTlist Slack channels via bot token
admin_invite_delete
ChatGPTRevoke (cancel) a pending invite
admin_invite_resend
ChatGPTResend invite email + refresh expiry
admin_invites_list
ChatGPTList unaccepted, unexpired workspace invites
admin_mail_suppression_create
ChatGPTmanually add a suppression
admin_mail_suppression_delete
ChatGPTremove a suppression
admin_mail_suppressions_list
ChatGPTlist suppressed addresses
admin_notification_defaults_get
ChatGPTRead workspace-default email notification prefs. Returns sensible defaults (all enabled) when never configured.
admin_notification_defaults_update
ChatGPTPartially update workspace-default email notification prefs. Emits settings.updated audit event.
admin_usage_export
ChatGPTExport usage stats as CSV
admin_usage_timeseries
ChatGPTDaily creation counts (last 14 days, split into "last 7" + "prior 7" windows) for the four hero metrics on the Overview tab. Powers row 13.16 sparkline cards. Returns {users, documents, messages, emails} each with {buckets[7], total, previous_total} so the UI can draw a sparkline + render a 7...
admin_user_get
ChatGPTGet user details
admin_user_reset_password
ChatGPTAdmin-initiated password reset. Returns the reset outcome — sent is false when the email bounced, in which case reset_url is the only way the caller reaches the link.
admin_user_suspend
ChatGPTSuspend a user account. Suspended accounts return 403 on all API calls.
admin_user_unsuspend
ChatGPTUnsuspend a user account. Restores access to all API calls.
admin_workspace_logo_delete
ChatGPTRemove workspace logo (admin only)
analytics_user_timeline
ChatGPTGet a user's event timeline with session grouping (30-min inactivity split). Walks the alias graph (depth 5) to include all prior identities.
analytics_users_aggregates
ChatGPTList analytics user profiles from the materialized view (faster at high volume, nightly refresh). Falls back to direct read when MV is unavailable.
analytics_users_list
ChatGPTList analytics user profiles (paginated, searchable). Returns traits, first_seen, last_identified.
append_sheet_values
ChatGPTAppend rows of values to a sheet at the first empty row in a range. The server finds the insertion point — no need to read the last row first. Uses OVERWRITE semantics (does not shift existing data).
apply_deal_template
ChatGPTCreate a new deal from a saved deal template. The template provides default pipeline, stage, amount, probability, and line items. Use this when starting a deal that matches a known pattern (e.g., 'Standard Enterprise Plan').
apply_master_to_slide
ChatGPTLink a master slide to a specific slide by 0-based index. The slide stores a by-reference link, retains its existing elements as child-owned content, and clears prior master-element override markers. Current master elements inherit at render time and future master edits flow through automatically.
apply_task_template
ChatGPTCreate a new task by applying a template's defaults. The template pre-fills status, priority, estimate, assignee, description, and labels. Override any field by passing it explicitly. Title is always required.
apply_transition_to_all
ChatGPTApply a slide transition to every slide in the deck. Set transition.type to 'none' to clear transitions on all slides. Prefer duration_s (float seconds, 0.1–10); legacy speed presets map to slow=1.0s, medium=0.5s, fast=0.3s.
archive_mail_thread
ChatGPTArchive every inbox-folder message in a thread
assign_role
ChatGPTAssign a role to a user. Requires admin role.
auth_whoami
ChatGPTReturn the current authenticated user's profile (works with both JWT and API-key auth). needs_workspace_setup: true indicates the account has no workspace yet.
batch_archive_emails
ChatGPTArchive multiple emails in one atomic call. Moves all specified messages to the archive folder. Use this when the user wants to bulk-archive many emails (e.g., inbox-zero cleanup, archiving all messages from a sender).
batch_clear_sheet_values
ChatGPTClear all cell values in multiple ranges atomically. Sets cells to null without removing rows or columns. Useful for resetting template sheets or clearing data regions.
batch_file_permissions
ChatGPTBatch-fetch permissions for up to 50 files by ID. Returns a map of file_id → permissions array.
batch_get_contacts
ChatGPTFetch multiple CRM contacts by their IDs in a single request (max 100). Missing or inaccessible IDs are silently omitted from the result.
batch_get_deals
ChatGPTFetch multiple CRM deals by their IDs in a single request (max 100). Missing or inaccessible IDs are silently omitted from the result.
batch_get_files
ChatGPTBatch-fetch up to 50 files by ID. Powers drive:// embed hydration in Chat/Docs/Wiki/CRM.
batch_get_sheet_values
ChatGPTFetch multiple disjoint ranges from a spreadsheet in a single request. Avoids N sequential round-trips when reading KPIs from different regions.
batch_modify_emails
ChatGPTBatch modify multiple emails in one atomic call. Can star/unstar, mark read/unread, add/remove labels, and change folder — all at once for up to 500 messages. Use this when the user wants to bulk-update many emails (e.g., star all from a sender, mark a batch as read, apply labels to multiple messages).
batch_trash_emails
ChatGPTTrash multiple emails in one atomic call. Moves all specified messages to the trash folder. Use this when the user wants to bulk-trash many emails (e.g., spam cleanup, clearing a project mailbox).
block_sender
ChatGPTBlock a sender (address or domain).
book_event_resources
ChatGPTBook one or more resources (rooms, equipment) for an existing event. Returns a conflict error if a resource is already booked.
bulk_archive_tasks
ChatGPTArchive up to 100 tasks at once. Only archives tasks the caller created or is assigned to.
bulk_copy_files
ChatGPTCopy multiple files to a folder (max 100).
bulk_delete_contacts
ChatGPTDelete many CRM contacts in a single operation. Returns counts of deleted/skipped/failed items.
bulk_delete_deals
ChatGPTDelete many deals
bulk_delete_messages
ChatGPTSoft-delete up to 100 messages in a channel. Deletes only the IDs the caller may delete (own messages, or any message when the caller is a channel admin); every other ID returns in rejected. Emits one bulk message.deleted event, never one per message.
bulk_delete_tasks
ChatGPTSoft-delete multiple tasks at once by ID. Only deletes tasks the current user created. Max 100 task IDs per call. Subtasks cascade. Use restore_task to recover individually.
bulk_export_contacts
ChatGPTExport the selected contacts as a CSV string (all core fields + custom properties). Useful for producing a snapshot for downstream analysis.
bulk_export_deals
ChatGPTExport selected deals as CSV
bulk_move_files
ChatGPTMove multiple files to a folder (max 100).
bulk_update_contacts
ChatGPTUpdate many CRM contacts in a single operation. Useful for re-assigning ownership, updating lifecycle stage on a list of contacts, or reclassifying industry. Provide an array of contact IDs and the fields to apply to all of them.
bulk_update_deals
ChatGPTUpdate many CRM deals in a single operation. Useful for moving multiple deals to a new stage, reassigning ownership, or marking a batch of deals as won/lost. Provide an array of deal IDs and the fields to apply.
bulk_update_tasks
ChatGPTUpdate multiple tasks at once by ID. Only updates tasks the current user has access to (creator or assignee). Max 100 task IDs per call. Omit fields you do not want to change. Pass null to clear a nullable field (assignee_id, project_id, due_date, goal_id, task_status_id).
calendar_conflicts
ChatGPTDetect attendee scheduling conflicts.
calendar_event_export_ics
ChatGPTExport single event as .ics.
calendar_event_meeting_notes_create
ChatGPTCreate a meeting-notes doc for an event, or — when document_id is given — link that existing doc and grant attendees access.
calendar_event_meeting_notes_unlink
ChatGPTUnlink meeting-notes doc.
calendar_event_reminders_create
ChatGPTAdd a reminder.
calendar_event_reminders_list
ChatGPTList event reminders.
calendar_event_reminders_set
ChatGPTReplace reminder list.
calendar_event_unbook_resources
ChatGPTUnbook resources.
calendar_export_ics
ChatGPTExport entire calendar as .ics.
calendar_external_auth_url
ChatGPTStart external provider OAuth.
calendar_external_calendars_enable_sync
ChatGPTEnable two-way sync.
calendar_external_calendars_list
ChatGPTList calendars on connection.
calendar_external_connection_delete
ChatGPTDisconnect external account.
calendar_external_connections_list
ChatGPTList connected external accounts.
calendar_external_force_sync
ChatGPTPull every mirror calendar on this connection now, rather than waiting for the scheduler. Returns the per-calendar created / updated / deleted counts, plus an errors row for each calendar the run could not reach — a sync can succeed for some mirrors and fail for others.
calendar_external_synced_disable
ChatGPTDisable sync for one calendar.
calendar_import_ics_url
ChatGPTImport an .ics feed by URL. Fetches the URL server-side and imports its events into the calendar.
calendar_reminder_delete
ChatGPTDelete a reminder.
calendar_resource_delete
ChatGPTDelete a resource.
calendar_resource_get
ChatGPTGet a resource.
calendar_resource_update
ChatGPTUpdate a resource.
calendar_resources_create
ChatGPTCreate a bookable resource.
calendar_upcoming_reminders
ChatGPTReminders due to fire within the next window_hours (default 24, max 168), soonest first. Each row carries the event it is about — title, span, status, location and calendar — so the caller renders the row without a second fetch.
calendars_create
ChatGPTCreate a calendar.
calendars_delete
ChatGPTDelete a calendar.
calendars_update
ChatGPTUpdate calendar fields.
cancel_scheduled_email
ChatGPTCancel a scheduled email
cancel_scheduled_message
ChatGPTCancel a pending scheduled message so it's never sent. Use this when the user says 'never mind' or changes their plan before the scheduled time.
change_coworker_manager
ChatGPTReassign the accountable human (manager) for a coworker. Admin-only — the current manager cannot reassign themselves out.
chat_channel_create
ChatGPTCreate channel
chat_channel_delete
ChatGPTDelete channel
chat_channel_get
ChatGPTGet a specific channel by UUID, with members.
chat_channel_group_remove
ChatGPTRemove a group from channel (clean up fan-out rows)
chat_channel_join
ChatGPTSelf-join a public channel (no body required)
chat_channel_last_messages
ChatGPTBatch-fetch the latest message preview for multiple channels in one request. Pass ids as a comma-separated list of channel IDs (max 100). Returns one entry per channel the caller can read, each carrying its channel_id. Replaces per-channel GET /messages?limit=1 calls so a DMs/channels list renders previews without an N+1 request fan-out.
chat_channel_leave
ChatGPTLeave a channel
chat_channel_member_remove
ChatGPTRemove member
chat_channel_members_add
ChatGPTAdd member(s) or a group
chat_channel_notification_preference
ChatGPTUpdate the calling user's notification preference for this channel. Controls how unread activity surfaces in the channel list: unread_only (default — bold the channel name when there are unread top-level messages), all_messages (numeric badge), mentions_only (badge only when @mentioned), nothing (no visual). Per-user — does not affect other channel members.
chat_channel_notification_prefs
ChatGPTUpdate the caller's per-channel notification preferences (unread_display: count | dot | since_visit).
chat_channel_update
ChatGPTUpdate channel
chat_draft_create_saved
ChatGPTCreate a saved (named) draft for the caller.
chat_draft_delete
ChatGPTDelete a draft owned by the caller.
chat_draft_update
ChatGPTUpdate a saved draft owned by the caller.
chat_drafts_list
ChatGPTThe caller's chat drafts (inflight + saved), newest first.
chat_emoji_image
ChatGPTServe custom emoji image from GCS
chat_mentions_inbox
ChatGPTMessages from other users that @-mention the caller. Powers the Mentions tab.
chat_message_delete
ChatGPTDelete message
chat_message_update
ChatGPTEdit message or pin/unpin
chat_preferences
ChatGPTWorkspace-level chat preferences readable by any authenticated member (default_reactions).
chat_reactions_inbox
ChatGPTMessages authored by the caller that carry reactions from other users. Powers the Mentions & Reactions inbox.
chat_saved_ids_list
ChatGPTGet saved message IDs for a channel (for UI bookmarked state)
chat_thread_activity_list
ChatGPTList thread-activity inbox for the current user. Row 5.1 (D204): powers the sidebar "Threads" inbox entry. Returns threads the user is involved in (authored parent OR replied), ordered by most recent reply desc, with unread_reply_count computed from thread_reads.last_read_at.
chat_thread_get
ChatGPTGet thread replies
check_availability
ChatGPTCheck free/busy availability for one or more users in a given time range. Returns busy time slots (not event details) for each user. Use this when the user asks to find a free time, check if someone is available, or schedule a meeting. Call this before create_event to avoid scheduling conflicts.
check_resource_availability
ChatGPTCheck if a specific resource (room, equipment) is free in a time range. Call before booking to avoid conflicts.
check_workspace_slug
ChatGPTCheck whether a workspace slug is available.
clear_calendar
ChatGPTDelete ALL events from a calendar. Owner-only — use for resetting shared calendars at quarter boundaries or wiping test data. Returns the count of deleted events. This is irreversible.
clear_reminder
ChatGPTClear a pending reminder on a saved message. The message stays saved; only the reminder is removed.
clear_sheet_validation
ChatGPTRemove a data validation rule from a spreadsheet by range. The range is matched after normalization (sheet tab defaults to Sheet1 if not specified). Returns 404 if no rule exists for that range.
clear_user_status
ChatGPTClear the current user's status (emoji + text + expiresAt). Does NOT change DND — use set_user_dnd with until=null to clear DND separately.
compute_pivot_table
ChatGPTCompute the result of a persisted pivot table — applies row/column grouping, value aggregation, sort orders, and any matching slicer filters, and returns the rendered cells. The pivot config itself (row/column/value fields, source range) is not modified.
compute_wiki_rollups
ChatGPTCompute and return rollup values for all rows in the database. Each rollup aggregates a property across related rows.
copy_sheet_to
ChatGPTCopy a sheet tab from one spreadsheet to another. Deep-copies columns, rows, formulas, formatting, and merges. Cross-document formulas will show as #REF!. Requires viewer access on source and editor access on destination.
coworkers_conversation_get
ChatGPTProxy (workspace-isolated): get a single conversation thread.
coworkers_conversations_list
ChatGPTProxy (workspace-isolated): list conversations for the coworker in the active workspace.
coworkers_execution_cancel
ChatGPTKill switch: cancel an in-flight execution. Flips an active (PENDING/RUNNING/PAUSED) coworker_executions row to CANCELLED; the SPEAR loop aborts at its next action-call boundary. Idempotent no-op on an already-terminal execution.
coworkers_execution_get
ChatGPTGet one execution with full trace data — task row, parent/children lineage, conversation, SPEAR cycles, and tool-call activities. Powers the Execution Trace debug view.
coworkers_executions_list
ChatGPTProxy: list coworker execution history (paginated).
coworkers_monitored_channels_add
ChatGPTProxy (workspace-isolated): start monitoring a channel.
coworkers_monitored_channels_list
ChatGPTProxy (workspace-isolated): list channels the coworker is monitoring.
coworkers_monitored_channels_remove
ChatGPTProxy (workspace-isolated): stop monitoring a channel.
coworkers_playbook_versions_create
ChatGPTAppend a new version. Auto-increments the version number and marks the new version current. Prior versions stay readable for audit.
coworkers_playbook_versions_get
ChatGPTGet one historical version's instructions and subtasks.
coworkers_playbook_versions_list
ChatGPTList all versions of a playbook, newest first.
coworkers_playbooks_archive
ChatGPTArchive a playbook. Archived playbooks are hidden from lists and cannot be selected during dispatch, but remain linked to historical executions for audit.
coworkers_playbooks_create
ChatGPTCreate a playbook and its initial version. instructions and subtasks seed version 1, which becomes the current version.
coworkers_playbooks_delete
ChatGPTDelete a playbook and its versions. Returns 409 if any coworker_executions still reference the playbook — use the archive endpoint to retire it instead.
coworkers_playbooks_get
ChatGPTGet one playbook with its current version's instructions and subtasks.
coworkers_playbooks_list
ChatGPTList the coworker's playbooks (metadata + current version pointer).
coworkers_playbooks_update
ChatGPTEdit playbook metadata in place (title, objective). Instructions and subtasks are immutable — create a new version instead.
coworkers_rotate_token
ChatGPTRotate the management token used to talk to the coworker service.
create_chart
ChatGPTEmbed a chart on a tab of the sheet. Charts visualize a rectangular data range — pick a chart type (bar / line / pie / scatter), the source range, and an overlay position. Returns the created chart with its server-assigned id.
create_contact
ChatGPTCreate a new CRM contact (person or company). Persons can be linked to a company via company_id. IMPORTANT: Before creating a contact, ALWAYS call list_contacts with a search query (q) to check if a contact with the same name or email already exists. If a matching contact is found, use update_contact instead of creating a duplicate. Only create a new contact if no match is found. Use this when the user asks to add a contact, log a lead, or create a company record.
create_contact_group
ChatGPTCreate a named contact group for organizing contacts. Groups allow overlapping membership — a contact can be in multiple groups.
create_crm_property_definition
ChatGPTDefine a typed custom property for contacts or deals. field_type 'relation' (with relation_target contact|company|deal) makes the property a link to another record: values written to custom_properties under this key must be the id of an existing record of the target type.
create_crm_view
ChatGPTCreate a saved CRM view: a named filter+sort preset for contacts, companies, or deals. Useful when the user asks to 'save this filter' or 'create a view for high-value deals'.
create_data_connector
ChatGPTCreate a new data connector that fetches data into specific cells of a sheet. After creating, call run_data_connector to execute it.
create_deal
ChatGPTCreate a new CRM deal (revenue opportunity). Deals belong to a pipeline and sit in a specific stage. Link to a contact and/or company. Use this when the user asks to create a deal, log an opportunity, or start tracking a sale.
create_deal_template
ChatGPTCreate a deal template — a reusable preset for creating deals with standard pipeline/stage/amount and line items. Use when the user has a repeatable sale like 'Standard Enterprise Plan'.
create_draft_email
ChatGPTCreate a draft email without sending it. The draft is saved in the drafts folder for later review, editing, or sending. Use this when the user wants to compose an email for later, save a draft, or prepare a message without sending it immediately.
create_event
ChatGPTCreate a new calendar event. Requires a title, start time, and end time. Optionally add a description, location, attendees, recurrence, and more. Use this when the user asks to schedule a meeting, add an event, or book time. If the user doesn't specify a calendar, use list_calendars to find their default calendar ID first.
create_folder
ChatGPTCreate a new folder in Drive. Returns the created folder with id, name, and path. Use this when the user asks to create, make, or add a new folder for organizing files. Supports nested folders via parent_folder_id.
create_form
ChatGPTCreate a new form for collecting data (surveys, feedback, registrations, quizzes). Returns the created form with id and public slug. Use this when the user asks to create a survey, questionnaire, feedback form, registration form, or any structured data collection. Define fields with types, labels, validation, and optional conditional logic.
create_form_variant
ChatGPTCreate a new A/B test variant by duplicating the parent form. Optionally override fields to change question wording, field types, options, or validation. Traffic weight (0–100) controls the percentage of visitors who see this variant versus the control. Use when the user asks to set up an A/B test or add a variant.
create_mail_label
ChatGPTCreate a label.
create_mail_rule
ChatGPTCreate a mail rule.
create_mail_template
ChatGPTCreate a template.
create_named_range
ChatGPTCreate a named range on a spreadsheet. Named ranges let formulas reference a range by name (e.g., =SUM(Revenue) instead of =SUM(Sheet1!B2:B100)). Accepts A1 notation for the range.
create_pipeline
ChatGPTCreate a new CRM pipeline with ordered stages. Each stage has a name and an optional default probability (0-100). Most workspaces need only one pipeline; create additional ones for distinct sales processes (e.g., 'New Business' vs 'Renewals').
create_pivot_table
ChatGPTCreate a pivot table from sheet data. A new sheet tab is automatically created to hold the pivot. Specify the source data range, which columns to group by (rows/columns), and which columns to aggregate (values).
create_presentation
ChatGPTCreate a new presentation deck. Returns the created SlideDeck envelope with one blank slide. This is the Slides-native alias for POST /api/documents with type:'slide' — both produce the same result.
create_product
ChatGPTCreate a product in the workspace catalog. Products are the reusable items that can be attached to deal line items and quote line items. Set is_active=false to retire without deleting.
create_project
ChatGPTCreate a new project to group related tasks. Use this when the user asks to start a new project or create a container for tasks.
create_project_update
ChatGPTPost a status update on a project. Use this when the user wants to report progress, flag a risk, or share a status update on a project. The status field captures the health signal (on_track, at_risk, off_track, paused, completed, cancelled).
create_quote
ChatGPTCreate a CRM quote (proposal) with line items. Auto-computes subtotal, tax, discount, and total. Link to a deal/contact/company via IDs. Status defaults to 'draft' — use send_quote to email it.
create_role
ChatGPTCreate a custom role with specific permissions. Requires admin role.
create_scheduler_link
ChatGPTCreate a scheduler link (booking page). Returns the public URL slug and availability settings. If auto_create_contact is true, every booking auto-creates a CRM contact + deal.
create_scoring_rule
ChatGPTCreate a lead scoring rule. When a contact matches (field + operator + value), the specified points are added to their lead score. Positive points indicate engagement; negative points indicate disqualification signals.
create_sequence
ChatGPTCreate a multi-step CRM sequence (email/wait/task/call/branch steps). Use this when the user asks to build a nurture campaign or outreach cadence.
create_shared_drive
ChatGPTCreate a shared drive. Creator becomes a manager.
create_sheet
ChatGPTCreate a new spreadsheet. Convenience alias for POST /api/documents with type: "sheet" enforced. Returns the full Sheet envelope (id, title, owner, visibility, timestamps, and data body) so the caller can immediately read or edit cells without a second round-trip. Optional content may be a SheetData JSON object or a string that parses as JSON.
create_slicer
ChatGPTAdd a slicer to a tab of the sheet. Slicers filter pivot tables and charts that share the same source range by the values selected for a single column. selectedValues: null passes everything through; [] filters everything out; a non-empty array passes only those values. Returns the created slicer with its server-assigned id.
create_slide_master
ChatGPTCreate a new master slide for a deck. If no elements are provided, a default Title + Subtitle layout is used.
create_subtask
ChatGPTCreate a subtask under the given parent task. Equivalent to POST /api/tasks with parent_task_id pre-filled from the URL parameter.
create_task
ChatGPTCreate a new task. Auto-subscribes the creator and (if assigned) the assignee. Auto-sets SLA due date when priority is set without an explicit due_date. Auto-logs a CRM activity if linked to a contact.
create_team
ChatGPTCreate a new team in the workspace. The caller becomes the team admin. Teams can serve as email distribution lists (when email_local_part is set) and/or permission targets. Use this when the user asks to create a team, distribution list, or mailing list.
create_wiki_page
ChatGPTCreate a new wiki page within a space. Pages use Markdown content and support nested hierarchies via parent_page_id. Use this when the user asks to create a wiki page, add documentation, write a runbook, or add to the knowledge base. Call list_wiki_spaces first to get the space ID.
create_wiki_page_version
ChatGPTCreate a manual snapshot of the current wiki page state. Useful before a risky edit or when the user wants to mark a 'known good' checkpoint. Optional label names the snapshot. Returns the new version's id + metadata.
create_wiki_space
ChatGPTCreate a new wiki space (a top-level container for pages). Use this when the user asks to create a new knowledge base area, team wiki, or documentation section. Spaces organize pages by team or domain (e.g., 'Engineering', 'Product', 'Company Handbook').
create_wiki_synced_block
ChatGPTCreate a synced block — a reusable content fragment that can be embedded in multiple wiki pages and stays in sync everywhere it's used. Returns the new block's id. Use this when the user asks to create a shared snippet, reusable callout, or cross-page content.
create_workspace_invite
ChatGPTCreate one or more workspace invites. Empty body mints a generic shareable link (returns invite_url). {email} or {emails:[...]} creates per-recipient invites and sends emails. Role defaults to member and is forced to member for any value other than admin.
crm_contact_file_attach
ChatGPTAttach a Drive file to a contact
crm_contact_file_detach
ChatGPTDetach a file from a contact
crm_contact_files_list
ChatGPTList files attached to a contact
crm_contact_photo_get
ChatGPTServe contact photo
crm_deal_activities
ChatGPTList activities for deal (owner-scoped)
crm_deal_file_attach
ChatGPTAttach a Drive file to a deal
crm_deal_file_detach
ChatGPTDetach a file from a deal
crm_deal_files_list
ChatGPTList files attached to a deal
crm_quote_pdf
ChatGPTExport quote as PDF (or printable HTML with ?format=html)
cycles_add_tasks
ChatGPTAdd tasks to the cycle. Body {task_ids: [...]}.
cycles_analytics
ChatGPTBurndown + summary analytics for the cycle.
cycles_complete
ChatGPTComplete a cycle. If auto_rollover is set, incomplete tasks are moved to the next cycle.
cycles_create
ChatGPTCreate a new cycle. Body fields: name, start_date, end_date, status?, cooldown_days?, auto_rollover?.
cycles_delete
ChatGPTDelete a cycle. Tasks attached to the cycle are unlinked, not deleted.
cycles_get
ChatGPTGet one cycle.
cycles_list
ChatGPTList cycles in the active workspace. ?status= filters by status; ?limit= (1–200) and ?offset= paginate. has_more is set when the underlying query returned a hint of more rows.
cycles_remove_tasks
ChatGPTRemove tasks from the cycle. Body {task_ids: [...]}.
cycles_update
ChatGPTUpdate cycle fields.
cycles_velocity
ChatGPTCross-cycle velocity (last N closed cycles). Default limit=10.
delete_activity
ChatGPTDelete activity
delete_chart
ChatGPTRemove a chart from the sheet. Returns { deleted: true } on success.
delete_conditional_format
ChatGPTDelete a conditional formatting rule from a spreadsheet by its ID. Returns 200 on success, 404 if the rule does not exist.
delete_contact
ChatGPTDelete a CRM contact (owner-scoped). Permanently removes the contact record. Use with caution — prefer updating lifecycle_stage to 'evangelist' or archiving via merge instead.
delete_contact_group
ChatGPTDelete a contact group. Memberships are removed but contacts themselves are preserved.
delete_contact_photo
ChatGPTDelete a CRM contact's profile photo. Clears the avatar_url and removes the stored image.
delete_coworker
ChatGPTDelete a coworker (revokes API key + tears down config).
delete_crm_property_definition
ChatGPTDelete a custom-property definition. Existing custom_properties values are left in place; they simply stop being typed.
delete_crm_view
ChatGPTDelete a saved CRM view.
delete_custom_emoji
ChatGPTDelete a custom emoji from the workspace. Use this when the user asks to remove or clean up a custom emoji. This does not remove existing reactions or messages that used the emoji — it only stops new usage.
delete_data_connector
ChatGPTDelete a data connector. Does not affect the cells it previously wrote to.
delete_deal
ChatGPTDelete a CRM deal (owner-scoped). Permanently removes the deal record and its line items. Prefer updating status to 'lost' with a lost_reason for reporting purposes.
delete_deal_line_item
ChatGPTDelete a deal line item. By default the deal's total amount is re-synced after deletion.
delete_deal_template
ChatGPTDelete a deal template (does not affect deals previously created from it).
delete_document_version
ChatGPTDelete a version snapshot of a document. At least one version must always remain — returns an error if attempting to delete the last version. Requires editor permission.
delete_email
ChatGPTDelete an email.
delete_event
ChatGPTDelete a calendar event. This is a destructive action — always confirm with the user before calling. If the user is currently viewing an event, use the event ID from the page context.
delete_file
ChatGPTDelete a file or folder from Drive. This is a destructive action — always confirm with the user before executing. Deleting a folder also deletes all files inside it. Use this when the user explicitly asks to delete, remove, or trash a file or folder.
delete_form
ChatGPTDelete a form and all its responses. This is a destructive action — always confirm with the user before executing. Use this when the user explicitly asks to delete or remove a form.
delete_form_response
ChatGPTDelete a single form response. This is destructive — always confirm with the user before executing. Use when the user asks to remove or delete a specific submission.
delete_form_variant
ChatGPTDelete an A/B test variant (and its underlying duplicated form). Destructive — always confirm with the user. Use when the user asks to remove a variant or end an experiment.
delete_mail_label
ChatGPTDelete a label.
delete_mail_rule
ChatGPTDelete a rule.
delete_mail_template
ChatGPTDelete a template.
delete_named_range
ChatGPTDelete a named range from a spreadsheet by name. Names are matched case-insensitively.
delete_pipeline
ChatGPTDelete a CRM pipeline and all of its stages. Deals in the pipeline must be moved or deleted first.
delete_pivot_table
ChatGPTRemove a pivot table from the sheet. The host tab itself stays — only the pivot row in pivotTables[] is removed. Returns { deleted: true } on success.
delete_product
ChatGPTDelete a product from the workspace catalog. Existing deal/quote line items referencing it are NOT deleted, but their product_id is nulled.
delete_project
ChatGPTDelete a project by ID. Only project admins or workspace admins can delete. Tasks belonging to the project are not deleted — they become unassigned from the project.
delete_quote
ChatGPTDelete a CRM quote and its line items.
delete_recurring_event_future
ChatGPTDelete this and all future occurrences of a recurring event by adding an UNTIL clause to the master's RRULE, ending the series the day before the given split_date.
delete_recurring_event_single
ChatGPTDelete a single occurrence of a recurring event by adding the occurrence date to the master's excluded_dates. The occurrence is suppressed without affecting other instances.
delete_role
ChatGPTDelete a custom role. System roles cannot be deleted. Requires admin role.
delete_scheduler_link
ChatGPTDelete a scheduler link. Existing confirmed bookings remain but the public booking page stops accepting new bookings.
delete_scoring_rule
ChatGPTDelete a lead scoring rule.
delete_sequence
ChatGPTDelete a sequence (and all its enrollments).
delete_shared_drive
ChatGPTDelete a shared drive (destructive, manager-only).
delete_sheet_rows
ChatGPTDelete rows from a sheet tab by 0-based index.
delete_slicer
ChatGPTRemove a slicer from the sheet. Returns { deleted: true } on success.
delete_slide_master
ChatGPTDelete an unused master slide. Returns 409 with the referencing slide count while the master is in use.
delete_team
ChatGPTPermanently delete a team from the workspace. Only team admins or workspace admins can delete. All memberships are removed. Child teams are orphaned (parent set to null). Use this when the user asks to delete, remove, or dissolve a team.
delete_user
ChatGPTDeactivate or delete a user from the workspace. Requires admin role. Cannot delete the last remaining owner. Irreversible.
delete_wiki_page
ChatGPTDelete a wiki page and all its child pages. This is a destructive action — always confirm with the user before executing. Deleting a parent page deletes the entire sub-tree. Use this when the user explicitly asks to delete or remove a wiki page.
delete_wiki_synced_block
ChatGPTSoft-delete a synced block. Embedded references will show error chips until restored. Use restore_wiki_synced_block to undo.
detach_master_from_slide
ChatGPTDetach a slide from its master. The slide keeps its current rendered elements but no longer inherits from the master.
docs_create_named_range
ChatGPTCreate a named range (template placeholder) on a document. Named ranges anchor to ProseMirror node positions and are used for template-based document generation. Use replace_named_range_content to fill a named range with content. Name must be alphanumeric + underscore, must not start with a digit (e.g., party_name, companyAddress).
docs_delete_named_range
ChatGPTDelete a named range (template placeholder) from a document by name. Names are unique per document.
docs_list_named_ranges
ChatGPTList all named ranges (template placeholders) defined on a document. Returns each range's name and its anchored node positions.
documents_delete
ChatGPTSoft-delete a document (move to trash). Owner only.
documents_duplicate
ChatGPTMake a copy. Title becomes 'Copy of <orig>'. Visibility resets to restricted; labels/pin/star are NOT inherited. Requires viewer access on the source.
documents_permanent_delete
ChatGPTPermanently delete a trashed document. Irreversible.
documents_pin
ChatGPTToggle pinned state. Editor permission required (workspace-wide pin, not per-user).
documents_restore
ChatGPTRestore a trashed document.
documents_shared_with_me
ChatGPTDocuments shared with the calling account through an explicit permission grant, across every workspace and every identity the account owns. Excludes documents the account owns. Each row names the workspace that shared it and the role the grant carries.
documents_star
ChatGPTToggle starred state. Viewer permission is sufficient. Body {starred: bool} is optional — omit to toggle.
documents_thumbnail
ChatGPTContent-derived thumbnail for doc/sheet/slide cards. Returns SVG by default or PNG for Accept: image/png; cached privately for 60 seconds.
documents_trash_list
ChatGPTList trashed (soft-deleted) documents owned by the caller. Optional ?type= filter.
documents_version_get
ChatGPTGet a version's metadata + serialized content snapshot.
documents_version_revert
ChatGPTRevert the document to a prior version. Force-snapshots current state first.
documents_versions_create
ChatGPTCreate a manual snapshot (forces past the 5-minute throttle).
documents_versions_list
ChatGPTList version snapshots, newest-first, cursor-paginated (default 50 per page). Walk via next_cursor until has_more is false.
drive_file_confirm_upload
ChatGPTConfirm a presigned upload completed successfully. Verifies the blob exists in storage, marks the file as confirmed, and emits the upload event. Idempotent — confirming an already-confirmed file returns it unchanged.
drive_file_request_create
ChatGPTCreate a revocable, write-only public file request for a folder. The capability token is returned only in this response.
drive_file_request_remint
ChatGPTReplace a live file request's capability token without changing its request identity, limits, upload progress, or expiry. The previous token stops working immediately and the replacement token is returned only in this response.
drive_file_request_revoke
ChatGPTRevoke a folder's public file request immediately.
drive_file_requests_list
ChatGPTList the caller's file requests for one owned Drive folder.
drive_file_tag_attach
ChatGPTAttach a tag to a file. Owner-only and idempotent.
drive_file_tag_detach
ChatGPTDetach a tag from a file. Owner-only.
drive_file_update
ChatGPTRename, move, or star/unstar a file. Requires edit access — the owner or an editor/owner share.
drive_file_upload_init
ChatGPTInitiate a file upload. Reserves a Drive row + storage key and returns a short-lived presigned PUT URL the client uploads the bytes to.
drive_files_recent
ChatGPTRecently used files for the current user — opened in the last 30 days OR created in the last 24 hours. Sorted by max(createdAt, lastViewedAt) desc.
drive_files_shared_with_me
ChatGPTFiles shared with the current user via an explicit file_permissions row. Excludes files the user owns.
drive_files_starred
ChatGPTFiles the current user has starred.
drive_folder_ancestors
ChatGPTBreadcrumb chain (root → leaf) for a folder. Powers breadcrumb hydration on deep-link reloads. Viewer permission is sufficient.
drive_shared_drive_folder_create
ChatGPTCreate a folder inside a shared drive. Requires contributor+ on the drive. Pass parent_folder_id to nest.
drive_tag_create
ChatGPTCreate a new tag in the user's catalog.
drive_tag_delete
ChatGPTDelete a tag (cascades to all file assignments).
drive_tag_files_list
ChatGPTList files tagged with the given tag.
drive_tag_update
ChatGPTRename, recolor, or reorder a tag.
drive_tags_list
ChatGPTCurrent user's tag catalog (D117). Each tag carries name, color, and sort order.
duplicate_slide
ChatGPTDeep-copy a slide within the same deck. The duplicate is inserted immediately after the source slide. All elements (including group children) receive new unique IDs to avoid collisions. Useful for template-based workflows: duplicate a template slide, then update the copy with new content.
duplicate_task
ChatGPTClone a task — copies title (appends ' (copy)'), description, priority, project, goal, cycle, estimate, due/start date, recurrence, custom fields, and labels. The clone starts at status 'todo' with a fresh task key.
edit_recurring_event_all
ChatGPTEdit all occurrences in a recurring series. Updates the master event.
edit_recurring_event_future
ChatGPTEdit this and all future occurrences of a recurring event by splitting the series at the given date. Use this for 'change the meeting time from next week onwards' or 'update our recurring Friday sync starting next month'.
edit_recurring_event_single
ChatGPTEdit a single occurrence of a recurring event, creating an exception without affecting other occurrences. Use this when the user says 'move just next Tuesday's meeting to 3pm' or 'cancel only this one occurrence'.
empty_trash
ChatGPTPermanently delete all trashed files in the user's Drive. Irreversible — confirm with user first. Returns the number of files deleted.
enroll_contact_in_sequence
ChatGPTEnroll a contact in a CRM sequence so they begin receiving the automated steps (emails, tasks, calls). Use this when the user asks to start a campaign for a specific contact.
ensure_wiki_reverse_relation
ChatGPTAuto-create the reverse relation property on the target database if missing. Idempotent — returns the existing or newly-created reverse property id.
export_document
ChatGPTExport a document, sheet, or slide to one of its supported standard formats. Sheets support xlsx, csv, tsv, and ods. Returns the file bytes with Content-Type and Content-Disposition attachment headers.
export_drive_file
ChatGPTExport a workspace document (Doc, Sheet, or Slide) to a file format via its Drive ID. Docs support: docx, pdf, html, md. Sheets support: xlsx, csv. Slides support: pptx, pdf, html. Binary Drive files (images, archives, etc.) cannot be exported — use download instead.
find_and_replace_in_deck
ChatGPTFind and replace text across all slides in a presentation. Searches every text element and table cell on every slide. Useful for template-based workflows: create a deck from a template with placeholders like {{company_name}}, then replace them programmatically. Plain string matching only (no regex).
formatter_set
ChatGPTSet a flat map of fields on the node output. Native equivalent of the n8n Set node — alias n8n-nodes-base.set → formatter_set (Pat8). Pure passthrough: parameters.values is resolved upstream by the dispatcher's resolveActionParameters walker, so JSONLogic rules referencing {var: "<UpstreamNode>.<field>"} produce the literal value the handler echoes back. Downstream nodes reference the result via {var: "<NodeName>.values.<key>"}. Spec line 41: formatters are formatter_* operationIds.
get_activity
ChatGPTGet a single activity by ID. Useful for reading back a just-created activity via the resource URL in the activity.created event payload.
get_calendar
ChatGPTGet a single calendar by ID. Returns the calendar's name, color, timezone, default status, and owner. Use this when the user asks about a specific calendar's settings or before creating events to verify the timezone.
get_calendar_colors
ChatGPTGet the available color palette for calendars and events. Returns 24 calendar colors and 11 event colors, each with a background and foreground hex value. Use this when the user asks what colors are available, or before setting a calendar or event color.
get_channel_messages
ChatGPTGet recent messages from a chat channel. Returns messages with id, content (Markdown), author info, reactions, thread reply count, and timestamps. Use this when the user asks to read messages, catch up on a channel, or find a specific conversation. If the user is currently viewing a channel, use the channel ID from the page context. Messages are returned in reverse chronological order (newest first).
get_channel_read_receipts
ChatGPTGet per-member read positions for a channel — who has read up to which message. Useful for reporting on whether an announcement has been seen by everyone.
get_contact
ChatGPTGet a single CRM contact by ID, including full details: name, email, phone, title, company, lifecycle stage, custom properties, and timestamps. If the user is currently viewing a contact, use the contact ID from the page context.
get_contact_score
ChatGPTGet a contact's current lead score with a breakdown of which scoring rules matched and how many points each contributed. Use this to explain why a contact is hot/cold.
get_cover_thumbnail
ChatGPTGet a PNG thumbnail of the first slide (cover image) of a presentation. Convenience endpoint — equivalent to get_slide_thumbnail with index 0.
get_coworker
ChatGPTGet one coworker.
get_coworker_status
ChatGPTGet a coworker's runtime status (proxied from coworker service).
get_crm_analytics
ChatGPTGet comprehensive pipeline analytics: pipeline value by stage, conversion rates between stages, average deal size, sales velocity, deals breakdown. Use this for deeper analysis questions like 'where are deals stuck?' or 'how is the pipeline trending?'.
get_crm_metrics
ChatGPTGet pipeline metrics summary: total open deals, total deal value, win rate, deals won/lost, and recent activity counts. Useful for high-level pipeline health questions.
get_crm_reports
ChatGPTGet the workspace-wide CRM reports dashboard: revenue, leaderboards, stage funnel, deals-by-source. Broader than get_crm_metrics/get_crm_analytics, which are owner-scoped.
get_current_workspace
ChatGPTGet the active workspace (name, slug, logo). Accessible to any authenticated user.
get_data_connector
ChatGPTGet a single data connector by ID, including its config and last-run status.
get_deal
ChatGPTGet a single CRM deal by ID, including full details: title, amount, currency, stage, pipeline, contact, company, owner, probability, close date, custom properties, and timestamps. Pass embed=line_items to include the full line-items array. If the user is currently viewing a deal, use the deal ID from the page context.
get_deal_template
ChatGPTGet a single deal template with its line items and resolved pipeline/stage names.
get_detailed_user_presence
ChatGPTGet detailed presence for a set of users — online (≤5min), idle (5–30min), or offline — plus the lastActiveAt timestamp. Capped at 100 user IDs. Fallback/cold-hydrate surface only — the primary presence path is the full-state push over the presence /ws/mux channel (D245); poll this on connect or when the socket is down, not on a steady timer.
get_document
ChatGPTGet a single document by ID, including its full content and comments. If the user is currently viewing a document, use the document ID from the page context.
get_document_page_style
ChatGPTGet the page-level formatting for a document: margins (in PT), page size (letter/A4/legal or custom {width, height} in PT), and orientation (portrait/landscape). Empty object means default formatting.
get_drive_storage
ChatGPTGet Drive storage usage.
get_drive_storage_breakdown
ChatGPTStorage breakdown by file type.
get_email
ChatGPTGet a single email by ID, including full Markdown body, sender, recipients (to/cc/bcc), subject, and timestamps. Use this when the user wants to read an email, see its contents, or reply to a specific message. If the user is currently viewing an email, use the email ID from the page context. Use detail='headers' for envelope fields only (no body), or 'minimal' for id + labels only.
get_email_attachment_url
ChatGPTGet a presigned download URL for an attachment.
get_email_calendar_invite
ChatGPTGet calendar invite embedded in an email.
get_email_deliverability
ChatGPTGet email deliverability statistics (sent/bounced/complained/opened rates) for the past 30 days. Requires admin role.
get_email_opens
ChatGPTFetch open events for an email (sender only) Returns the rollup (first/last seen, open count) plus up to the most recent 50 individual open events. 403 if the caller doesn't own the email's mailbox.
get_email_signature
ChatGPTGet the workspace default email signature (Markdown). Requires admin role.
get_entity_preview
ChatGPTLook up a hover-card style preview of any referenced entity (document, task, contact, deal, channel, user, event, file, wiki page, form, email). Returns rich details — title, status, owner, due date, amount, etc. — without fetching the full record. Use this when an entity is referenced by ID and you need a quick summary.
get_event
ChatGPTGet a single calendar event by ID, including full details: title, description, location, start/end times, recurrence rule, status, visibility, and attendees with RSVP status. If the user is currently viewing an event, use the event ID from the page context.
get_event_instances
ChatGPTList individual occurrences of a recurring event within a date range. Expands the RRULE server-side and returns instance objects with computed start/end times. Use this to find specific occurrences (e.g., 'what meetings are on next Tuesday?') or to list upcoming instances of a series.
get_file_info
ChatGPTGet detailed information about a file or folder in Drive. Returns id, name, mime_type, size_bytes, storage_key, owner info, parent folder, and timestamps. Use this when the user asks about a specific file's details, size, type, or location. If the user is currently viewing a file in Drive, use the resource ID from page context.
get_form
ChatGPTGet a form's full details including field schema, settings, publish status, and slug. Use this when the user asks about a form's fields, structure, or configuration. If the user is currently viewing a form, use the resource ID from page context.
get_form_ab_analytics
ChatGPTGet A/B test comparison analytics for a form with variants. Returns control + each variant with views, responses, completion rate, and traffic weight. Use when the user asks which variant is winning, for A/B test results, or experiment performance comparison.
get_form_analytics
ChatGPTGet analytics for a form: total views, total responses, completion rate, average completion time, responses-by-day (last 30 days), per-field drop-off funnel, and per-field summaries (option counts for select fields, numeric stats for rating/number fields). Use when the user asks about form performance, response rate, completion rate, or field-level statistics.
get_form_response
ChatGPTGet a single form response by ID. Returns respondent info, submitted data (keyed by field ID), and timestamp. Use when the user asks about a specific submission or wants to review a particular response.
get_mail_rule
ChatGPTGet a single rule.
get_mail_signature
ChatGPTGet the effective email signature.
get_mail_template
ChatGPTGet a template.
get_mail_thread
ChatGPTGet all emails in a thread + muted flag.
get_message_readers
ChatGPTList the users who have read a specific message (i.e. whose read-cursor is at or past this message). Use this to check whether a message (e.g. an important announcement) has been seen by specific people.
get_notification_keywords
ChatGPTGet the current user's notification keywords. The user receives a mention-style notification whenever any of these words appears in a message they can read.
get_ooo_status
ChatGPTCheck out-of-office status for one or more users. Returns per-user OOO flag and event details when applicable. Call this before scheduling to avoid inviting people who are OOO.
get_presentation
ChatGPTGet a presentation's full data including all slides and their elements. Returns the SlideDeck envelope: top-level metadata (id, title, slide_count, owner, visibility, timestamps) plus the structured deck body nested under data (see SlideDeckData). Read settings/slides/masterSlides as response.data.slides[…], not at the response root. If the user is currently viewing a presentation, use the presentation ID from the page context.
get_product
ChatGPTGet product
get_project
ChatGPTGet a single project by ID, including task count, visibility, and metadata.
get_quote
ChatGPTGet a single CRM quote with its line items and linked deal/contact/company/owner.
get_read_receipts_default
ChatGPTGet read-receipts default for new compose.
get_resolved_presence
ChatGPTCold-hydrate the resolved presence dot (D245) for a set of users in the current workspace. Returns user_id → { kind, state } — the same already-resolved dot the projector pushes over the presence WebSocket channel. Used on connect and as the WS-down fallback; the client renders the state and computes nothing. Capped at 100 user IDs.
get_scheduler_link
ChatGPTGet a single scheduler link (owner-scoped) with its settings and booking count.
get_security_settings
ChatGPTGet workspace security settings (require_2fa, session_timeout_hours, password_min_length, ip_allowlist). Requires admin role.
get_sequence
ChatGPTGet a single sequence with its full step list and current enrollment count.
get_settings
ChatGPTGet all workspace settings. Requires admin role.
get_shared_drive
ChatGPTGet shared drive details.
get_sheet
ChatGPTGet a spreadsheet's structured data including columns, rows, and formulas. Returns the Sheet envelope: top-level metadata (id, title, owner, visibility, timestamps) plus the structured sheet body nested under data (see SheetData). Read tabs/columns/rows as response.data.tabs[…], not at the response root. If the user is currently viewing a sheet, use the sheet ID from the page context.
get_sheet_range
ChatGPTGet a rectangular range of cell values from a sheet. Useful when you only need a slice of a large sheet (max 10,000 cells). Returns a 2D array of values plus the resolved start/end column letters and row numbers. Use orientation=COLUMNS to get column-major arrays (each inner array is one column). valueRenderOption controls how cells render: STORED (default) returns stored values verbatim — formula cells return the formula string; FORMULA forces formula strings; EVALUATED runs the server-side formula engine and returns computed values (e.g., '=SUM(A1:A3)' becomes 6). Same-sheet refs across tabs (Sheet2!A1) resolve when evaluating; IMPORTRANGE returns #REF! (server cannot recurse cross-document).
get_slide_thumbnail
ChatGPTGet a PNG thumbnail image of a specific slide. Returns thumbnail metadata (width, height). The actual PNG is served at the URL. Sizes: small (200px), medium (800px, default), large (1600px).
get_snooze_presets
ChatGPTGet the user's custom snooze quick-presets. Returns defaults when no custom presets are saved.
get_task
ChatGPTGet a single task by ID, including full details: title, description, status, priority, assignee, due date, labels, and subtask count.
get_team
ChatGPTGet details of a single team including its first 10 members. Returns team metadata (name, slug, visibility, join policy, email) and an embedded members list with each member's user_id, display_name, email, role, and added_at. Use this when the user asks about a specific team, its members, or 'who is in team X?'.
get_undo_send_setting
ChatGPTGet undo-send duration preference.
get_unread_counts
ChatGPTGet the full unread projection (mail inbox, per-channel chat badges with mute/preference resolved, notifications, total). Used for cold-connect / reconnect hydration; live updates arrive on the mux unread channel.
get_usage_stats
ChatGPTGet workspace usage statistics including storage breakdown by user and module, active user count, API call volume, and per-module adoption metrics. Requires admin or owner role. Use this when the user asks about workspace usage, storage consumption, billing metrics, or capacity planning.
get_user_presence
ChatGPTGet online status (true = online within the last 5 minutes) for a set of users in the current workspace. Returns user_id → boolean. Capped at 100 user IDs. Fallback/cold-hydrate surface only — the primary presence path is the full-state push over the presence /ws/mux channel (D245); poll this on connect or when the socket is down, not on a steady timer.
get_user_status
ChatGPTGet the current user's active chat status (emoji + text) and DND-until timestamp. Use this before setting or clearing the status to know the current state.
get_vacation_settings
ChatGPTGet vacation auto-reply settings.
get_wiki_database_row
ChatGPTGet a single database row by id.
get_wiki_page
ChatGPTGet a wiki page's full details including Markdown content, child pages, backlinks (pages that link to this page), and metadata. Use this when the user asks about a page's content, wants to read documentation, or needs to check what links to a specific page. If the user is currently viewing a wiki page, use the resource ID from page context.
get_wiki_page_version
ChatGPTGet a wiki page version's full content (title + markdown body). Use this when the user asks what a previous version looked like, wants to compare versions, or needs the content of a specific snapshot.
get_wiki_space_graph
ChatGPTGet backlink graph data for a wiki space. Returns nodes (pages) and edges (links between pages). Use this when the user asks to visualize the knowledge graph, see how pages connect, or find highly-linked 'hub' pages.
get_wiki_synced_block
ChatGPTGet a synced block by ID. Returns the block's content and metadata. Use this when you need to read the current content of a shared block.
get_workspace
ChatGPTGet the current workspace details (id, name, slug). Requires admin role.
group_slide_elements
ChatGPTGroup existing top-level elements on a slide into a single group. The group's bounding box is computed automatically from the children. Children positions become relative to the group origin. At least 2 element IDs required. A named element may itself be a group — groupElements validates only that each id is top-level on the slide, so groups nest.
insert_page_break
ChatGPTInsert a page break into a document at a given position. Forces subsequent content to start on the next page in exported .docx and .pdf files. The page break is inserted as a block node between paragraphs.
insert_page_number
ChatGPTInsert a page number placeholder into a document. The placeholder renders as the current page number in exported .docx and .pdf files. Commonly used inside headers or footers (e.g., 'Page X') but can also appear inline in the body text. The placeholder is inserted as an inline node within a paragraph.
insert_section_break
ChatGPTInsert a section break into a document at a given position. Section breaks divide the document into sections that can have different formatting. A 'next_page' section break forces content to the next page (like a page break but marks a new section). A 'continuous' section break starts a new section on the same page.
invite_user
ChatGPTInvite a human user to the workspace by email. Sends an invite email with a link to accept. Requires admin role.
list_activity
ChatGPTList recent workspace activity (last 30 days). Scoped to the current user's workspace. Filterable by resource type, resource ID, and acting user.
list_address_book
ChatGPTList the caller's address book: the shared CRM contacts they can see unioned with their own privately captured addresses, deduplicated on email with the shared record winning. Use this to resolve a recipient the user has written to before instead of asking them to retype an address. Private entries are never visible to another member.
list_archived_threads
ChatGPTList archived threads (one per thread)
list_blocked_senders
ChatGPTList all blocked senders for current user's mailbox
list_calendar_events
ChatGPTList events scoped to a single calendar by its id — the RESTful path variant of list_events (/api/calendars/events?calendar_id=…). Requires at least viewer access to the calendar.
list_calendars
ChatGPTList the user's calendars. Returns calendar id, name, color, timezone, and whether it's the default. Use this to find the user's default calendar ID before creating events.
list_channels
ChatGPTList the user's chat channels. Returns channels with id, name, type (public/private/dm), description, member count, and creator info. Use this when the user asks to see their channels, find a specific channel by name, or when you need a channel ID to send a message.
list_charts
ChatGPTList every chart across every tab of the sheet. Each entry is annotated with the tab name it lives in.
list_conditional_formats
ChatGPTList all conditional formatting rules on a spreadsheet. Returns each rule's ID, ranges (A1 notation), and either a booleanRule (condition + format) or a gradientRule (minpoint/midpoint/maxpoint).
list_contact_activities
ChatGPTList activities (notes, calls, emails, meetings, tasks) on a specific contact's timeline. Useful for summarizing recent interactions with a contact before sending an email or making a call.
list_contact_group_members
ChatGPTList all contacts that are members of a contact group. Returns the contact id, name, email, and type for each member.
list_contact_groups
ChatGPTList all contact groups in the workspace with their member counts. Groups are named collections for organizing contacts (e.g., 'Conference leads 2026').
list_contacts
ChatGPTList CRM contacts. Supports filtering by type, lifecycle stage, owner, and text search. Returns contacts with id, name, email, phone, type, lifecycle_stage, company, and timestamps. Use this when the user asks to see their contacts, find a person, or list companies. Also use this with the 'q' parameter to search for existing contacts BEFORE creating new ones to prevent duplicates.
list_crm_property_definitions
ChatGPTList the workspace's typed custom-property definitions for contacts and deals, including relation properties that link a record to another contact, company, or deal. Optionally filter by entity_type.
list_crm_views
ChatGPTList the user's saved CRM views (filter + sort presets for contacts/companies/deals). Views personalize how CRM data is displayed without changing the underlying records.
list_crm_workspace_users
ChatGPTList all users (humans and agents) in the current workspace who can own CRM records. Use before assigning contacts or deals to a specific owner_id.
list_custom_emojis
ChatGPTList all custom emojis uploaded to the current workspace. Returns each emoji with id, name (without colons), image URL, and creator info. Use this to discover what custom emojis are available before referring to them by name.
list_data_connector_run_history
ChatGPTList recent execution history for a data connector. Each row records one manual or scheduled run with its status, duration, row count, and error (if any). Use the limit query param to cap the page size (default 20, max 100). Results are ordered by completion time, newest first.
list_data_connectors
ChatGPTList data connectors registered on a sheet. Connectors fetch data from external sources (URL, CSV, etc.) into specific cells.
list_deal_line_items
ChatGPTList all line items for a deal, plus the computed total.
list_deal_templates
ChatGPTList deal templates in the workspace (reusable deal presets: default pipeline, stage, amount, probability, and line items).
list_deals
ChatGPTList CRM deals. Supports filtering by pipeline, stage, and status. Returns deals with id, title, amount, currency, stage, pipeline, contact, status, and timestamps. Use this when the user asks to see their deals, check the pipeline, or find opportunities.
list_documents
ChatGPTList the current user's documents. Optionally filter by type. Returns an array of documents with id, type, title, owner, and timestamps.
list_drafts
ChatGPTList draft emails
list_drive_folders
ChatGPTList only folders (not files) in Drive — useful for folder pickers. Pass root to scope the listing to My Drive, shared drives, or Shared with me.
list_email_attachments
ChatGPTList attachments for an email
list_enrollment_events
ChatGPTGet the event log for a single sequence enrollment (step-executed, email-opened, email-replied, branch-taken, completed). Useful for auditing why a contact moved to a particular step.
list_event_resources
ChatGPTList resources currently booked for an event (rooms, equipment).
list_events
ChatGPTList calendar events across all of the user's calendars. Supports filtering by date range, calendar, and free-text search. Returns events with id, title, start/end times, location, status, and attendees. Use this when the user asks to see their schedule, upcoming meetings, or events for a date. Use the q parameter to search for events by keyword (matches title, description, location, and attendee names).
list_files
ChatGPTList files and folders in the user's Drive. Returns items with id, name, mime_type, size_bytes, is_folder, parent_folder_id, owner info, and timestamps. Use this when the user asks to see their files, browse a folder, find a specific file, or check what's in Drive. If the user is currently viewing Drive, use context for the current folder.
list_form_responses
ChatGPTList responses submitted to a form. Returns responses with respondent info, submitted data (keyed by field ID), and timestamps. Use this when the user asks to see form results, check submissions, analyze feedback, or export response data.
list_form_variants
ChatGPTList A/B test variants for a form. Returns each variant's id, name, traffic weight, active status, and variant form ID. Use when the user asks about their A/B tests, variant list, or experiment setup.
list_forms
ChatGPTList the user's forms. Returns forms with id, title, slug, is_published, response count, and timestamps. Use this when the user asks to see their forms, find a specific form, or check form status.
list_forwarding_addresses
ChatGPTList forwarding addresses + recent log.
list_identity_api_keys
ChatGPTList the calling user's own API keys. Scoped to c.var.user.id — does not return keys belonging to other users in the same workspace. Admins managing other users' keys should use GET /api/admin/api-keys.
list_inbox
ChatGPTList the user's received emails (inbox). Returns emails with id, from, subject, preview, read status, and sent timestamp. Use this when the user asks to check their inbox, see recent emails, or find a specific email. Use detail='headers' for bandwidth-efficient scanning (omits body), or 'minimal' for id + labels only. Use label_ids to filter by specific labels (AND semantics — all listed labels must be present).
list_mail_by_label
ChatGPTList emails with a specific label
list_mail_labels
ChatGPTList mail labels.
list_mail_rules
ChatGPTList mail rules / filters.
list_mail_templates
ChatGPTList templates.
list_muted_threads
ChatGPTList muted threads (inbox view for muted conversations)
list_my_teams
ChatGPTList teams the current user belongs to, with their role (admin or member) in each. Use this when the user asks 'what teams am I in?' or 'my teams' or 'my memberships'.
list_my_workspaces
ChatGPTList workspaces the current user belongs to (human users may have multiple). Returns workspace id, name, slug, role, and which one is active.
list_named_ranges
ChatGPTList all named ranges defined on a spreadsheet. Returns each range's name and A1 notation range specification.
list_pinned_messages
ChatGPTList all pinned messages in a channel. Pinned messages are highlighted by members for ongoing reference (announcements, canonical links, etc.). Returns messages in newest-pin-first order.
list_pipeline_members
ChatGPTList the members of a CRM pipeline. Deal visibility is pipeline membership: a deal is visible to admins/owners and to members of its pipeline (directly or via a team). Roles are admin (can manage the pipeline + members) or member.
list_pipelines
ChatGPTList all CRM pipelines with their stages. Each pipeline contains an ordered list of stages with names, sort order, and default probabilities. Use this before creating or moving deals to find valid pipeline_id and stage_id values.
list_pivot_tables
ChatGPTList every pivot table across every tab of the sheet. Each entry is annotated with the tab name it lives in.
list_products
ChatGPTList products in the workspace catalog. Use this when the user asks about pricing or available SKUs, or before adding a product as a deal line item.
list_project_updates
ChatGPTList status updates for a project, newest first. Returns the health timeline with author and timestamp.
list_projects
ChatGPTList all projects in the current workspace. Returns each project with name, icon, color, visibility, and task count. Use this when the user asks to see their projects or find a project by name.
list_protected_ranges
ChatGPTList all protected ranges on a spreadsheet. Returns each range with its ID, A1 range, description, warningOnly flag, and editorUserIds allowlist.
list_quotes
ChatGPTList CRM quotes/proposals. Filter by status (draft, sent, accepted, rejected, expired), deal, or contact. Useful for finding outstanding quotes or recently-accepted ones.
list_resources
ChatGPTList bookable resources (rooms, equipment) in the workspace. Call before booking a room to see what's available.
list_roles
ChatGPTList all roles in the workspace (system roles + custom roles). Requires admin role.
list_running_executions
ChatGPTList in-flight executions across every coworker in the active workspace. Joins coworker_executions → coworkers, filtered by status IN ('PENDING','RUNNING'). Powers the 'Coworkers — running now' saved filter on People & Access.
list_saved_messages
ChatGPTList all messages the current user has saved (bookmarked) across all channels. Returns messages with saved_at timestamp, channel name, and channel type. Saved messages are private to the current user (unlike pinned messages, which are shared with the channel).
list_scheduled_mail
ChatGPTList scheduled (unsent) emails
list_scheduled_messages
ChatGPTList all pending scheduled messages for the current user across all channels. Returns each scheduled message with channel name/type and the scheduled_at timestamp. Use this to review what's queued to send later, or before updating/cancelling a scheduled message.
list_scheduler_bookings
ChatGPTList all bookings (across all scheduler links) owned by the current user. Useful for summarizing the user's upcoming meetings.
list_scheduler_link_bookings
ChatGPTList all bookings for a single scheduler link (owner-scoped).
list_scheduler_links
ChatGPTList the user's scheduler links (Calendly-style booking pages). Each link has a shareable slug, duration, availability hours, and optionally auto-creates a contact + deal when booked.
list_scorable_fields
ChatGPTList the contact fields that can be used in scoring rules (lifecycle_stage, industry, title, website, custom_properties.*, etc.) and the operators each supports.
list_scoring_rules
ChatGPTList all lead scoring rules for the workspace.
list_send_as_addresses
ChatGPTList available send-as addresses for current user
list_sent_mail
ChatGPTList sent emails
list_sequence_enrollments
ChatGPTList all enrollments for a sequence, including each contact's current step, status, and next execute time. Useful for checking progress or finding an enrollment ID to unenroll.
list_sequences
ChatGPTList all CRM email/task sequences (multi-step automated outreach campaigns). Returns sequences with their steps, active status, and current enrollment count.
list_shared_drive_files
ChatGPTList files in a shared drive.
list_shared_drive_members
ChatGPTList shared drive members.
list_shared_drives
ChatGPTList shared drives user is a member of.
list_sheet_validations
ChatGPTList all data validation rules on a spreadsheet. Returns each rule's range (A1 notation) and rule definition (type, values, strict, inputMessage).
list_sheets
ChatGPTList the current user's spreadsheets (owned + shared). Convenience alias for GET /api/documents?type=sheet. Returns the lightweight SheetSummary shape without the structured data body — call GET /api/sheets/:id to load a specific sheet's tabs/columns/rows.
list_slicers
ChatGPTList every slicer across every tab of the sheet. Slicers are interactive filter widgets that filter pivots / charts on a shared source range. Each entry is annotated with the tab name it lives in.
list_slide_masters
ChatGPTList the master slide templates registered on a presentation. Child slides link to masters by reference and resolve current master elements at render time, beneath child-owned elements.
list_snoozed_mail
ChatGPTList snoozed emails
list_starred_mail
ChatGPTList starred emails
list_task_attachments
ChatGPTList Drive files attached to a task.
list_task_templates
ChatGPTList task templates in the workspace. Templates pre-fill fields when creating tasks. Optionally filter by project. Returns name, default fields (priority, status, estimate, assignee, labels), and creator.
list_tasks
ChatGPTList tasks in the workspace. Pass assignee_id to filter by assignee (use the caller's user ID for 'my tasks'). Supports filtering by status, priority, project, and free-text query.
list_teams
ChatGPTList workspace teams visible to the current user. Returns public teams and private teams the user is a member of, with member counts. Filterable by q (case-insensitive substring match on name + slug). Optional limit caps the result count. Use this when the user asks to see teams, distribution lists, or workspace teams.
list_trashed_files
ChatGPTList all trashed files in the user's Drive. Returns paginated results with id, name, mime_type, size, timestamps. Use this when the user asks to see their trash or wants to restore a file.
list_user_statuses
ChatGPTList active chat statuses (emoji + text + DND) for users in the workspace. Only returns users who currently have a non-null status or active DND. Useful for 'who's on vacation?', 'is anyone in meetings?', or similar presence queries.
list_users
ChatGPTList all users and agents in the workspace. Returns users with id, display_name, email, type (human/agent), roles, status, storage usage, and timestamps. Requires admin or owner role. Use this when the user asks to see workspace members, find a specific user, check agent accounts, or audit user activity.
list_wiki_page_databases
ChatGPTList all inline databases hosted on a wiki page.
list_wiki_page_versions
ChatGPTList the saved version snapshots for a wiki page (most recent first). Use this when the user asks for revision history, wants to see who edited and when, or needs to find a version to revert to.
list_wiki_space_pages
ChatGPTList pages in a wiki space with offset/limit pagination. Returns page summaries (id, title, slug, icon, parent_page_id, sort_order). Use this when the user asks to see all pages in a space, or when you need to paginate through a large space.
list_wiki_spaces
ChatGPTList all wiki spaces. Returns spaces with id, name, slug, description, icon, owner info, privacy setting, and page count. Use this when the user asks to see wiki spaces, browse the knowledge base, or when you need a space ID to create a page.
list_wiki_synced_blocks_by_page
ChatGPTList synced blocks that were originally created on a specific page. Use this when the user asks what shared content a page publishes, or to audit reuse.
log_activity
ChatGPTLog an activity on a CRM contact or deal timeline. Activities track interactions like calls, emails, meetings, notes, and tasks. Use this when the user asks to log a call, record meeting notes, or add a note to a contact/deal.
mail_alias_create
ChatGPTAdd a new alias on a verified workspace domain
mail_alias_delete
ChatGPTRemove alias
mail_alias_set_default
ChatGPTSet alias as default send-as identity
mail_aliases_list
ChatGPTList all aliases for current user's mailbox
mail_blocklist_clear
ChatGPTUnblock by raw pattern (convenience for "Unblock sender" button)
mail_blocklist_remove
ChatGPTUnblock by entry id
mail_bulk_modify
ChatGPTPOST /api/mail/bulk
mail_external_auth_url
ChatGPTStart connected-mailbox (Gmail) OAuth — returns the consent URL.
mail_external_connection_delete
ChatGPTDisconnect a connected mailbox.
mail_external_connection_test
ChatGPTVerify a connected mailbox by fetching its Gmail profile.
mail_external_connections_list
ChatGPTList connected mailboxes.
mail_folder_counts
ChatGPTPer-folder badge counts for sidebar Returns { inbox: unread_count, drafts, scheduled, snoozed } — Gmail-style.
mail_label_counts
ChatGPTPer-label unread counts for sidebar badges (IH row 6.21). Separate endpoint so the sidebar can refresh counts on read/receive without re-fetching the label definitions themselves. Shape mirrors /folder-counts. rawDb is needed because the count query uses CROSS JOIN LATERAL jsonb_array_elements ...
mail_message_unsubscribe
ChatGPTOne-click unsubscribe. Triggers the List-Unsubscribe URL (RFC 8058) on the user's behalf. Falls back to telling the client to open a mailto: link if no HTTP URL is present.
mail_shared_mailbox_assignees
ChatGPTThe people who can hold a thread in this shared mailbox — team grants flattened to their members.
mail_shared_mailbox_create
ChatGPTCreate a shared mailbox and address it on a workspace domain (admin only)
mail_shared_mailbox_delete
ChatGPTRetire a shared mailbox (admin only). Soft: stored mail is retained and the address stays reserved.
mail_shared_mailbox_get
ChatGPTGet one shared mailbox and its members
mail_shared_mailbox_member_add
ChatGPTGrant a user or a team access to a shared mailbox (admin only)
mail_shared_mailbox_member_remove
ChatGPTRevoke a user's or team's access to a shared mailbox (admin only)
mail_shared_mailbox_restore
ChatGPTRestore a retired shared mailbox (admin only). Total — delete cascaded nothing.
mail_shared_mailbox_update
ChatGPTRename a shared mailbox's display name; its address is unchanged (admin only)
mail_shared_mailboxes_list
ChatGPTList the shared mailboxes the caller holds, or every one in the workspace with scope=managed (admin only)
mail_smart_compose
ChatGPTStream AI completion suggestions
mail_thread_mute_status
ChatGPTCheck if a thread is muted
mail_trash_list
ChatGPTList trashed (soft-deleted) emails. deleteEmail moves rows to folder='trash' (D099 per-user-copy model) but until now there was no list endpoint, so trashed mail was effectively invisible in the UI.
mail_unread_summary
ChatGPTRicher unread feed for the future workspace "Unread across modules" aggregator row 6.35, D205). Returns the mail-side contribution: total count + top N (default 5, max 25) unread inbox rows with sender/subject/preview/timestamp so an aggregator can render a unified list without pulling ...
mark_all_channels_read
ChatGPTMark all channels as read for the current user. Advances the read cursor in every channel the user is a member of to the latest message, clearing all unread badges at once. Use this when the user wants to dismiss all chat unreads (e.g. returning from vacation).
mark_channel_read
ChatGPTMark a channel as read up to a specific message. This clears the unread badge for the current user. Use this after the user has finished catching up on a channel, or programmatically to dismiss unread counts after the assistant reports on recent messages.
mark_channel_unread
ChatGPTMark a channel as unread starting from a specific message. Moves the calling user's read cursor back to just before that message, so the channel shows an unread badge and the message becomes the unread boundary. Use this when the user wants to revisit a conversation later.
mark_email_read
ChatGPTUpdate email status (read/unread, starred, snoozed)
mark_thread_read
ChatGPTMark a thread as fully read up to the latest reply. Use this after the user has finished catching up on a thread, or when you want to programmatically dismiss unread reply counts for a specific thread.
mark_thread_unread
ChatGPTMark a thread as unread so it reappears in the threads inbox with an unread badge. Use this when the user wants to come back to a thread later.
merge_contacts
ChatGPTMerge two CRM contacts that represent the same person/company. The secondary contact is deleted, and its activities and deals are re-linked to the primary. Use this when you discover duplicates (same email or name). The primary contact is the one kept; the secondary is removed.
modify_contact_group_members
ChatGPTBulk add or remove contacts from a contact group. Idempotent — adding an already-present contact or removing an absent one is a no-op.
move_sheet_column
ChatGPTMove a column to a new position. Rewrites dependent formulas so they follow the moved column to the same logical data, and re-anchors notes and comment anchors.
notifications_dismiss
ChatGPTSoft-delete (hide from default feed). Preserved for audit / undismiss.
notifications_list
ChatGPTList notifications for the current user. Supports cursor pagination via ?cursor=; legacy offset pagination still works. Toggles: unread_only, include_dismissed, include_snoozed.
notifications_mark_all_read
ChatGPTMark every unread notification as read.
notifications_mark_read
ChatGPTMark a single notification read. Returns was_unread — true only if THIS call flipped it. A consumer that gets false skips the work, so two processes on one identity cannot both act on one notification.
notifications_mark_unread
ChatGPTConvenience alias for PATCH /api/notifications/:id with {read:false}.
notifications_mute_create
ChatGPTCreate or refresh a mute rule. At least one of resourceId / eventType is required (DB CHECK). When a matching rule already exists, the existing row's expiresAt is refreshed.
notifications_mute_delete
ChatGPTRemove a mute rule by id. Scoped to the owning user.
notifications_mutes_list
ChatGPTList active mute rules. Pass ?include_expired=true to also see rules whose until has passed (these no longer suppress notifications).
notifications_snooze
ChatGPTHide until {until: ISO8601}. Pass {until: null} to clear snooze.
notifications_undismiss
ChatGPTRestore a dismissed notification.
pause_coworker
ChatGPTPause coworker (stops scheduled executions).
permanent_delete_file
ChatGPTPermanently delete a file. Irreversible — confirm with user first.
poll_close
ChatGPTClose a poll to further voting (creator or channel admin).
poll_create
ChatGPTCreate a poll in a channel. Creator must be a channel member.
poll_delete
ChatGPTDelete a poll (creator or channel admin).
poll_get
ChatGPTPoll details (question, options, the caller's votes).
poll_get_by_message
ChatGPTPoll results for the poll attached to a chat message.
poll_results
ChatGPTTallied poll results (respects anonymity).
poll_unvote
ChatGPTRemove the caller's vote for a poll option.
poll_vote
ChatGPTCast a vote for a poll option.
project_members_add
ChatGPTAdd a member. Body {user_id, role?}. Notifies the new member.
project_members_list
ChatGPTList project members.
project_members_remove
ChatGPTRemove a member from the project. Notifies the removed user (unless self-removal).
project_members_update_role
ChatGPTChange a member's role.
project_notification_pref_get
ChatGPTGet the caller's notification preference for the project.
project_notification_pref_set
ChatGPTSet the caller's notification preference (level) for the project.
project_templates_apply
ChatGPTCreate a new project from a template. Pass {name, description} in the body.
project_templates_create
ChatGPTCreate a project template.
project_templates_delete
ChatGPTDelete a project template.
project_templates_get
ChatGPTGet a single project template.
project_templates_list
ChatGPTList project templates in the workspace.
project_updates_delete
ChatGPTDelete a status update. Author or admin only.
project_updates_edit
ChatGPTEdit a status update. Author or admin only.
protect_range
ChatGPTProtect a range in a spreadsheet. Protected ranges restrict editing to users in editorUserIds. Set warningOnly to true for soft warnings instead of hard blocks.
publish_calendar
ChatGPTPublish a calendar as a public read-only .ics feed URL (no auth required). Returns a shareable feed URL that anyone can subscribe to from Google/Apple/Outlook Calendar.
publish_form
ChatGPTPublish a form so it accepts public responses. Semantic shortcut for PATCH /api/forms/{id} with is_published=true; same validation (every field needs a non-empty label).
query_wiki_database
ChatGPTQuery rows from an inline database with optional view, filter, and sort. Returns paginated results.
recalculate_lead_scores
ChatGPTRecalculate lead scores for all contacts in the workspace. Use this after creating or updating scoring rules so existing contacts pick up the new scoring.
register_custom_domain
ChatGPTRegister a custom email domain (e.g., pokermethod.com). Creates a pending domain row; ownership must be verified via DNS TXT before sending is enabled. Requires admin role.
remove_forwarding_address
ChatGPTRemove a forwarding address
remove_pipeline_member
ChatGPTRemove a user or team from a CRM pipeline. The principalId is the user_id or team_id of the member to remove.
remove_role
ChatGPTRemove a role from a user. Requires admin role.
remove_shared_drive_member
ChatGPTRemove a shared drive member (manager-only; cannot remove last manager).
remove_sheet_column
ChatGPTRemove a column from a sheet tab by column ID. Use ?sheet= to target a tab other than the first.
remove_sheet_tab
ChatGPTRemove a sheet tab by name. Cannot remove the last remaining tab.
remove_slide
ChatGPTRemove the slide at the given zero-based index.
remove_task_attachment
ChatGPTRemove a file attachment from a task. Does not delete the Drive file.
rename_document_version
ChatGPTRename a version snapshot of a document. Useful for labeling meaningful versions (e.g., "Pre-launch draft", "Board approved"). Requires editor permission.
rename_sheet_tab
ChatGPTRename an existing sheet tab.
reorder_mail_labels
ChatGPTReorder labels.
reorder_mail_rules
ChatGPTReorder rules.
reorder_slides
ChatGPTReorder slides in a presentation. Provide the full list of slide indices in the desired new order. Example: [2, 0, 1, 3] moves the third slide to the front.
replace_named_range_content
ChatGPTReplace all content within a named range with new content. Used for template-based document generation — define named ranges as placeholders, then call this to fill each one. The named range must have positional anchors (startNodeId/endNodeId). Content can be Markdown text or PM JSON. Returns 409 if the anchored nodes no longer exist (stale range after CRDT edits).
replace_shapes_with_image
ChatGPTReplace text placeholder elements with an image across all slides. Finds text elements whose text matches the search string and replaces them with image elements at the same position and size. Like Google Slides ReplaceAllShapesWithImage — useful for template-based workflows where placeholder shapes like {{logo}} are swapped with actual images.
replace_sheet_tab
ChatGPTReplace a sheet tab's columns and/or rows wholesale. Use for bulk data replacement. Use update_cells for surgical edits.
reschedule_scheduled_email
ChatGPTChange the delivery time of a pending scheduled email without changing its content.
resend_forwarding_verification
ChatGPTResend verification email
restore_file
ChatGPTRestore a file from trash.
restore_task
ChatGPTRestore a soft-deleted task when the caller has task editor access.
restore_wiki_synced_block
ChatGPTRestore a previously deleted synced block. Embedding pages will render the block again instead of showing error chips.
resume_coworker
ChatGPTResume a paused coworker.
revert_wiki_page_version
ChatGPTRevert a wiki page to a previous version snapshot. This replaces the current content with the version's content and clears the CRDT state. A snapshot of the current state is automatically created before reverting. This is destructive for the in-progress edit — always confirm with the user first.
revoke_api_key
ChatGPTRevoke an API key. Immediate — any requests using the key will fail. Requires admin role.
revoke_identity_api_key
ChatGPTRevoke (permanently delete) one of the calling user's own API keys. 404 if the key doesn't belong to the calling user. Returns 204 No Content on success.
rsvp_email_invite
ChatGPTRSVP to a calendar invite on an email.
rsvp_event
ChatGPTRSVP to a calendar event that the user is invited to. Use this when the user asks to accept, decline, or mark tentative on an event invitation.
run_data_connector
ChatGPTExecute a data connector: fetch the latest data and write it to the connector's target cells. Returns the connector with updated last-run metadata.
save_message
ChatGPTSave (bookmark) a chat message for the current user to revisit later. Idempotent — saving an already-saved message is a no-op. Use this when the user asks to bookmark a message or remind themselves of something.
scan_business_card
ChatGPTOCR a photo of a business card and extract structured contact fields (name, title, company, email, phone, website, address, notes). Returns JSON with each field nullable when not present on the card. Use when the user uploads or references a business card image and wants to add the contact to CRM. The image must be passed as a base64 data URL (data:image/jpeg;base64,...) of an image format Gemini Vision supports (JPEG, PNG, WebP, HEIC). Max 6 MB.
search_calendar_events
ChatGPTFull-text search across all calendar events for the current workspace. Returns matching events with id, title, start/end times, and calendar info. Use this when the user asks to find a specific event by name or description keyword.
search_chat_messages
ChatGPTFull-text search messages across the user's accessible channels. Use this to find historical messages by keyword, phrase, or topic. Results include channel context (name and type) for each match.
search_mail
ChatGPTFull-text + operator search (Gmail-style: from:, to:, cc:, bcc:, subject:, has:attachment, is:read|unread|starred, in:inbox|sent|drafts|trash|archive, label:, after:YYYY-MM-DD, before:YYYY-MM-DD, size:N, larger:N, smaller:N, "phrase"). cc:/bcc: filter by recipient type. size:/larger:/smaller: filter by body byte size.
search_palette
ChatGPTCross-module command-palette search. q is the query string; limit caps results (default 30, max 50). Empty query returns an empty response. Module diversity is preserved (per D219).
search_wiki
ChatGPTCase-insensitive substring search across wiki page titles and Markdown content. Returns only pages the caller can view under the effective page-to-space permission rules, with id, title, space, and content snippets. Use this when the user asks to find information in the wiki, look up documentation, or search the knowledge base. More efficient than reading individual pages.
search_workspace
ChatGPTSearch across every module in the user's workspace (docs, sheets, slides, tasks, contacts, deals, channels, wiki, forms, calendar, users). Returns a flat list of results with module-aware metadata. Optional module filter narrows the search to one or more modules. Use this when the user asks to find something but you don't know which module it lives in.
send_draft_email
ChatGPTSend a previously created draft email. The draft transitions from the drafts folder to sent, SES delivery is triggered, and recipient inbox copies are created. Use this when the user wants to send a draft they previously saved.
send_email
ChatGPTSend an email from the current user. The body is written in Markdown and automatically converted to a beautifully formatted HTML email for delivery. Use this when the user asks to send an email, message someone, or share something via email. Supports to, cc, and bcc recipients. Recipients are specified by email address.
send_message
ChatGPTSend a message in a chat channel. The content is written in Markdown and supports @mentions, code blocks, links, and other rich formatting. Use this when the user asks to send a chat message, post in a channel, reply in a thread, or communicate with a teammate via chat. If the user is currently viewing a channel, use the channel ID from the page context. To reply in a thread, provide the thread_id of the parent message.
send_quote
ChatGPTSend a CRM quote via email to the contact. Marks the quote as 'sent'. By default, sends to the linked contact's email address.
send_scheduled_message_now
ChatGPTDeliver a pending scheduled message immediately instead of waiting for its scheduled time. Flips the message to sent and fans it out to the channel right now. Fails if the message has already been sent or cancelled. Use this when the user wants to send a queued message without waiting.
send_test_notification_email
ChatGPTSend a test notification email (useful for checking email rendering and deliverability). Requires admin role.
set_default_send_as
ChatGPTSet the user's default send-as address.
set_email_signature
ChatGPTSet the workspace default email signature. Pass null (or omit markdown) to clear. Requires admin role.
set_mail_signature
ChatGPTSet personal email signature. Pass null to clear.
set_notification_keywords
ChatGPTReplace the current user's notification keyword list. Keywords are case-insensitive, whole-word, and capped at 20 entries (each up to 50 characters). Duplicates/empties are dropped. Use this when the user says 'alert me whenever someone mentions X' or 'stop notifying me about Y'.
set_read_receipts_default
ChatGPTToggle the default for new compose windows
set_reminder
ChatGPTSet a reminder on a chat message. Auto-saves the message if not already saved. The reminder fires a notification at the specified time. Accepts ISO 8601 datetime string; must be in the future.
set_sheet_validation
ChatGPTSet a data validation rule on a cell range in a spreadsheet. Supports dropdown lists (ONE_OF_LIST), number constraints (NUMBER_BETWEEN, NUMBER_GREATER, NUMBER_LESS, NUMBER_EQUAL), text matching (TEXT_CONTAINS, TEXT_NOT_CONTAINS, TEXT_EQ), date constraints (DATE_AFTER, DATE_BEFORE, DATE_BETWEEN), and custom formulas (CUSTOM_FORMULA). When strict is true, API writes that violate the rule are rejected.
set_snooze_presets
ChatGPTSet the user's custom snooze quick-presets (up to 10). Pass an empty array to reset to defaults.
set_undo_send_setting
ChatGPTSet undo-send duration (seconds).
set_user_dnd
ChatGPTEnable or disable Do-Not-Disturb for the current user. Pass an ISO-8601 timestamp in the future to snooze notifications until that time, or pass null to disable DND immediately. Use this when the user says 'mute me for an hour', 'DND until 5pm', or 'turn off DND'.
set_user_status
ChatGPTSet the current user's chat status — an emoji, short text (<=100 chars), and optional auto-clear timestamp. All fields are optional; pass null to clear a single field. Use this when the user says things like 'set my status to lunch until 1pm' or 'I'm on vacation'.
set_vacation_settings
ChatGPTUpdate vacation auto-reply settings.
sheet_get_data
ChatGPTGet the spreadsheet as the structured JSON canvas. Returns the Sheet envelope: top-level metadata plus the structured sheet body nested under data (see SheetData). Read tabs/columns/rows as response.data.tabs[…], not at the response root.
sheet_update_cells
ChatGPTUpdate specific cells in a spreadsheet. Provide an array of cell updates, each specifying the row index (0-based), column ID, and new value. If the user is currently viewing a sheet, use the sheet ID from the page context.
slide_apply_template
ChatGPTApply a built-in slide template to the deck or to a single slide.
slide_layouts_list
ChatGPTList the slide-level layouts the editor knows about.
slide_star
ChatGPTStar a deck. Idempotent — re-starring is a no-op.
slide_stars_list
ChatGPTList IDs of slide decks the current user has starred.
slide_templates_list
ChatGPTList the built-in slide deck templates.
slide_unstar
ChatGPTUnstar a deck. Idempotent.
snooze_email
ChatGPTSnooze an email until a datetime.
snooze_reminder
ChatGPTRe-snooze an existing saved message by updating its remind_at time. Resets reminded to false so the scheduler picks it up again. Accepts ISO 8601 datetime string; must be in the future.
sort_sheet
ChatGPTSort a tab's rows by one column. Re-anchors formulas, comment anchors, and cell notes so nothing orphans.
start_task_timer
ChatGPTStart a time-tracking timer on a task for the current user. If another timer is already running for this user, it is stopped automatically (only one active timer per user).
stop_task_timer
ChatGPTStop the current user's active timer. The duration is accumulated onto the task's time_spent_minutes total. Returns null if no timer is active.
submit_feedback
ChatGPTSubmit a bug report from the workspace app. Auth-gated and rate-limited per user (10/min in production, 200/min in dev). Body shape: {description, priority?, screenshotDataUrl?, attachments?, context} — see FeedbackInput. Returns 200 with a receipt id even when the downstream webhook fails (best-effort GCS screenshot fallback runs in that case so triage retains the evidence). Returns 503 with {error: "Feedback reporting not available"} when the webhook isn't configured (outside the contract error-code enum, surfaced via raw Response).
submit_form
ChatGPTSubmit a response to a published form, identified by its public slug or form ID. Data is a map keyed by field ID with user answers. Use when an agent is filling out a form on behalf of a user or when completing a structured data-entry task.
tasks_activity
ChatGPTList audit-log activity entries for a task (status changes, assignments, comments, label edits, etc.). Paginated via limit/offset.
tasks_batch
ChatGPTBatch-fetch up to 50 tasks by ID. Powers LinkedTaskItem hydration in Docs/Wiki (D103).
tasks_by_key
ChatGPTResolve a workspace-scoped task key (e.g. WS-123) to its task ID. Used by deep links and integrations.
tasks_delete
ChatGPTSoft-delete a task. Only the creator can delete.
tasks_export
ChatGPTExport the caller's tasks as CSV (default) or JSON.
tasks_favorites_add
ChatGPTAdd a sidebar favorite (a view or a project).
tasks_favorites_list
ChatGPTList the caller's pinned favorites (views or projects).
tasks_favorites_remove
ChatGPTRemove a sidebar favorite (matched on resource_type + resource_id).
tasks_favorites_reorder
ChatGPTReorder the caller's sidebar favorites by passing ordered_ids (top-to-bottom).
tasks_inbox_count
ChatGPTCount of triage-bucket tasks (untriaged + projects in 'triage' status). Powers the sidebar inbox badge.
tasks_labels_assign
ChatGPTAssign a label to a task. Returns the task's full label list.
tasks_labels_create
ChatGPTCreate a workspace task label. Returns 409 if a label with the same name already exists in the group.
tasks_labels_delete
ChatGPTDelete a task label. Existing assignments are removed.
tasks_labels_list
ChatGPTList task labels visible in the workspace, grouped by group_name. Without project_id, returns workspace-level labels only. With project_id, returns workspace-level labels plus labels scoped to that project.
tasks_labels_remove
ChatGPTRemove a label assignment from a task. Returns the task's remaining label list.
tasks_labels_update
ChatGPTUpdate a task label.
tasks_pr_links
ChatGPTList GitHub pull requests linked to a task (via the integration-links service).
tasks_relations_batch
ChatGPTBatch-fetch blocking/blocked_by relations for up to 200 tasks. Powers the timeline dependency overlay.
tasks_relations_create
ChatGPTCreate a relation between two tasks. blocking/blocked_by auto-creates the inverse edge. With type=duplicate, mark_as_duplicate=true the source task is cancelled with a system comment.
tasks_relations_delete
ChatGPTDelete a task relation edge. Auto-deletes the inverse edge for blocking/blocked_by pairs.
tasks_relations_list
ChatGPTList edges in the task-relations graph for a task (related, blocking, blocked_by, duplicate).
tasks_remove_subscriber
ChatGPTRemove another user's subscription from a task. Requires task access.
tasks_sla_dashboard
ChatGPTAggregate SLA metrics for the workspace (compliance rates, avg times, counts per status). Optionally scope to a project.
tasks_sla_thresholds
ChatGPTGet the workspace's SLA thresholds (response + resolution times per priority). Auth-only.
tasks_subscribed
ChatGPTList task IDs the caller is subscribed to (manual + auto-subscribed via creator/assignee/comment).
tasks_subscription_status
ChatGPTCheck whether the current user is subscribed to a task (and the reason if so).
tasks_subscriptions_list
ChatGPTList all users subscribed to a task (with the reason each is subscribed).
tasks_subtasks
ChatGPTList immediate subtasks of a task (parent_task_id = :id).
tasks_templates_delete
ChatGPTDelete a task template. Workspace admins or project admins only.
tasks_templates_get
ChatGPTGet a single task template by ID.
tasks_templates_update
ChatGPTUpdate a task template. Workspace admins or project admins only.
tasks_views_create
ChatGPTCreate a saved task view (filter + layout). Setting is_shared: true exposes it to the workspace.
tasks_views_delete
ChatGPTDelete a saved task view.
tasks_views_layout_get
ChatGPTGet the caller's layout preferences for a view, or fall back to the view's defaults. source indicates which.
tasks_views_layout_update
ChatGPTUpsert the caller's layout preferences for a view (per-project scope optional).
tasks_views_list
ChatGPTList task views accessible to the caller (own + shared + system defaults).
tasks_views_update
ChatGPTUpdate a saved task view (rename, change filters or layout defaults, toggle sharing).
teams_cancel_join_request
ChatGPTCancel your own pending join request for this team.
teams_get_subscription
ChatGPTGet the caller's email-delivery preference for the team. Returns {team_id, user_id, email_delivery}.
teams_join
ChatGPTJoin a team. Open teams grant instant membership; request teams create a pending join request; invite teams reject.
teams_leave
ChatGPTLeave a team. Cannot leave if you're the last admin.
teams_members_list
ChatGPTPaginated member list. Private teams visible only to members or admins.
teams_members_remove
ChatGPTRemove a member. Admin only. Cannot remove the last admin.
teams_members_update_role
ChatGPTChange a member's role. Admin only. Cannot demote the last admin.
teams_requests_approve
ChatGPTApprove a join request — adds the user as a member.
teams_requests_deny
ChatGPTDeny a join request.
teams_requests_list
ChatGPTList pending join requests. Admin only.
teams_searchable
ChatGPTSearch teams visible to the caller for the share dialog. Returns the union of public teams and private teams where the caller is a member. Supports case-insensitive name filtering via q and a configurable limit.
teams_update_subscription
ChatGPTUpdate the caller's email-delivery preference for the team. Body: {email_delivery: 'each' | 'none'}.
trash_mail_thread
ChatGPTTrash all messages in a thread atomically. Moves every message in the thread to the trash folder.
unblock_sender
ChatGPTUnblock by id or pattern.
undo_send_email
ChatGPTUndo an in-flight send within the undo-send window.
unenroll_contact_from_sequence
ChatGPTPermanently remove a contact from a CRM sequence (terminal — sets status to 'unenrolled'). The contact will not receive any further sequence steps. Returns 409 if already in a terminal status. Provide the enrollment ID (not the contact ID — find it via list_sequence_enrollments).
unfurl_link
ChatGPTFetch OpenGraph / link-preview metadata for a URL (title, description, image, site name, favicon). Useful for generating rich previews of shared links, or inspecting what a URL would look like when shared in chat. Only http(s) URLs are allowed, and internal/private addresses are blocked.
ungroup_slide_elements
ChatGPTDissolve a group element on a slide back into independent top-level elements. Children positions are converted from group-relative to absolute coordinates. The group element is removed and its former children become top-level elements on the slide.
unprotect_range
ChatGPTRemove a protected range from a spreadsheet by its ID. Returns 200 on success, 404 if the range does not exist.
unpublish_calendar
ChatGPTRevoke the public .ics feed for a calendar, making it private again.
unpublish_form
ChatGPTUnpublish a form so it stops accepting public responses. Semantic shortcut for PATCH /api/forms/{id} with is_published=false.
unsave_message
ChatGPTRemove a saved (bookmarked) message from the user's saved list. The message itself is untouched; only the personal bookmark is deleted.
untrash_email
ChatGPTRestore a trashed email to inbox
untrash_mail_thread
ChatGPTRestore all trashed messages in a thread to inbox. Only affects messages currently in trash.
update_api_key
ChatGPTUpdate an API key's name, scopes, or rate limit. Requires admin role.
update_channel_member_role
ChatGPTChange a channel member's role to 'admin' or 'member'. Requires channel admin privileges. Use this when the user asks to promote or demote a member in a channel.
update_chart
ChatGPTPatch a chart's config — type, title, data range, overlay position, or series styling. Only the fields you send are updated; the rest of the chart config is preserved.
update_conditional_format
ChatGPTUpdate a conditional formatting rule on a spreadsheet by its ID. Partial update — provide only the fields to change (ranges, booleanRule, or gradientRule). Setting booleanRule replaces any existing gradientRule and vice versa.
update_contact
ChatGPTUpdate an existing CRM contact's fields. Provide only the fields you want to change. If the user is currently viewing a contact, use the contact ID from the page context.
update_contact_group
ChatGPTUpdate an existing contact group's name, color, or sort order. Group name must remain unique within the workspace.
update_coworker
ChatGPTUpdate coworker metadata (persona, focus areas, display name, avatar).
update_crm_property_definition
ChatGPTUpdate a custom-property definition's label or select options.
update_crm_view
ChatGPTUpdate a saved CRM view (rename, change filters, toggle default/shared).
update_data_connector
ChatGPTUpdate a data connector's name, config, target cells, or refresh schedule.
update_deal
ChatGPTUpdate an existing CRM deal's fields. Provide only the fields you want to change. Use this to move a deal to a new stage, update the amount, mark as won/lost, etc. If the user is currently viewing a deal, use the deal ID from the page context.
update_deal_line_item
ChatGPTUpdate a deal line item (quantity, price, discount, name/description). Amount auto-recomputed. If sync_deal_amount defaults true, the deal's total is also refreshed.
update_deal_template
ChatGPTUpdate a deal template. Providing line_items replaces the entire line-item list.
update_deck_settings
ChatGPTUpdate deck-level settings: theme, aspect ratio, default background. Changing aspect ratio rescales every slide's elements proportionally; changing default background updates slides currently using the old default.
update_document
ChatGPTEdit an existing document inline. Read the document first (get_document), modify the content, then pass the full updated text — content replaces the entire body. Do NOT create a new document to edit; version history preserves prior states. Accepts Markdown or ProseMirror JSON (HTML tolerated but lossy — drops listed in import_warnings). Provide only the fields you want to change.
update_document_page_style
ChatGPTSet page-level formatting for a document: margins (PT), page size (letter/A4/legal or {width, height} in PT), orientation (portrait/landscape). 72 PT = 1 inch. These settings control export output (.docx, .pdf). Pass an empty object to reset to defaults.
update_draft_email
ChatGPTUpdate an existing draft email. Only works on drafts (not sent messages). Use this to refine recipients, subject, or body of a draft across multiple iterations before sending.
update_event
ChatGPTUpdate an existing calendar event. Provide only the fields you want to change. Use this to reschedule, change attendees, update the description, or cancel an event. If the user is currently viewing an event, use the event ID from the page context.
update_form
ChatGPTUpdate an existing form's title, description, fields, settings, or publish status. Use this when the user asks to edit a form, add/remove fields, publish/unpublish, or change form settings. If the user is currently viewing a form, use the resource ID from page context.
update_form_variant
ChatGPTUpdate an A/B test variant's name, traffic weight, or active status. Use when the user asks to rename a variant, adjust the traffic split, or pause/resume an experiment.
update_identity_api_key
ChatGPTUpdate name, scopes, or rate_limit on the calling user's own API key. Returns the updated key. 404 if the key doesn't belong to the calling user.
update_mail_label
ChatGPTUpdate a label.
update_mail_rule
ChatGPTUpdate a rule.
update_mail_template
ChatGPTUpdate a template.
update_named_range
ChatGPTUpdate where a named range points to. Use after sheet structure changes (e.g., inserted rows) to re-point a named range at the correct cells. Names are matched case-insensitively.
update_pipeline
ChatGPTUpdate a pipeline's name or stages. Providing stages replaces the entire stage list — include every stage you want to keep. Reordering is done by the order in the array.
update_pivot_table
ChatGPTPatch a pivot table's config — source range, row/column/value fields, totals toggles, source-tab name. Only the fields you send are updated; the rest of the pivot config is preserved. Pass a tab field to move the pivot to a different tab.
update_product
ChatGPTUpdate product
update_project
ChatGPTUpdate a project's name, description, icon, or color. Provide only the fields you want to change.
update_quote
ChatGPTUpdate a CRM quote. Providing line_items replaces the entire line-item list. Totals are auto-recomputed.
update_role
ChatGPTUpdate a custom role's name or permissions. Requires admin role.
update_scheduled_message
ChatGPTEdit the content or scheduled send time of a pending scheduled message before it's sent. Fails if the message has already been sent or cancelled. Use this when the user wants to fix a typo in a scheduled message or reschedule it.
update_scheduler_link
ChatGPTUpdate a scheduler link (rename, change availability, toggle active, etc.).
update_scoring_rule
ChatGPTUpdate a lead scoring rule (name, field, operator, value, points, is_active).
update_security_settings
ChatGPTUpdate workspace security settings. Emits a security.updated audit event. Requires admin role. session_timeout_hours takes effect on next login; require_2fa stores the policy flag (enforcement is gated on 2FA implementation).
update_sequence
ChatGPTUpdate a sequence (rename, description, toggle active, replace step list). Providing steps replaces the entire step list.
update_settings
ChatGPTUpdate workspace settings (name, logo, timezone, etc.). Requires admin role. Pass a flat key-value object.
update_shared_drive
ChatGPTUpdate a shared drive (manager-only).
update_shared_drive_member
ChatGPTUpdate a member role (manager-only).
update_sheet_merges
ChatGPTUpdate the merged cell ranges for a sheet tab. Replaces all existing merges on the tab. Pass an empty merges array to clear all merges.
update_slicer
ChatGPTPatch a slicer's config — source range, target column, selected values, overlay position, or title. Only the fields you send are updated; the rest of the slicer config is preserved.
update_slide
ChatGPTUpdate an existing slide in a presentation. Specify the slide by its 0-based index. You can update the slide properties (background, notes) and/or replace its elements. If the user is currently viewing a presentation, use the presentation ID from the page context.
update_slide_master
ChatGPTUpdate a master slide's name, background, or elements. Slides using the master resolve the updated elements by reference.
update_task
ChatGPTUpdate a task. Status changes to 'done' auto-spawn the next recurrence (when set), trigger CRM activity logging, and emit task.completed events.
update_team
ChatGPTUpdate a team's settings (name, slug, description, email, parent, visibility, join policy, posting policy, icon, color). Only team admins or workspace admins can update. If changing parent, validates no cycle in hierarchy. Use this when the user asks to rename a team, move a team under a different parent, or change team settings.
update_user
ChatGPTUpdate a user's role, status, or quota. Requires admin or owner role. Use this when the user asks to change someone's role, deactivate an account, or adjust a user's storage quota. Cannot remove the owner role from the last remaining owner.
update_wiki_page
ChatGPTUpdate an existing wiki page's content, title, icon, or parent. Use this when the user asks to edit a wiki page, update documentation, or move a page to a different parent. If the user is currently viewing a wiki page, use the resource ID from page context.
update_wiki_synced_block
ChatGPTUpdate a synced block's content. All pages embedding this block will reflect the new content. Use this when the user asks to edit shared content or update a reusable snippet.
update_workspace
ChatGPTUpdate workspace name or slug. Requires admin role.
use_mail_template
ChatGPTRecord template use.
users_list
ChatGPTList users in the active workspace. Powers @mention pickers, assignee dropdowns, etc. Filterable by q (matches display_name + username, case-insensitive). Limit defaults to 50, hard cap 100. Member-accessible — use this to resolve a name to a user_id when assigning tasks or @mentioning people; the admin list_users tool is admin-gated and 403s for members/coworkers.
verify_domain
ChatGPTTrigger DNS verification for a workspace domain. Requires admin role.
verify_domain_ownership
ChatGPTVerify custom domain ownership via DNS TXT record. On success, auto-registers with SES to retrieve DKIM/SPF records. Requires admin role.
webhooks_delete
ChatGPTDelete a webhook.
webhooks_deliveries_list
ChatGPTList recent delivery attempts (status, response, retries). Paginated via ?limit= (default 25) and ?offset= (default 0).
webhooks_event_types
ChatGPTList event types an agent can subscribe to. Includes the * wildcard.
webhooks_get
ChatGPTGet one webhook.
webhooks_test
ChatGPTSend a test ping payload to the webhook URL.
webhooks_update
ChatGPTUpdate a webhook (url, events, description, active). Body shape matches UpdateWebhookInput.
wiki_database_create
ChatGPTCreate an inline database on a wiki page. Requires editor role on the host page.
wiki_database_get
ChatGPTGet an inline database with its full row set.
wiki_database_row_create
ChatGPTAppend a row to an inline database. Requires editor role on the host page.
wiki_database_row_delete
ChatGPTDelete a database row.
wiki_database_row_update
ChatGPTUpdate properties or sort order on a database row.
wiki_database_update
ChatGPTUpdate an inline database's name, schema, or views. Requires editor role on the host page.
wiki_page_backlinks_list
ChatGPTList wiki pages that contain [[link]] references to this page. Use this to see what pages cite a given page, or to find inbound knowledge links.
wiki_page_children_list
ChatGPTList the immediate child pages of a wiki page. Use this to traverse the page tree one level at a time, or to count children before a destructive delete.
wiki_page_database_create
ChatGPTCreate an inline database on a specific wiki page.
wiki_page_duplicate
ChatGPTDuplicate a wiki page (and optionally its descendants) into a target space + parent. Returns the new top-level page.
wiki_page_export
ChatGPTExport a wiki page to docx, pdf, html, or md. Streams the file with a Content-Disposition attachment header.
wiki_page_permanent_delete
ChatGPTPermanently delete a trashed wiki page. Irreversible.
wiki_page_restore
ChatGPTRestore a trashed wiki page and its children.
wiki_space_delete
ChatGPTDelete a wiki space and all of its pages.
wiki_space_get
ChatGPTGet a wiki space by slug, with its full page tree. Supports cursor pagination on pages.
wiki_space_member_add
ChatGPTAdd a user as a direct member of a wiki space with a given role.
wiki_space_member_remove
ChatGPTRemove a direct member from a wiki space.
wiki_space_members_list
ChatGPTList distinct members of a space — the owner plus everyone with a page-level permission inside it.
wiki_space_update
ChatGPTUpdate a wiki space. Only the space owner may change settings.
wiki_trash_list
ChatGPTList trashed (soft-deleted) wiki pages in the workspace.