change_labels
ChatGPTAdd and or remove labels from a conversation. At least one of add_shared_label_ids, add_mailbox_ids, remove_shared_label_ids, or remove_mailbox_ids is required. If you have multiple labels/mailboxes to add, do it all in a single tool call. If you have multiple conversations to change labels on, do a separate tool call for each conversation. Don't describe the labels in text.
compose_draft
ChatGPTCreate or update a message draft. Follow it with deliver_draft (using the returned conversation_id and draft_id) if the user asked to send, not just to draft. For email, unless the user's preferences specify otherwise: - Include a greeting like 'Hi [Name],' at the start; - Omit closings and signatures (the signature is appended automatically).
deliver_draft
ChatGPTDeliver a draft in the current conversation.
get_calendar_events
ChatGPTFetch calendar events to check the user's availability. Use this tool when: - The conversation involves scheduling, meetings, or availability; - Someone asks about meeting times or when the user is free; - Drafting a reply that proposes meeting times; If calendar_ids is omitted, queries all accessible calendars. Use mode='availability' to get just busy time slots, or mode='full' for event details. IMPORTANT: When inferring dates from conversation context: - If a month is mentioned without a year, use the NEXT occurrence of that month (future, not past); - "Upcoming", "next", or future-tense language always means a date after today; - Check the current date before making assumptions about which year.
get_contact_details
ChatGPTLook up contact details from contact books. Search by email, phone number, or general query (name, company, etc.). Returns up to 5 matching contacts.
get_conversation_entries
ChatGPTFetch older entries for a conversation that was cropped. Only call this when next_entries_before is present and you need more history.
get_conversations
ChatGPTFetch conversations by conversation IDs or shared label IDs. Only use this if you don't have a search term, otherwise use search_conversations to get the conversation IDs first. One of conversation_ids, shared_label_ids, team_ids, email_account_ids, or generic_account_ids is required. <conversation> headers and metadata are always included. Always assess first whether you need the full content or only the headers and metadata, and pass include_content accordingly. If you're asked to get a conversation in a specific mailbox, always use mailbox_id parameter. total_count and unseen_count reflect the number of conversations on all pages. If you need file attachments to get the context, reload the conversation with include_attachments parameter.
get_search_results
ChatGPTPoll for additional results from a previously started conversation search. Use this after search_conversations returns partial results (done="false"). Pass the search_id from the previous response.
list_calendars
ChatGPTList all calendars the user has access to. Returns calendar names, IDs, and ownership status (owned vs delegated/shared). Use this to discover which calendars to query for events.
manage_calendar_events
ChatGPTCreate, update, or delete a calendar event. Use list_calendars first to discover which calendars the user has access to. Use get_calendar_events to find existing event IDs for update or delete operations. Times must be in ISO 8601 format (e.g., 2024-03-15T10:00:00). For all-day events, use date format YYYY-MM-DD. Add a video call if the user might mean it. If the video conference was created, return the link to the user.
search_conversations
ChatGPTSearch conversations across all connected accounts (email, chat, etc.). NEVER use this tool if the user didn't provide a search term string, use get_conversations instead. Supports filtering by email filters, internal/external scopes, and shared labels. If you need then to get full conversation content, use get_conversations with the conversation IDs. CRITICAL: This is KEYWORD search, NOT semantic search. Multi-word queries require ALL words to appear in the email - this usually FAILS. QUERY STRATEGY: 1. Extract the CORE searchable noun from the user's request 2. IGNORE qualifiers: "my", "last", "recent", "the", "about", "for" - these hurt the search 3. Use FILTERS (date, email) to narrow - not more keywords 4. If no/wrong results, expand to SYNONYMS (see below) SYNONYM EXPANSION - Start with most likely term, expand if no/wrong results: - invoice → receipt → bill → statement - quote → estimate → proposal → pricing - shipping → delivery → tracking → shipment - contract → agreement → terms - payment → paid → transaction → charge - order → purchase → confirmation EXAMPLES - User request → Correct approach: "Find my last utility invoice" → Start: query: "invoice" + since filter → No/wrong results? Try "bill", then "statement" "What was the contractor's quote?" → Start: query: "quote" → No/wrong results? Try "estimate", then "proposal" WRONG: query: "last utility invoice" (0 results - emails don't contain "last") RIGHT: query: "invoice" + filters → no/wrong results → try "bill" → try "statement" AVAILABLE FILTERS: - email: Conversations involving this address (sender OR recipient) - from/to: Specific email header fields - since/before: Date range (YYYY-MM-DD) - has_attachments: Only with attachments - search_in_internal: Search comments/posts/drafts only - search_in_external: Search emails/messages only - mailbox_id: Search conversations in the specified mailbox. Only pass the mailbox ID from the mailbox or team record, otherwise use search_mailboxes tool first. If you're asked to get a conversation in a specific mailbox, always use this parameter. Note: A conversation can have both internal comments AND external emails/messages. WORKFLOW: 1. Search with most likely term + filters 2. If done="false" → call get_search_results with search_id for more results 3. If too many results → add email/date filters 4. If no/wrong results → try next synonym from the list above 5. Once you have results → use get_conversations to fetch full content If you're unsure about filters, ASK the user for clarification rather than running a broad search. A narrow search that misses some results is better than a broad search that returns thousands. ASYNC BEHAVIOR: Search runs across multiple sources (Gmail, Office365, etc.). Initial results return quickly, but if done="false", call get_search_results with the returned search_id to get additional results as they arrive.
search_mailboxes
ChatGPTSearch unified and label mailboxes. It does not search conversations within these mailboxes, only mailboxes themselves. Does not return individual team mailboxes, retrieve them through a team record if needed. One of query or types is required. When query is provided, types is forced to "label" (to search only non-system folders). If you need to find an email account, use the email_account_query parameter with types: ['all']
search_responses
ChatGPTSearch canned responses by semantic similarity. Use this to find relevant templates, policies, or pre-written replies that can help answer a question.
search_shared_labels
ChatGPTSearch shared labels across all user organizations. At least one of query, label_ids, or parent_label_ids is required.
search_teams
ChatGPTSearch teams across all user organizations. At least one of query, team_ids, or organization_ids is required.
change_labels
Claudecompose_draft
Claudeget_calendar_events
Claudeget_contact_details
Claudeget_conversation_entries
Claudeget_conversations
Claudeget_search_results
Claudelist_calendars
Claudemanage_calendar_events
Claudesearch_conversations
Claudesearch_mailboxes
Claudesearch_responses
Claudesearch_shared_labels
Claudesearch_teams
Claude