From 56fc17f3d4447ddc6baac35e9831c73f3529989e Mon Sep 17 00:00:00 2001 From: waleed Date: Wed, 1 Jul 2026 23:50:47 -0700 Subject: [PATCH 1/6] feat(fathom): add list meeting types tool and missing list-meetings filters - Add fathom_list_meeting_types tool (GET /meeting_types) - Add missing list-meetings params: includeHighlights, meetingType, calendarInviteesDomains, calendarInviteesDomainsType - Add missing meeting response fields: meeting_type, meeting_url, shared_with, highlights - Wire new operation and filters into the Fathom block --- .../content/docs/en/integrations/fathom.mdx | 27 ++++++ apps/sim/blocks/blocks/fathom.ts | 63 +++++++++++- apps/sim/lib/integrations/integrations.json | 6 +- apps/sim/tools/fathom/index.ts | 2 + apps/sim/tools/fathom/list_meeting_types.ts | 96 +++++++++++++++++++ apps/sim/tools/fathom/list_meetings.ts | 43 +++++++++ apps/sim/tools/fathom/types.ts | 30 ++++++ apps/sim/tools/registry.ts | 2 + 8 files changed, 267 insertions(+), 2 deletions(-) create mode 100644 apps/sim/tools/fathom/list_meeting_types.ts diff --git a/apps/docs/content/docs/en/integrations/fathom.mdx b/apps/docs/content/docs/en/integrations/fathom.mdx index 16270807b0e..2a2600a1004 100644 --- a/apps/docs/content/docs/en/integrations/fathom.mdx +++ b/apps/docs/content/docs/en/integrations/fathom.mdx @@ -46,10 +46,14 @@ List recent meetings recorded by the user or shared to their team. | `includeTranscript` | string | No | Include meeting transcript \(true/false\) | | `includeActionItems` | string | No | Include action items \(true/false\) | | `includeCrmMatches` | string | No | Include linked CRM matches \(true/false\) | +| `includeHighlights` | string | No | Include meeting highlights \(true/false\) | | `createdAfter` | string | No | Filter meetings created after this ISO 8601 timestamp | | `createdBefore` | string | No | Filter meetings created before this ISO 8601 timestamp | | `recordedBy` | string | No | Filter by recorder email address | | `teams` | string | No | Filter by team name | +| `meetingType` | string | No | Filter by meeting type name | +| `calendarInviteesDomains` | string | No | Filter by calendar invitee company domain \(exact match\) | +| `calendarInviteesDomainsType` | string | No | Filter by invitee domain type: all, only_internal, or one_or_more_external | | `cursor` | string | No | Pagination cursor from a previous response | #### Output @@ -58,11 +62,34 @@ List recent meetings recorded by the user or shared to their team. | --------- | ---- | ----------- | | `meetings` | array | List of meetings | | ↳ `title` | string | Meeting title | +| ↳ `meeting_type` | string | Meeting type name | | ↳ `recording_id` | number | Unique recording ID | | ↳ `url` | string | URL to view the meeting | | ↳ `share_url` | string | Shareable URL | | ↳ `created_at` | string | Creation timestamp | | ↳ `transcript_language` | string | Transcript language | +| ↳ `shared_with` | string | Sharing scope: no_teams, single_team, multiple_teams, or all_teams | +| `next_cursor` | string | Pagination cursor for next page | + +### `fathom_list_meeting_types` + +List meeting types configured in your Fathom organization. + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `apiKey` | string | Yes | Fathom API Key | +| `cursor` | string | No | Pagination cursor from a previous response | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `meetingTypes` | array | List of meeting types | +| ↳ `name` | string | Meeting type name | +| ↳ `status` | string | Meeting type status: active or inactive | +| ↳ `created_at` | string | Date the meeting type was created | | `next_cursor` | string | Pagination cursor for next page | ### `fathom_get_summary` diff --git a/apps/sim/blocks/blocks/fathom.ts b/apps/sim/blocks/blocks/fathom.ts index 2bd604f6a28..40bdf1364c2 100644 --- a/apps/sim/blocks/blocks/fathom.ts +++ b/apps/sim/blocks/blocks/fathom.ts @@ -24,6 +24,7 @@ export const FathomBlock: BlockConfig = { type: 'dropdown', options: [ { label: 'List Meetings', id: 'fathom_list_meetings' }, + { label: 'List Meeting Types', id: 'fathom_list_meeting_types' }, { label: 'Get Summary', id: 'fathom_get_summary' }, { label: 'Get Transcript', id: 'fathom_get_transcript' }, { label: 'List Team Members', id: 'fathom_list_team_members' }, @@ -83,6 +84,17 @@ export const FathomBlock: BlockConfig = { value: () => 'false', condition: { field: 'operation', value: 'fathom_list_meetings' }, }, + { + id: 'includeHighlights', + title: 'Include Highlights', + type: 'dropdown', + options: [ + { label: 'No', id: 'false' }, + { label: 'Yes', id: 'true' }, + ], + value: () => 'false', + condition: { field: 'operation', value: 'fathom_list_meetings' }, + }, { id: 'createdAfter', title: 'Created After', @@ -128,6 +140,35 @@ export const FathomBlock: BlockConfig = { }, mode: 'advanced', }, + { + id: 'meetingType', + title: 'Meeting Type', + type: 'short-input', + placeholder: 'Filter by meeting type name', + condition: { field: 'operation', value: 'fathom_list_meetings' }, + mode: 'advanced', + }, + { + id: 'calendarInviteesDomains', + title: 'Invitee Domain', + type: 'short-input', + placeholder: 'Filter by calendar invitee company domain', + condition: { field: 'operation', value: 'fathom_list_meetings' }, + mode: 'advanced', + }, + { + id: 'calendarInviteesDomainsType', + title: 'Invitee Domain Type', + type: 'dropdown', + options: [ + { label: 'All', id: 'all' }, + { label: 'Only Internal', id: 'only_internal' }, + { label: 'One or More External', id: 'one_or_more_external' }, + ], + value: () => 'all', + condition: { field: 'operation', value: 'fathom_list_meetings' }, + mode: 'advanced', + }, { id: 'cursor', title: 'Pagination Cursor', @@ -135,7 +176,12 @@ export const FathomBlock: BlockConfig = { placeholder: 'Cursor from a previous response', condition: { field: 'operation', - value: ['fathom_list_meetings', 'fathom_list_team_members', 'fathom_list_teams'], + value: [ + 'fathom_list_meetings', + 'fathom_list_meeting_types', + 'fathom_list_team_members', + 'fathom_list_teams', + ], }, mode: 'advanced', }, @@ -162,6 +208,7 @@ export const FathomBlock: BlockConfig = { tools: { access: [ 'fathom_list_meetings', + 'fathom_list_meeting_types', 'fathom_get_summary', 'fathom_get_transcript', 'fathom_list_team_members', @@ -187,6 +234,10 @@ export const FathomBlock: BlockConfig = { type: 'string', description: 'Include linked CRM matches in meetings response', }, + includeHighlights: { + type: 'string', + description: 'Include highlights in meetings response', + }, createdAfter: { type: 'string', description: 'Filter meetings created after this timestamp' }, createdBefore: { type: 'string', @@ -194,10 +245,20 @@ export const FathomBlock: BlockConfig = { }, recordedBy: { type: 'string', description: 'Filter by recorder email' }, teams: { type: 'string', description: 'Filter by team name' }, + meetingType: { type: 'string', description: 'Filter by meeting type name' }, + calendarInviteesDomains: { + type: 'string', + description: 'Filter by calendar invitee company domain', + }, + calendarInviteesDomainsType: { + type: 'string', + description: 'Filter by invitee domain type', + }, cursor: { type: 'string', description: 'Pagination cursor for next page' }, }, outputs: { meetings: { type: 'json', description: 'List of meetings' }, + meetingTypes: { type: 'json', description: 'List of meeting types' }, template_name: { type: 'string', description: 'Summary template name' }, markdown_formatted: { type: 'string', description: 'Markdown-formatted summary' }, transcript: { type: 'json', description: 'Meeting transcript entries' }, diff --git a/apps/sim/lib/integrations/integrations.json b/apps/sim/lib/integrations/integrations.json index 03f07029836..f542ae6daea 100644 --- a/apps/sim/lib/integrations/integrations.json +++ b/apps/sim/lib/integrations/integrations.json @@ -5086,6 +5086,10 @@ "name": "List Meetings", "description": "List recent meetings recorded by the user or shared to their team." }, + { + "name": "List Meeting Types", + "description": "List meeting types configured in your Fathom organization." + }, { "name": "Get Summary", "description": "Get the call summary for a specific meeting recording." @@ -5103,7 +5107,7 @@ "description": "List teams in your Fathom organization." } ], - "operationCount": 5, + "operationCount": 6, "triggers": [ { "id": "fathom_new_meeting", diff --git a/apps/sim/tools/fathom/index.ts b/apps/sim/tools/fathom/index.ts index ac140eb94e9..75c3097e6f5 100644 --- a/apps/sim/tools/fathom/index.ts +++ b/apps/sim/tools/fathom/index.ts @@ -1,5 +1,6 @@ import { getSummaryTool } from '@/tools/fathom/get_summary' import { getTranscriptTool } from '@/tools/fathom/get_transcript' +import { listMeetingTypesTool } from '@/tools/fathom/list_meeting_types' import { listMeetingsTool } from '@/tools/fathom/list_meetings' import { listTeamMembersTool } from '@/tools/fathom/list_team_members' import { listTeamsTool } from '@/tools/fathom/list_teams' @@ -7,6 +8,7 @@ import { listTeamsTool } from '@/tools/fathom/list_teams' export const fathomGetSummaryTool = getSummaryTool export const fathomGetTranscriptTool = getTranscriptTool export const fathomListMeetingsTool = listMeetingsTool +export const fathomListMeetingTypesTool = listMeetingTypesTool export const fathomListTeamMembersTool = listTeamMembersTool export const fathomListTeamsTool = listTeamsTool diff --git a/apps/sim/tools/fathom/list_meeting_types.ts b/apps/sim/tools/fathom/list_meeting_types.ts new file mode 100644 index 00000000000..6f77c8d7adc --- /dev/null +++ b/apps/sim/tools/fathom/list_meeting_types.ts @@ -0,0 +1,96 @@ +import type { + FathomListMeetingTypesParams, + FathomListMeetingTypesResponse, +} from '@/tools/fathom/types' +import type { ToolConfig } from '@/tools/types' + +export const listMeetingTypesTool: ToolConfig< + FathomListMeetingTypesParams, + FathomListMeetingTypesResponse +> = { + id: 'fathom_list_meeting_types', + name: 'Fathom List Meeting Types', + description: 'List meeting types configured in your Fathom organization.', + version: '1.0.0', + + params: { + apiKey: { + type: 'string', + required: true, + visibility: 'user-only', + description: 'Fathom API Key', + }, + cursor: { + type: 'string', + required: false, + visibility: 'user-or-llm', + description: 'Pagination cursor from a previous response', + }, + }, + + request: { + url: (params) => { + const url = new URL('https://api.fathom.ai/external/v1/meeting_types') + if (params.cursor) url.searchParams.append('cursor', params.cursor) + return url.toString() + }, + method: 'GET', + headers: (params) => ({ + 'X-Api-Key': params.apiKey, + 'Content-Type': 'application/json', + }), + }, + + transformResponse: async (response: Response) => { + if (!response.ok) { + const errorData = await response.json().catch(() => ({})) + return { + success: false, + error: + (errorData as Record).message || + `Fathom API error: ${response.status} ${response.statusText}`, + output: { + meetingTypes: [], + next_cursor: null, + }, + } + } + + const data = await response.json() + const meetingTypes = (data.items ?? []).map( + (meetingType: { name?: string; status?: string; created_at?: string }) => ({ + name: meetingType.name ?? '', + status: meetingType.status ?? '', + created_at: meetingType.created_at ?? '', + }) + ) + + return { + success: true, + output: { + meetingTypes, + next_cursor: data.next_cursor ?? null, + }, + } + }, + + outputs: { + meetingTypes: { + type: 'array', + description: 'List of meeting types', + items: { + type: 'object', + properties: { + name: { type: 'string', description: 'Meeting type name' }, + status: { type: 'string', description: 'Meeting type status: active or inactive' }, + created_at: { type: 'string', description: 'Date the meeting type was created' }, + }, + }, + }, + next_cursor: { + type: 'string', + description: 'Pagination cursor for next page', + optional: true, + }, + }, +} diff --git a/apps/sim/tools/fathom/list_meetings.ts b/apps/sim/tools/fathom/list_meetings.ts index 5fff960ea4f..09c40ea738d 100644 --- a/apps/sim/tools/fathom/list_meetings.ts +++ b/apps/sim/tools/fathom/list_meetings.ts @@ -38,6 +38,12 @@ export const listMeetingsTool: ToolConfig & { recorded_by?: Record }) => ({ title: meeting.title ?? '', meeting_title: meeting.meeting_title ?? null, + meeting_type: meeting.meeting_type ?? null, recording_id: meeting.recording_id ?? null, url: meeting.url ?? '', + meeting_url: meeting.meeting_url ?? null, share_url: meeting.share_url ?? '', created_at: meeting.created_at ?? '', scheduled_start_time: meeting.scheduled_start_time ?? null, @@ -124,6 +159,7 @@ export const listMeetingsTool: ToolConfig | null + highlights: Array<{ + type: string + summary: string | null + text: string + start_time: number + end_time: number + }> | null crm_matches: { contacts: Array<{ name: string; email: string; record_url: string }> companies: Array<{ name: string; record_url: string }> @@ -119,9 +133,25 @@ export interface FathomListTeamsResponse extends ToolResponse { } } +export interface FathomListMeetingTypesParams extends FathomBaseParams { + cursor?: string +} + +export interface FathomListMeetingTypesResponse extends ToolResponse { + output: { + meetingTypes: Array<{ + name: string + status: string + created_at: string + }> + next_cursor: string | null + } +} + export type FathomResponse = | FathomListMeetingsResponse | FathomGetSummaryResponse | FathomGetTranscriptResponse | FathomListTeamMembersResponse | FathomListTeamsResponse + | FathomListMeetingTypesResponse diff --git a/apps/sim/tools/registry.ts b/apps/sim/tools/registry.ts index 4adbd38fb46..b56d27ccb1c 100644 --- a/apps/sim/tools/registry.ts +++ b/apps/sim/tools/registry.ts @@ -893,6 +893,7 @@ import { fathomGetSummaryTool, fathomGetTranscriptTool, fathomListMeetingsTool, + fathomListMeetingTypesTool, fathomListTeamMembersTool, fathomListTeamsTool, } from '@/tools/fathom' @@ -6890,6 +6891,7 @@ export const tools: Record = { elevenlabs_speech_to_speech: elevenLabsSpeechToSpeechTool, elevenlabs_audio_isolation: elevenLabsAudioIsolationTool, fathom_list_meetings: fathomListMeetingsTool, + fathom_list_meeting_types: fathomListMeetingTypesTool, fathom_get_summary: fathomGetSummaryTool, fathom_get_transcript: fathomGetTranscriptTool, fathom_list_team_members: fathomListTeamMembersTool, From 4e1478b72d6392813d0d407fb3f20e30ff686a89 Mon Sep 17 00:00:00 2001 From: waleed Date: Wed, 1 Jul 2026 23:57:34 -0700 Subject: [PATCH 2/6] fix(fathom): expose meeting_url/highlights in outputs, stop force-sending domain type default - Add meeting_url and highlights to list_meetings outputs schema so they're addressable from downstream blocks (Greptile P1) - Drop the forced 'all' default on calendarInviteesDomainsType so the filter is only sent when a user explicitly picks a value (Greptile P2) --- .../content/docs/en/integrations/fathom.mdx | 7 +++++++ apps/sim/blocks/blocks/fathom.ts | 1 - apps/sim/tools/fathom/list_meetings.ts | 20 +++++++++++++++++++ 3 files changed, 27 insertions(+), 1 deletion(-) diff --git a/apps/docs/content/docs/en/integrations/fathom.mdx b/apps/docs/content/docs/en/integrations/fathom.mdx index 2a2600a1004..b00afd5e8f2 100644 --- a/apps/docs/content/docs/en/integrations/fathom.mdx +++ b/apps/docs/content/docs/en/integrations/fathom.mdx @@ -65,10 +65,17 @@ List recent meetings recorded by the user or shared to their team. | ↳ `meeting_type` | string | Meeting type name | | ↳ `recording_id` | number | Unique recording ID | | ↳ `url` | string | URL to view the meeting | +| ↳ `meeting_url` | string | URL of the underlying video call \(Zoom, Meet, Teams, etc.\) | | ↳ `share_url` | string | Shareable URL | | ↳ `created_at` | string | Creation timestamp | | ↳ `transcript_language` | string | Transcript language | | ↳ `shared_with` | string | Sharing scope: no_teams, single_team, multiple_teams, or all_teams | +| ↳ `highlights` | array | Meeting highlights with type, summary, text, and start/end time | +| ↳ `type` | string | Highlight type | +| ↳ `summary` | string | Highlight summary | +| ↳ `text` | string | Highlight text | +| ↳ `start_time` | number | Start time in seconds | +| ↳ `end_time` | number | End time in seconds | | `next_cursor` | string | Pagination cursor for next page | ### `fathom_list_meeting_types` diff --git a/apps/sim/blocks/blocks/fathom.ts b/apps/sim/blocks/blocks/fathom.ts index 40bdf1364c2..ed14925a544 100644 --- a/apps/sim/blocks/blocks/fathom.ts +++ b/apps/sim/blocks/blocks/fathom.ts @@ -165,7 +165,6 @@ export const FathomBlock: BlockConfig = { { label: 'Only Internal', id: 'only_internal' }, { label: 'One or More External', id: 'one_or_more_external' }, ], - value: () => 'all', condition: { field: 'operation', value: 'fathom_list_meetings' }, mode: 'advanced', }, diff --git a/apps/sim/tools/fathom/list_meetings.ts b/apps/sim/tools/fathom/list_meetings.ts index 09c40ea738d..2a182077147 100644 --- a/apps/sim/tools/fathom/list_meetings.ts +++ b/apps/sim/tools/fathom/list_meetings.ts @@ -197,6 +197,11 @@ export const listMeetingsTool: ToolConfig Date: Thu, 2 Jul 2026 00:03:59 -0700 Subject: [PATCH 3/6] fix(fathom): never send calendar_invitees_domains_type=all to the API Match the existing Fathom connector's guard (meetingType !== 'all') so the request omits the param entirely when the value is the API's own default, regardless of what the dropdown shows selected in the UI. --- apps/sim/tools/fathom/list_meetings.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/sim/tools/fathom/list_meetings.ts b/apps/sim/tools/fathom/list_meetings.ts index 2a182077147..2531a2a8e11 100644 --- a/apps/sim/tools/fathom/list_meetings.ts +++ b/apps/sim/tools/fathom/list_meetings.ts @@ -111,7 +111,7 @@ export const listMeetingsTool: ToolConfig Date: Thu, 2 Jul 2026 08:26:16 -0700 Subject: [PATCH 4/6] 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. --- .../content/docs/en/integrations/fathom.mdx | 49 +++++ apps/sim/tools/fathom/list_meetings.ts | 176 ++++++++++++++++++ 2 files changed, 225 insertions(+) diff --git a/apps/docs/content/docs/en/integrations/fathom.mdx b/apps/docs/content/docs/en/integrations/fathom.mdx index b00afd5e8f2..75d2f2b1104 100644 --- a/apps/docs/content/docs/en/integrations/fathom.mdx +++ b/apps/docs/content/docs/en/integrations/fathom.mdx @@ -62,20 +62,69 @@ List recent meetings recorded by the user or shared to their team. | --------- | ---- | ----------- | | `meetings` | array | List of meetings | | ↳ `title` | string | Meeting title | +| ↳ `meeting_title` | string | Calendar event title | | ↳ `meeting_type` | string | Meeting type name | | ↳ `recording_id` | number | Unique recording ID | | ↳ `url` | string | URL to view the meeting | | ↳ `meeting_url` | string | URL of the underlying video call \(Zoom, Meet, Teams, etc.\) | | ↳ `share_url` | string | Shareable URL | | ↳ `created_at` | string | Creation timestamp | +| ↳ `scheduled_start_time` | string | Scheduled start time | +| ↳ `scheduled_end_time` | string | Scheduled end time | +| ↳ `recording_start_time` | string | Recording start time | +| ↳ `recording_end_time` | string | Recording end time | | ↳ `transcript_language` | string | Transcript language | +| ↳ `calendar_invitees_domains_type` | string | Invitee domain type: only_internal or one_or_more_external | | ↳ `shared_with` | string | Sharing scope: no_teams, single_team, multiple_teams, or all_teams | +| ↳ `recorded_by` | object | Recorder details | +| ↳ `name` | string | Name of the recorder | +| ↳ `email` | string | Email of the recorder | +| ↳ `email_domain` | string | Email domain of the recorder | +| ↳ `team` | string | Recorder team name | +| ↳ `calendar_invitees` | array | Calendar invitees for the meeting | +| ↳ `name` | string | Invitee name | +| ↳ `email` | string | Invitee email | +| ↳ `email_domain` | string | Invitee email domain | +| ↳ `is_external` | boolean | Whether the invitee is external | +| ↳ `matched_speaker_display_name` | string | Matched transcript speaker display name | +| ↳ `default_summary` | object | Meeting summary | +| ↳ `template_name` | string | Summary template name | +| ↳ `markdown_formatted` | string | Markdown-formatted summary | +| ↳ `transcript` | array | Transcript entries with speaker, text, and timestamp | +| ↳ `speaker` | object | Speaker information | +| ↳ `display_name` | string | Speaker display name | +| ↳ `matched_calendar_invitee_email` | string | Matched calendar invitee email | +| ↳ `text` | string | Transcript text | +| ↳ `timestamp` | string | Timestamp \(HH:MM:SS\) | +| ↳ `action_items` | array | Action items extracted from the meeting | +| ↳ `description` | string | Action item description | +| ↳ `user_generated` | boolean | Whether the action item was user-generated | +| ↳ `completed` | boolean | Whether the action item is completed | +| ↳ `recording_timestamp` | string | Timestamp in the recording \(HH:MM:SS\) | +| ↳ `recording_playback_url` | string | Playback URL for the action item moment | +| ↳ `assignee` | object | Assignee details | +| ↳ `name` | string | Assignee name | +| ↳ `email` | string | Assignee email | +| ↳ `team` | string | Assignee team | | ↳ `highlights` | array | Meeting highlights with type, summary, text, and start/end time | | ↳ `type` | string | Highlight type | | ↳ `summary` | string | Highlight summary | | ↳ `text` | string | Highlight text | | ↳ `start_time` | number | Start time in seconds | | ↳ `end_time` | number | End time in seconds | +| ↳ `crm_matches` | object | Matched CRM contacts, companies, and deals | +| ↳ `contacts` | array | Matched CRM contacts | +| ↳ `name` | string | Contact name | +| ↳ `email` | string | Contact email | +| ↳ `record_url` | string | CRM record URL | +| ↳ `companies` | array | Matched CRM companies | +| ↳ `name` | string | Company name | +| ↳ `record_url` | string | CRM record URL | +| ↳ `deals` | array | Matched CRM deals | +| ↳ `name` | string | Deal name | +| ↳ `amount` | number | Deal amount | +| ↳ `record_url` | string | CRM record URL | +| ↳ `error` | string | CRM match error, if any | | `next_cursor` | string | Pagination cursor for next page | ### `fathom_list_meeting_types` diff --git a/apps/sim/tools/fathom/list_meetings.ts b/apps/sim/tools/fathom/list_meetings.ts index 2531a2a8e11..db19e1a457a 100644 --- a/apps/sim/tools/fathom/list_meetings.ts +++ b/apps/sim/tools/fathom/list_meetings.ts @@ -194,6 +194,7 @@ export const listMeetingsTool: ToolConfig Date: Thu, 2 Jul 2026 08:52:05 -0700 Subject: [PATCH 5/6] fix(fathom): mark recording_id optional in list_meetings outputs transformResponse maps recording_id as meeting.recording_id ?? null and the response type already types it number | null; the outputs schema now reflects that nullability. --- apps/sim/tools/fathom/list_meetings.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/sim/tools/fathom/list_meetings.ts b/apps/sim/tools/fathom/list_meetings.ts index db19e1a457a..536739829ef 100644 --- a/apps/sim/tools/fathom/list_meetings.ts +++ b/apps/sim/tools/fathom/list_meetings.ts @@ -196,7 +196,7 @@ export const listMeetingsTool: ToolConfig Date: Thu, 2 Jul 2026 10:48:12 -0700 Subject: [PATCH 6/6] fix(fathom): mark calendar_invitees email optional in list_meetings outputs Fathom's docs mark Invitee.email as nullable; the outputs schema now reflects that instead of declaring it as always-present. --- apps/sim/tools/fathom/list_meetings.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/sim/tools/fathom/list_meetings.ts b/apps/sim/tools/fathom/list_meetings.ts index 536739829ef..c2e06b8f77c 100644 --- a/apps/sim/tools/fathom/list_meetings.ts +++ b/apps/sim/tools/fathom/list_meetings.ts @@ -254,7 +254,7 @@ export const listMeetingsTool: ToolConfig