query | string | Yes | The text to search. Pass 1-3 keywords drawn from words that would literally appear in the content, not the user’s natural-language description. Whitespace-separated terms are ANDed. For documents, every term must appear somewhere in the document (different chunks/pages are fine). For emails each term is matched across subject/body/sender/recipient. For chats/channels/calls the whole query is matched as a single adjacent phrase prefix, so long phrases will not match. Wrap a multi-word phrase in double quotes to match it as one phrase. Use matchType ‘exact’ for whole-token (or full email address) matching instead of prefix. |
matchType | "partial" | "exact" | No | How search tools match query terms. Restricted to partial/exact — the backend also supports regexp and an internal query mode, but those are not offered to the model. |
entityTypes | ("documents" | "chats" | "emails" | "channels" | "projects" | "call_records" | "calendar_events")[] | No | Which types of items to search. Leave empty (the default) to search all types — this is almost always what you want. Only set this when the user’s request clearly targets one or more specific types. Examples: [‘documents’], [‘emails’, ‘documents’], [‘channels’], [‘call_records’]. Projects and calendar events carry no indexed content, so they never match here — search those by name with NameSearch instead. |
inbox | string | No | Restrict email results to a single connected inbox, given as that inbox’s email address (from ListInboxes). Omit to search every inbox the user can access. Only set this when the user scopes the request to a specific mailbox. Only affects email results. |
tags | TagFilter[] | No | Restrict results to items carrying the given tags — any of them by default, every one of them with tagsMatch=“all”. Each entry names a tag by its label, matched case-insensitively against the user’s own tags; only set scope (“personal” or “team”) when the user distinguishes between their personal and team tags. An unknown label fails with the list of available tags — call ListTags first when unsure what tags exist. Only taggable items (documents, emails, AI chats, projects, call records) can match, so channels are dropped while a tag filter is active. |
tagsMatch | "any" | "all" | No | How multiple tag filters combine when filtering items. |