Search across recorded calls and meetings captured by Kaia. Returns matching recordings with transcripts, topics, summaries, and associated account/opportunity info.
Use this tool to find recordings by keyword, topic, account, opportunity, participant, host, date range, or title. Kaia captures two kinds of recordings:
- Voice calls (phone calls): sourceType = "voice"
- Meetings (video/screen-share conferences, e.g. Zoom, Teams): sourceType ≠ "voice"
When the user says "calls", filter to voice calls. When they say "meetings", filter to non-voice. When the intent covers both (e.g. "conversations", "recordings"), do not filter by sourceType.
FILTER FORMAT: Pass a JSON list of filter objects. Each filter has the shape: {attribute, value, operator}.
- attribute: the field to filter on (see supported attributes below)
- value: list of string values to match
- operator: (optional) defaults to "is". Supported: "is", "isNot"
(plus date-specific operators for 'meeting.startTime', see below)
All filters are combined with AND logic.
SUPPORTED FILTER ATTRIBUTES:
- 'search' — full-text keyword search across transcripts, notes, action items, meeting title,
participant/account/opportunity names. Syntax: Single word: value: ["budget"] Implicit AND: value: ["budget planning"] Explicit OR: value: ["\"budget\" OR \"planning\""] Exact phrase: value: ["\"budget planning\""]
- 'transcript.text' — search only within transcript text (more precise than 'search').
Example: [{attribute: "transcript.text", value: ["budget"], operator: "is"}]
- 'topic.type' — detected topic name.
General topics: 'budgetpricing', 'competitor', 'demotrial', 'discovery', 'eventmarketing', 'legal', 'logistics', 'nextstep', 'organization', 'product', 'purchase', 'salespitch', 'stakeholder', 'support'. MEDDPICC topics (prefix 'salesMethodology:'): 'salesMethodology:champion', 'salesMethodology:competitor', 'salesMethodology:metrics', 'salesMethodology:economicbuyer', 'salesMethodology:decisionprocess', 'salesMethodology:decisioncriteria', 'salesMethodology:paperprocess', 'salesMethodology:implicatepain'. Auto-enrichment: non-built-in names (e.g. "Salesforce") are automatically mapped to custom topic IDs if a match is found. Built-in types 'competitor' and 'product' automatically include all active custom topics of that type. Example: value: ["competitor", "Salesforce"] finds meetings tagged with any built-in competitor topic, all custom competitor topics, and the custom topic named 'Salesforce'. IMPORTANT: always pair a topic.type filter with include: [{attribute: "topic", includeType: "matching"}] to receive the matching topic segments in the results. Do NOT include transcript.
- 'meeting.accountid' — account id
- 'meeting.opportunityid' — opportunity id
- 'meeting.participant.userid' — participant user id (not just host)
- 'meeting.host.userid' — host user id
- 'meeting.sourcetype' — value: ["voice"], operator: "is" for calls;
value: ["voice"], operator: "isNot" for meetings.
- 'meeting.startTime' — date/range filter. Use ONLY these operators (no others are valid):
"is" — exact date match: value: ["2026-03-10"], operator: "is" "between" — date range: value: ["2026-03-01", "2026-03-05"], operator: "between" Relative operators (value must be ["0"], operator is one of the following exact strings): "last7Days" — past 7 days (use for "this week" or "last 7 days") "last30Days" — past 30 days "last90Days" — past 90 days "lastMonth" — the previous calendar month "thisMonth" — the current calendar month "today" — today only "untilToday" — from the beginning of time until today "ytd" — year to date
- 'meeting.title' — filter by keyword in meeting title
- 'meeting.duration' - filter by meeting duration in minutes. Supported operators include:
"gte" - greater than or equal to "lte" - less than or equal to "between" - duration between value[0] and value[1]
All attributes accept multiple comma-separated values.
FILTER EXAMPLES: filter: [{attribute: "search", value: ["Amplify OR budget"]}] filter: [{attribute: "topic.type", value: ["competitor", "Salesforce"], operator: "is"}, {attribute: "meeting.accountid", value: ["123"]}] filter: [{attribute: "topic.type", value: ["salespitch"], operator: "isNot"}] filter: [{attribute: "meeting.sourcetype", value: ["voice"], operator: "is"}] filter: [{attribute: "meeting.sourcetype", value: ["voice"], operator: "isNot"}]
INCLUDE FORMAT: Controls which artifact types are returned alongside each matching meeting. Only include artifact types relevant to the query to avoid unnecessary data.
attribute values:
- 'transcript' — transcript segments
- 'topic' — detected topics
includeType values:
- 'matching' — return only artifacts that match the current filter/search
INCLUDE EXAMPLES: Required for keyword search only: [{attribute: "transcript", includeType: "matching"}] Required for topic search only: [{attribute: "topic", includeType: "matching"}] Only when searching both simultaneously: [{attribute: "transcript", includeType: "matching"}, {attribute: "topic", includeType: "matching"}] Do NOT include transcript when topic.type is used as a filter — it returns unrelated segments and inflates the response.
PAGINATION: Use 'first' (default 10, max 30) to control page size. Use 'after' with the end_cursor from a previous response to fetch the next page.