Skip to content

feat(fathom): add list meeting types tool and missing list-meetings filters#5359

Merged
waleedlatif1 merged 6 commits into
stagingfrom
worktree-fathom-validate
Jul 2, 2026
Merged

feat(fathom): add list meeting types tool and missing list-meetings filters#5359
waleedlatif1 merged 6 commits into
stagingfrom
worktree-fathom-validate

Conversation

@waleedlatif1

Copy link
Copy Markdown
Collaborator

Summary

  • Ran /validate-integration on Fathom against the live API docs (developers.fathom.ai)
  • Added a new fathom_list_meeting_types tool — Fathom's GET /meeting_types endpoint had no coverage
  • Added missing list_meetings filters: includeHighlights, meetingType, calendarInviteesDomains, calendarInviteesDomainsType
  • Added missing fields to the meeting response shape: meeting_type, meeting_url, shared_with, highlights
  • Wired the new operation and filters into the Fathom block (subblocks, tools.access, inputs/outputs)
  • Regenerated integration docs

Type of Change

  • New feature / integration completeness fix

Testing

  • bun run type-check clean
  • bunx biome check clean on all touched files
  • Cross-referenced every endpoint, param, and response field against developers.fathom.ai

Checklist

  • Code follows project style guidelines
  • Self-reviewed my changes
  • Tests added/updated and passing
  • No new warnings introduced
  • I confirm that I have read and agree to the terms outlined in the Contributor License Agreement (CLA)

@vercel

vercel Bot commented Jul 2, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
docs Ready Ready Preview, Comment Jul 2, 2026 5:49pm

Request Review

@cursor

cursor Bot commented Jul 2, 2026

Copy link
Copy Markdown

PR Summary

Low Risk
Additive third-party API tooling and documentation; no changes to authentication, persistence, or existing operation behavior beyond optional new query params and fields.

Overview
Brings the Fathom integration in line with the public API by adding a missing operation and filling gaps on list meetings.

Adds fathom_list_meeting_types (GET /meeting_types) as a new tool, block operation, registry entry, and docs section, with paginated meetingTypes output.

List meetings gains optional includeHighlights and filters for meeting type, invitee company domain, and invitee domain type (internal vs external), wired through the tool query string, block advanced subblocks, and types.

Meeting list responses now surface meeting_type, meeting_url, shared_with, and highlights, with richer documented/tool output shapes for nested summary, transcript, action items, and CRM match data. Integration metadata and generated docs are updated accordingly.

Reviewed by Cursor Bugbot for commit 08619ea. Configure here.

@greptile-apps

greptile-apps Bot commented Jul 2, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR completes Fathom integration coverage by adding a new fathom_list_meeting_types tool and filling in missing parameters and response fields for fathom_list_meetings, cross-referenced against the live Fathom API docs.

  • New fathom_list_meeting_types tool: Calls GET /external/v1/meeting_types, maps itemsmeetingTypes[], exposes pagination via next_cursor, and is wired into the block registry, tools access list, and the cursor subblock condition.
  • fathom_list_meetings additions: Four new input filters (includeHighlights, meetingType, calendarInviteesDomains, calendarInviteesDomainsType) and three new response fields (meeting_type, meeting_url, shared_with, highlights) are now declared in params, typed in types.ts, built into the URL, extracted in transformResponse, and described in the outputs schema — resolving the previously flagged gap where highlights and meeting_url were populated in the transform but absent from the output schema.
  • Docs regenerated in fathom.mdx to match the new parameters and expanded response shape.

Confidence Score: 5/5

All changes are scoped to the Fathom integration — no shared infrastructure is touched, and the additions are purely additive.

The new tool file and all parameter additions are internally consistent: each new param is declared in types.ts, appended to the URL only when set, reflected in transformResponse, covered by the outputs schema, exposed in the block subblocks with correct conditions, and documented in the MDX. Both previously flagged gaps (meeting_url and highlights absent from the outputs schema) are now resolved. No renamed or removed fields exist, so backwards compatibility is preserved.

No files require special attention.

Important Files Changed

Filename Overview
apps/sim/tools/fathom/list_meeting_types.ts New tool file — correctly implements the GET /meeting_types endpoint with pagination, error handling, and a full outputs schema.
apps/sim/tools/fathom/list_meetings.ts Adds four new params and three new response fields; previously flagged missing outputs (meeting_url, highlights) are now declared in the schema.
apps/sim/blocks/blocks/fathom.ts New subblocks for the four list_meetings filters are correctly conditioned; calendarInviteesDomainsType no longer carries a forced default; cursor subblock extended to cover the new operation.
apps/sim/tools/fathom/types.ts New params and response fields properly added to FathomListMeetingsParams/Response; new FathomListMeetingTypesParams/Response interfaces look correct.
apps/sim/tools/fathom/index.ts Re-exports the new listMeetingTypesTool cleanly alongside existing exports.
apps/sim/tools/registry.ts fathom_list_meeting_types registered correctly under its canonical ID adjacent to existing Fathom tools.
apps/sim/lib/integrations/integrations.json operationCount updated to 6 and the new List Meeting Types operation documented correctly.
apps/docs/content/docs/en/integrations/fathom.mdx Docs regenerated to cover all new params and the expanded response shape for list_meetings, plus the new fathom_list_meeting_types section.

Sequence Diagram

%%{init: {'theme': 'neutral'}}%%
sequenceDiagram
    participant U as User/Workflow
    participant B as Fathom Block
    participant TLM as fathom_list_meetings
    participant TLMT as fathom_list_meeting_types
    participant API as api.fathom.ai

    U->>B: Select operation

    alt fathom_list_meetings
        B->>TLM: params (includeHighlights, meetingType, calendarInviteesDomains, ...)
        TLM->>API: "GET /external/v1/meetings?include_highlights=true&meeting_type=X"
        API-->>TLM: "{ items: [...], next_cursor }"
        TLM-->>B: "{ meetings[], next_cursor }"
    else fathom_list_meeting_types
        B->>TLMT: params (cursor?)
        TLMT->>API: "GET /external/v1/meeting_types?cursor=X"
        API-->>TLMT: "{ items: [...], next_cursor }"
        TLMT-->>B: "{ meetingTypes[], next_cursor }"
    end

    B-->>U: Output (meetings or meetingTypes)
Loading
%%{init: {'theme': 'base', 'themeVariables': {"darkMode": true, "background": "#0d1117", "primaryColor": "#21262d", "primaryTextColor": "#e6edf3", "primaryBorderColor": "#8b949e", "lineColor": "#8b949e", "textColor": "#e6edf3", "edgeLabelBackground": "#161b22", "actorBkg": "#21262d", "actorBorder": "#8b949e", "actorTextColor": "#e6edf3", "actorLineColor": "#8b949e", "signalColor": "#8b949e", "signalTextColor": "#e6edf3", "noteBkgColor": "#373320", "noteBorderColor": "#d4a72c", "noteTextColor": "#f0e6c0", "labelBoxBkgColor": "#21262d", "labelBoxBorderColor": "#8b949e", "labelTextColor": "#e6edf3", "loopTextColor": "#e6edf3", "activationBkgColor": "#30363d", "activationBorderColor": "#8b949e"}}}%%
sequenceDiagram
    participant U as User/Workflow
    participant B as Fathom Block
    participant TLM as fathom_list_meetings
    participant TLMT as fathom_list_meeting_types
    participant API as api.fathom.ai

    U->>B: Select operation

    alt fathom_list_meetings
        B->>TLM: params (includeHighlights, meetingType, calendarInviteesDomains, ...)
        TLM->>API: "GET /external/v1/meetings?include_highlights=true&meeting_type=X"
        API-->>TLM: "{ items: [...], next_cursor }"
        TLM-->>B: "{ meetings[], next_cursor }"
    else fathom_list_meeting_types
        B->>TLMT: params (cursor?)
        TLMT->>API: "GET /external/v1/meeting_types?cursor=X"
        API-->>TLMT: "{ items: [...], next_cursor }"
        TLMT-->>B: "{ meetingTypes[], next_cursor }"
    end

    B-->>U: Output (meetings or meetingTypes)
Loading

Reviews (8): Last reviewed commit: "fix(fathom): mark calendar_invitees emai..." | Re-trigger Greptile

Comment thread apps/sim/blocks/blocks/fathom.ts
@waleedlatif1

Copy link
Copy Markdown
Collaborator Author

Addressed both findings from the first Greptile review in 5556c22:

  • P1: meeting_url and highlights are now declared in the list_meetings outputs schema (were mapped in transformResponse but unreachable downstream).
  • P2: dropped the forced 'all' default on calendarInviteesDomainsType so it's only sent when explicitly chosen.

@greptile

@waleedlatif1

Copy link
Copy Markdown
Collaborator Author

@cursor review

Comment thread apps/sim/tools/fathom/list_meetings.ts
@waleedlatif1

Copy link
Copy Markdown
Collaborator Author

@greptile

@waleedlatif1

Copy link
Copy Markdown
Collaborator Author

@cursor review

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Bugbot reviewed your changes and found no new issues!

Comment @cursor review or bugbot run to trigger another review on this PR

Reviewed by Cursor Bugbot for commit c360e04. Configure here.

@waleedlatif1

Copy link
Copy Markdown
Collaborator Author

Final validation pass: independently re-verified all 6 tools against developers.fathom.ai (endpoints, params, response mapping), confirmed the diff against origin/staging is 100% additive (zero renamed/removed params, fields, or subblock ids), and completed the list_meetings outputs schema so every field transformResponse already returns (meeting_title, scheduled/recording times, recorded_by, calendar_invitees, default_summary, transcript, action_items, crm_matches) is now addressable from downstream blocks, not just the fields added in this PR.

@greptile

@waleedlatif1

Copy link
Copy Markdown
Collaborator Author

@cursor review

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Bugbot reviewed your changes and found no new issues!

Comment @cursor review or bugbot run to trigger another review on this PR

Reviewed by Cursor Bugbot for commit 97d87ec. Configure here.

@waleedlatif1

Copy link
Copy Markdown
Collaborator Author

Ran a final comprehensive validate-integration pass using 3 independent parallel subagents (API-doc alignment, backwards-compatibility, internal-conventions):

  • API alignment (6/6 tools PASS): every endpoint, param, and response mapping re-verified against developers.fathom.ai from scratch.
  • Backwards compat (PASS): full diff against origin/staging confirmed 100% additive — zero renamed/removed tool IDs, params, subblock IDs, or output fields.
  • Conventions (9/9 checks PASS): block↔tool wiring, required/visibility/advanced-mode, registry ordering, docs freshness, BlockMeta all correct.

One cosmetic nit surfaced (recording_id typed nullable in transformResponse/types but missing optional: true in the outputs schema) — fixed in d4f30ea.

@greptile

@waleedlatif1

Copy link
Copy Markdown
Collaborator Author

@cursor review

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Bugbot reviewed your changes and found no new issues!

Comment @cursor review or bugbot run to trigger another review on this PR

Reviewed by Cursor Bugbot for commit d4f30ea. Configure here.

@waleedlatif1 waleedlatif1 force-pushed the worktree-fathom-validate branch from d4f30ea to 972a1bc Compare July 2, 2026 16:58
@waleedlatif1

Copy link
Copy Markdown
Collaborator Author

Rebased onto current origin/staging (was previously branched from origin/main via the default worktree base-ref, which pulled in ~113 unrelated main-only commits into the diff view locally — the PR's actual GitHub diff was always correct, this was purely a local branch-hygiene cleanup). Now exactly 5 commits on top of staging tip. Re-triggering review on the clean history.

@greptile

@waleedlatif1

Copy link
Copy Markdown
Collaborator Author

@cursor review

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Bugbot reviewed your changes and found no new issues!

Comment @cursor review or bugbot run to trigger another review on this PR

Reviewed by Cursor Bugbot for commit 972a1bc. Configure here.

…ilters

- 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
…ding 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)
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.
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.
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.
@waleedlatif1 waleedlatif1 force-pushed the worktree-fathom-validate branch from 972a1bc to d94d910 Compare July 2, 2026 17:44
…utputs

Fathom's docs mark Invitee.email as nullable; the outputs schema now
reflects that instead of declaring it as always-present.
@waleedlatif1

Copy link
Copy Markdown
Collaborator Author

Fixed the failing CI check: the branch was rebased onto a staging snapshot that predated an unrelated Algolia PR (#5356), so the subblock-ID-stability check compared our HEAD against the current staging tip and saw Algolia's IDs as 'removed' — purely an artifact of staleness, we never touched algolia.ts. Re-rebased onto the latest origin/staging (commit 08619ea) and verified locally:

  • bun run apps/sim/scripts/check-block-registry.ts origin/staging → all 3 checks pass
  • bun run scripts/check-migrations-safety.ts origin/staging → pass
  • bun run check:api-validation → pass
  • lint + typecheck clean

Also ran a final comprehensive validate-integration pass with 3 independent parallel subagents against the rebased branch: API-doc alignment (6/6 tools PASS, re-verified against live developers.fathom.ai docs), backwards-compat (PASS, diff scoped to only fathom files, zero renamed/removed fields), internal conventions (9/9 checks PASS). One more cosmetic nit surfaced and fixed — calendar_invitees[].email marked optional to match the docs' nullable Invitee.email.

@greptile

@waleedlatif1

Copy link
Copy Markdown
Collaborator Author

@cursor review

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Bugbot reviewed your changes and found no new issues!

Comment @cursor review or bugbot run to trigger another review on this PR

Reviewed by Cursor Bugbot for commit 08619ea. Configure here.

@waleedlatif1 waleedlatif1 enabled auto-merge (squash) July 2, 2026 18:04
@waleedlatif1 waleedlatif1 disabled auto-merge July 2, 2026 18:04
@waleedlatif1 waleedlatif1 merged commit 9977407 into staging Jul 2, 2026
17 of 18 checks passed
@waleedlatif1 waleedlatif1 deleted the worktree-fathom-validate branch July 2, 2026 18:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant