Skip to content

Connect Fathom to ChatGPT: Sync Transcripts and Action Items

A complete engineering guide to connecting Fathom to ChatGPT using a managed MCP server. Learn how to automate meeting transcript analysis and webhook setup.

Uday Gajavalli Uday Gajavalli · · 10 min read
Connect Fathom to ChatGPT: Sync Transcripts and Action Items

You want to connect Fathom to ChatGPT so your AI agents can read meeting transcripts, analyze historical conversations, and dynamically provision webhooks for revenue operations. If your team uses Claude, check out our guide on connecting Fathom to Claude or explore our broader architectural overview on connecting Fathom to AI Agents. Here is exactly how to do it using a Model Context Protocol (MCP) server.

Sales and support teams generate thousands of hours of recorded intelligence inside Fathom every month. The mandate from executive leadership is clear: stop leaving that data siloed. You need to give a Large Language Model (LLM) read and write access to your Fathom instance to automate deal debriefs, aggregate feature requests from transcripts, and sync actionable intelligence into your CRM. Giving ChatGPT raw access to Fathom is an engineering challenge.

You either spend weeks building, hosting, and maintaining a custom MCP server, or you use a managed infrastructure layer that handles the boilerplate for you. This guide breaks down exactly how to use Truto to generate a secure, managed MCP server for Fathom, connect it natively to ChatGPT, and execute complex conversation intelligence workflows using natural language.

The Engineering Reality of the Fathom API

A custom MCP server is a self-hosted integration layer that translates an LLM's tool calls into REST API requests. While Anthropic's open standard provides a predictable way for models to discover tools, implementing it against vendor APIs like Fathom introduces unique constraints.

If you decide to build a custom MCP server for Fathom, you own the entire API lifecycle. You are responsible for handling OAuth 2.0 token refreshes, pagination cursors, and schema maintenance. Beyond the boilerplate, integrating Fathom requires navigating specific architectural challenges that break standard CRUD assumptions.

Transcript Context Bloat

Transcripts are not simple text blocks. The Fathom API returns transcripts as massive JSON arrays of spoken text blocks, complete with timestamp intervals and matched calendar invitee emails for speaker identification. Fetching a full hour-long meeting transcript can result in a payload large enough to consume a massive chunk of an LLM's context window. Your MCP server must provide precise, targeted query schemas so the LLM knows to filter or request metadata before blindly dumping a 10,000-word transcript array into its context.

Nested CRM Match Data

Fathom attempts to match meeting attendees with CRM records. This data is returned as nested arrays (crm_matches) within the meeting payload. To make this actionable for an AI agent, your tool definitions must explicitly document the schema of these nested objects. If the LLM does not understand how to traverse crm_matches, it cannot correlate spoken insights with specific Salesforce accounts or HubSpot deals.

Webhook Provisioning Logic

Creating a webhook in Fathom requires strict boolean flags. The create method requires specifying a destination_url, a triggered_for condition, and at least one payload inclusion flag (include_transcript, include_crm_matches, include_summary, or include_action_items) set to true. If your MCP server's JSON Schema does not explicitly enforce these boolean requirements, the LLM will hallucinate invalid payloads, resulting in HTTP 400 Bad Request errors.

Rate Limits and 429 Errors

When orchestrating automated workflows, AI agents can easily hit API rate limits by looping through historical meetings. Factual note on rate limits: Truto does not retry, throttle, or apply backoff on rate limit errors. When the upstream Fathom API returns an HTTP 429 Too Many Requests, Truto passes that error directly to the caller.

Truto normalizes the upstream rate limit info into standardized headers (ratelimit-limit, ratelimit-remaining, ratelimit-reset) per the IETF specification. The caller - your agent framework or the LLM itself - is entirely responsible for implementing retry and exponential backoff logic. Do not expect the integration layer to absorb rate limit rejections.

How to Create the Fathom MCP Server

Instead of building a translation layer from scratch, Truto dynamically generates an MCP server for any connected integration. Tool generation is documentation-driven. Truto reads the Fathom integration's resource definitions, extracts the JSON schemas for query parameters and request bodies, and converts them into an array of MCP tools exposed over a JSON-RPC 2.0 endpoint.

Every Fathom MCP server is scoped to a single integrated account. The server URL contains a cryptographic token that authenticates the request and routes it to the correct Fathom tenant.

You can generate this server using the Truto UI or programmatically via the API.

Method 1: Via the Truto UI

If you are setting up an internal tool for your own team, the fastest approach is the dashboard.

  1. Log into your Truto account and navigate to the integrated account page for your Fathom connection.
  2. Click the MCP Servers tab.
  3. Click Create MCP Server.
  4. Configure the server. You can name it, restrict it to specific HTTP methods (e.g., read-only), filter by tool tags, and set an expiration date.
  5. Click Create. Copy the generated MCP server URL (it will look like https://api.truto.one/mcp/a1b2c3d4e5f6...). Keep this URL secure; it is a bearer token that grants execution access to your Fathom data.

Method 2: Via the API

If you are building an AI agent platform and need to provision MCP servers dynamically for your users, you should use the Truto API. Make a POST request to /integrated-account/:id/mcp.

curl -X POST https://api.truto.one/integrated-account/<fathom_account_id>/mcp \
  -H "Authorization: Bearer <TRUTO_API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Fathom Revenue Ops AI",
    "config": {
      "methods": ["read", "write"]
    }
  }'

The API provisions the secure token, registers it to the underlying data store, and immediately returns the live URL.

{
  "id": "mcp_token_xyz",
  "name": "Fathom Revenue Ops AI",
  "config": { "methods": ["read", "write"] },
  "expires_at": null,
  "url": "https://api.truto.one/mcp/a1b2c3d4e5f6..."
}

Connecting the MCP Server to ChatGPT

Once you have the Truto MCP URL, you must register it with ChatGPT. The MCP server operates as a remote custom connector. You can do this via the ChatGPT application UI or through a manual SSE configuration file if you are running a custom agent framework alongside ChatGPT APIs.

Method A: Via the ChatGPT UI

  1. Open ChatGPT and navigate to Settings.
  2. Click on Apps and then select Advanced settings.
  3. Enable Developer mode (MCP support is gated behind this flag).
  4. Under the MCP servers / Custom connectors section, click to add a new server.
  5. Enter a descriptive name (e.g., "Fathom Production").
  6. Paste the Truto MCP URL into the Server URL field.
  7. Save the configuration.

ChatGPT will immediately execute an initialize JSON-RPC handshake with the URL, fetch the Fathom tool definitions, and make them available in your chat sessions.

Method B: Via Manual Config File

If you are operating a custom deployment, LangChain architecture, or connecting via a terminal-based agent, you map the server using a JSON configuration file. Truto's remote MCP servers communicate over Server-Sent Events (SSE). You handle this by utilizing the @modelcontextprotocol/server-sse proxy package.

{
  "mcpServers": {
    "fathom-truto": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-sse",
        "--url",
        "https://api.truto.one/mcp/a1b2c3d4e5f6..."
      ]
    }
  }
}

This configuration instructs your local MCP client to start a lightweight process that bridges standard input/output to the remote HTTP SSE streams provided by Truto.

Core Fathom Toolset for AI Agents

When ChatGPT connects to the Fathom MCP server, it pulls down a dynamic list of tools. Every tool corresponds to a specific API operation on the Fathom integration. The schemas enforce required fields and automatically instruct the LLM on how to pass pagination cursors.

Here are the critical tools your AI agent uses to interact with Fathom.

List All Fathom Meetings

Tool name: list_all_fathom_meetings

This is the discovery mechanism. The LLM uses this tool to scan recent meetings, locate specific scheduled times, or find recordings that contain particular CRM matches. The response includes recording_start_time, meeting_type, and the high-level action_items array. By default, Truto injects limit and next_cursor schemas into the tool, giving the LLM explicit instructions on how to page through historical data.

"Fetch the last 10 Fathom meetings on my account. Check the crm_matches array for each and identify any meetings associated with the 'Acme Corp' Salesforce account. Return their recording IDs."

Get Recording Transcript

Tool name: list_all_fathom_recording_transcript

This tool pulls the raw, timestamped conversation. It requires a recording_id. The response is an array of transcript items. Each item contains speaker details (display_name, matched_calendar_invitee_email), the spoken text, and the timestamp. The LLM uses this to perform sentiment analysis, deep-dive feature request extraction, or find exact quotes.

"Using the recording ID from the Acme Corp meeting, pull the full transcript. Read through the speaker blocks and extract every feature request mentioned by the client. Map those requests to the specific timestamps."

Get Recording Summary

Tool name: list_all_fathom_recording_summary

If the raw transcript is too dense, the LLM uses this tool to fetch Fathom's pre-computed meeting summary. The tool requires an id and returns a template_name alongside a markdown_formatted string containing the summary structure.

"Retrieve the markdown summary for the latest team sync recording. Summarize the next steps and list which team members are assigned to each task based on the markdown output."

Create a Fathom Webhook

Tool name: create_a_fathom_webhook

Agents use this tool to set up event-driven architectures. It requires a destination_url and a triggered_for parameter. Crucially, the LLM must set at least one boolean flag to true (include_transcript, include_crm_matches, include_summary, or include_action_items) to determine the payload shape. The response returns the webhook id and secret.

"Create a new Fathom webhook pointing to 'https://api.mycompany.com/fathom-ingest'. Configure it to trigger on all new meetings. Ensure that both include_summary and include_action_items are set to true so our system receives the markdown reports."

List All Team Members

Tool name: list_all_fathom_team_members

This tool maps the organizational hierarchy. It returns an array of users containing their name, email, and created_at timestamps. The agent uses this to cross-reference internal meeting attendees or filter recordings by specific sales reps.

"List all Fathom team members. Find the user with the email 'sarah@mycompany.com' and tell me when her account was provisioned."

This is just a subset of the available operations. For the complete inventory of Fathom operations and exact JSON schema requirements, check out the Fathom integration page.

Workflows in Action

Exposing individual tools is step one. The true value of an MCP server is enabling complex, multi-step workflows driven by user intent.

Scenario 1: The Sales Manager Deal Review

A Sales Manager wants to understand why a specific enterprise deal is stalling without watching three hours of Zoom recordings. They open ChatGPT and ask for a debrief.

"Find the most recent meeting associated with the 'Initech' account. Pull the full transcript and summarize the customer's specific objections regarding pricing and security. Give me exact quotes and their timestamps."

Execution Steps:

  1. ChatGPT calls list_all_fathom_meetings, passing a limit to fetch recent calls. It filters the JSON response, scanning the crm_matches array to find the recording linked to Initech.
  2. Once the target recording_id is identified, the agent calls list_all_fathom_recording_transcript to retrieve the timestamped conversational data.
  3. The LLM processes the massive JSON array, searching for keywords related to pricing and security. It correlates the customer's display_name with the text and formulates a response containing exact quotes and timestamps.

Scenario 2: Revenue Operations Automation

A RevOps engineer needs to pipe all new meeting action items into a custom Slack alerting pipeline, but wants an AI agent to handle the configuration.

"I need to route Fathom action items to our new Slack endpoint: https://hooks.slack.com/services/T123/B456. Set up a Fathom webhook to handle this for all new recordings. Make sure the payload only includes action items to save bandwidth."

Execution Steps:

  1. ChatGPT interprets the request and determines it needs the create_a_fathom_webhook tool.
  2. It maps the provided Slack URL to the destination_url schema property. It sets triggered_for to standard meeting creation events.
  3. It sets include_action_items to true, and explicitly sets include_transcript, include_crm_matches, and include_summary to false based on the user's instructions to save bandwidth.
  4. It executes the tool call and returns the webhook id and signing secret to the user to complete their internal routing setup.

Security and Access Control

Handing an LLM unrestricted access to your organization's meeting intelligence introduces significant risk. Truto's MCP architecture enforces strict access control at the token level, meaning security is handled at the network layer before the LLM even sees the tools.

  • Method Filtering: You can restrict the MCP server configuration to read-only operations. By setting methods: ["read"], the server will outright refuse to generate or expose tools like create_a_fathom_webhook or delete_a_fathom_webhook_by_id, mitigating the risk of accidental mutations.
  • Tag Filtering: Tool tags allow you to restrict scope by business context. You can configure the MCP token to only expose tools tagged with "meetings" or "directory", ensuring the LLM cannot access unrelated Fathom settings or billing endpoints.
  • require_api_token_auth: For sensitive deployments, possessing the MCP server URL is not enough. Enabling this flag adds a secondary authorization layer. The calling agent must provide a valid Truto API token in the Authorization header to successfully complete the JSON-RPC execution.
  • expires_at: For temporary debugging or short-lived agent tasks, you can attach an ISO datetime to the expires_at property. Truto's background infrastructure will automatically destroy the token and invalidate the Fathom execution environment when the TTL is reached, leaving no lingering attack surface.

Connecting Fathom to ChatGPT transforms your organization's raw meeting data into a highly actionable API surface. By managing rate limits responsibly, utilizing granular tool constraints, and enforcing secure execution environments, you can operationalize conversation intelligence without burying your engineering team in custom integration code.

FAQ

How does the Truto MCP server handle Fathom API rate limits?
Truto does not absorb, throttle, or retry rate limits. If Fathom returns an HTTP 429 error, Truto passes it directly to the caller and normalizes the rate limit info into standard IETF headers (`ratelimit-limit`, `ratelimit-remaining`, `ratelimit-reset`). The caller or LLM must implement its own backoff logic.
Can I prevent ChatGPT from creating or deleting Fathom webhooks?
Yes. When creating the MCP server in Truto, you can pass a method filter (e.g., `methods: ["read"]`). This ensures the server only exposes non-destructive operations like listing meetings and fetching transcripts, physically blocking write operations at the infrastructure layer.
How do I secure the MCP server URL?
The MCP server URL acts as a bearer token. For increased security, you can enable the `require_api_token_auth` flag during server creation. This requires the calling agent to provide a valid Truto API token in addition to the URL, adding a strict secondary layer of authentication.

More from our Blog