Skip to content

Commit 97d87ec

Browse files
committed
fix(fathom): fully expose list_meetings meeting fields in outputs schema
transformResponse already returned meeting_title, scheduled/recording times, recorded_by, calendar_invitees, default_summary, transcript, action_items, and crm_matches, but outputs.meetings.items.properties only documented a curated subset, leaving these fields unaddressable from downstream workflow blocks. Complete the schema to match the full Meeting object Fathom's API returns.
1 parent c360e04 commit 97d87ec

2 files changed

Lines changed: 225 additions & 0 deletions

File tree

apps/docs/content/docs/en/integrations/fathom.mdx

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,20 +62,69 @@ List recent meetings recorded by the user or shared to their team.
6262
| --------- | ---- | ----------- |
6363
| `meetings` | array | List of meetings |
6464
|`title` | string | Meeting title |
65+
|`meeting_title` | string | Calendar event title |
6566
|`meeting_type` | string | Meeting type name |
6667
|`recording_id` | number | Unique recording ID |
6768
|`url` | string | URL to view the meeting |
6869
|`meeting_url` | string | URL of the underlying video call \(Zoom, Meet, Teams, etc.\) |
6970
|`share_url` | string | Shareable URL |
7071
|`created_at` | string | Creation timestamp |
72+
|`scheduled_start_time` | string | Scheduled start time |
73+
|`scheduled_end_time` | string | Scheduled end time |
74+
|`recording_start_time` | string | Recording start time |
75+
|`recording_end_time` | string | Recording end time |
7176
|`transcript_language` | string | Transcript language |
77+
|`calendar_invitees_domains_type` | string | Invitee domain type: only_internal or one_or_more_external |
7278
|`shared_with` | string | Sharing scope: no_teams, single_team, multiple_teams, or all_teams |
79+
|`recorded_by` | object | Recorder details |
80+
|`name` | string | Name of the recorder |
81+
|`email` | string | Email of the recorder |
82+
|`email_domain` | string | Email domain of the recorder |
83+
|`team` | string | Recorder team name |
84+
|`calendar_invitees` | array | Calendar invitees for the meeting |
85+
|`name` | string | Invitee name |
86+
|`email` | string | Invitee email |
87+
|`email_domain` | string | Invitee email domain |
88+
|`is_external` | boolean | Whether the invitee is external |
89+
|`matched_speaker_display_name` | string | Matched transcript speaker display name |
90+
|`default_summary` | object | Meeting summary |
91+
|`template_name` | string | Summary template name |
92+
|`markdown_formatted` | string | Markdown-formatted summary |
93+
|`transcript` | array | Transcript entries with speaker, text, and timestamp |
94+
|`speaker` | object | Speaker information |
95+
|`display_name` | string | Speaker display name |
96+
|`matched_calendar_invitee_email` | string | Matched calendar invitee email |
97+
|`text` | string | Transcript text |
98+
|`timestamp` | string | Timestamp \(HH:MM:SS\) |
99+
|`action_items` | array | Action items extracted from the meeting |
100+
|`description` | string | Action item description |
101+
|`user_generated` | boolean | Whether the action item was user-generated |
102+
|`completed` | boolean | Whether the action item is completed |
103+
|`recording_timestamp` | string | Timestamp in the recording \(HH:MM:SS\) |
104+
|`recording_playback_url` | string | Playback URL for the action item moment |
105+
|`assignee` | object | Assignee details |
106+
|`name` | string | Assignee name |
107+
|`email` | string | Assignee email |
108+
|`team` | string | Assignee team |
73109
|`highlights` | array | Meeting highlights with type, summary, text, and start/end time |
74110
|`type` | string | Highlight type |
75111
|`summary` | string | Highlight summary |
76112
|`text` | string | Highlight text |
77113
|`start_time` | number | Start time in seconds |
78114
|`end_time` | number | End time in seconds |
115+
|`crm_matches` | object | Matched CRM contacts, companies, and deals |
116+
|`contacts` | array | Matched CRM contacts |
117+
|`name` | string | Contact name |
118+
|`email` | string | Contact email |
119+
|`record_url` | string | CRM record URL |
120+
|`companies` | array | Matched CRM companies |
121+
|`name` | string | Company name |
122+
|`record_url` | string | CRM record URL |
123+
|`deals` | array | Matched CRM deals |
124+
|`name` | string | Deal name |
125+
|`amount` | number | Deal amount |
126+
|`record_url` | string | CRM record URL |
127+
|`error` | string | CRM match error, if any |
79128
| `next_cursor` | string | Pagination cursor for next page |
80129

81130
### `fathom_list_meeting_types`

apps/sim/tools/fathom/list_meetings.ts

Lines changed: 176 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,7 @@ export const listMeetingsTool: ToolConfig<FathomListMeetingsParams, FathomListMe
194194
type: 'object',
195195
properties: {
196196
title: { type: 'string', description: 'Meeting title' },
197+
meeting_title: { type: 'string', description: 'Calendar event title', optional: true },
197198
meeting_type: { type: 'string', description: 'Meeting type name', optional: true },
198199
recording_id: { type: 'number', description: 'Unique recording ID' },
199200
url: { type: 'string', description: 'URL to view the meeting' },
@@ -204,12 +205,144 @@ export const listMeetingsTool: ToolConfig<FathomListMeetingsParams, FathomListMe
204205
},
205206
share_url: { type: 'string', description: 'Shareable URL' },
206207
created_at: { type: 'string', description: 'Creation timestamp' },
208+
scheduled_start_time: {
209+
type: 'string',
210+
description: 'Scheduled start time',
211+
optional: true,
212+
},
213+
scheduled_end_time: {
214+
type: 'string',
215+
description: 'Scheduled end time',
216+
optional: true,
217+
},
218+
recording_start_time: {
219+
type: 'string',
220+
description: 'Recording start time',
221+
optional: true,
222+
},
223+
recording_end_time: {
224+
type: 'string',
225+
description: 'Recording end time',
226+
optional: true,
227+
},
207228
transcript_language: { type: 'string', description: 'Transcript language' },
229+
calendar_invitees_domains_type: {
230+
type: 'string',
231+
description: 'Invitee domain type: only_internal or one_or_more_external',
232+
optional: true,
233+
},
208234
shared_with: {
209235
type: 'string',
210236
description: 'Sharing scope: no_teams, single_team, multiple_teams, or all_teams',
211237
optional: true,
212238
},
239+
recorded_by: {
240+
type: 'object',
241+
description: 'Recorder details',
242+
optional: true,
243+
properties: {
244+
name: { type: 'string', description: 'Name of the recorder' },
245+
email: { type: 'string', description: 'Email of the recorder' },
246+
email_domain: { type: 'string', description: 'Email domain of the recorder' },
247+
team: { type: 'string', description: 'Recorder team name', optional: true },
248+
},
249+
},
250+
calendar_invitees: {
251+
type: 'array',
252+
description: 'Calendar invitees for the meeting',
253+
items: {
254+
type: 'object',
255+
properties: {
256+
name: { type: 'string', description: 'Invitee name', optional: true },
257+
email: { type: 'string', description: 'Invitee email' },
258+
email_domain: {
259+
type: 'string',
260+
description: 'Invitee email domain',
261+
optional: true,
262+
},
263+
is_external: { type: 'boolean', description: 'Whether the invitee is external' },
264+
matched_speaker_display_name: {
265+
type: 'string',
266+
description: 'Matched transcript speaker display name',
267+
optional: true,
268+
},
269+
},
270+
},
271+
},
272+
default_summary: {
273+
type: 'object',
274+
description: 'Meeting summary',
275+
optional: true,
276+
properties: {
277+
template_name: {
278+
type: 'string',
279+
description: 'Summary template name',
280+
optional: true,
281+
},
282+
markdown_formatted: {
283+
type: 'string',
284+
description: 'Markdown-formatted summary',
285+
optional: true,
286+
},
287+
},
288+
},
289+
transcript: {
290+
type: 'array',
291+
description: 'Transcript entries with speaker, text, and timestamp',
292+
optional: true,
293+
items: {
294+
type: 'object',
295+
properties: {
296+
speaker: {
297+
type: 'object',
298+
description: 'Speaker information',
299+
properties: {
300+
display_name: { type: 'string', description: 'Speaker display name' },
301+
matched_calendar_invitee_email: {
302+
type: 'string',
303+
description: 'Matched calendar invitee email',
304+
optional: true,
305+
},
306+
},
307+
},
308+
text: { type: 'string', description: 'Transcript text' },
309+
timestamp: { type: 'string', description: 'Timestamp (HH:MM:SS)' },
310+
},
311+
},
312+
},
313+
action_items: {
314+
type: 'array',
315+
description: 'Action items extracted from the meeting',
316+
optional: true,
317+
items: {
318+
type: 'object',
319+
properties: {
320+
description: { type: 'string', description: 'Action item description' },
321+
user_generated: {
322+
type: 'boolean',
323+
description: 'Whether the action item was user-generated',
324+
},
325+
completed: { type: 'boolean', description: 'Whether the action item is completed' },
326+
recording_timestamp: {
327+
type: 'string',
328+
description: 'Timestamp in the recording (HH:MM:SS)',
329+
},
330+
recording_playback_url: {
331+
type: 'string',
332+
description: 'Playback URL for the action item moment',
333+
},
334+
assignee: {
335+
type: 'object',
336+
description: 'Assignee details',
337+
properties: {
338+
name: { type: 'string', description: 'Assignee name', optional: true },
339+
email: { type: 'string', description: 'Assignee email', optional: true },
340+
team: { type: 'string', description: 'Assignee team', optional: true },
341+
},
342+
},
343+
},
344+
},
345+
},
213346
highlights: {
214347
type: 'array',
215348
description: 'Meeting highlights with type, summary, text, and start/end time',
@@ -225,6 +358,49 @@ export const listMeetingsTool: ToolConfig<FathomListMeetingsParams, FathomListMe
225358
},
226359
},
227360
},
361+
crm_matches: {
362+
type: 'object',
363+
description: 'Matched CRM contacts, companies, and deals',
364+
optional: true,
365+
properties: {
366+
contacts: {
367+
type: 'array',
368+
description: 'Matched CRM contacts',
369+
items: {
370+
type: 'object',
371+
properties: {
372+
name: { type: 'string', description: 'Contact name' },
373+
email: { type: 'string', description: 'Contact email' },
374+
record_url: { type: 'string', description: 'CRM record URL' },
375+
},
376+
},
377+
},
378+
companies: {
379+
type: 'array',
380+
description: 'Matched CRM companies',
381+
items: {
382+
type: 'object',
383+
properties: {
384+
name: { type: 'string', description: 'Company name' },
385+
record_url: { type: 'string', description: 'CRM record URL' },
386+
},
387+
},
388+
},
389+
deals: {
390+
type: 'array',
391+
description: 'Matched CRM deals',
392+
items: {
393+
type: 'object',
394+
properties: {
395+
name: { type: 'string', description: 'Deal name' },
396+
amount: { type: 'number', description: 'Deal amount' },
397+
record_url: { type: 'string', description: 'CRM record URL' },
398+
},
399+
},
400+
},
401+
error: { type: 'string', description: 'CRM match error, if any', optional: true },
402+
},
403+
},
228404
},
229405
},
230406
},

0 commit comments

Comments
 (0)