The Fathom MCP connector routes your AI agent's tool calls to Fathom's own MCP server through Scalekit. Each user signs in to Fathom once, and Scalekit stores and refreshes their tokens, so your agent never handles credentials. It comes with 12 tools.
- Tools
- 12
- What they doRead · write · destructive
- 11 · 1 · 011 read1 write0 destructive
- Users sign in with
- OAuth
- OAuth app
- Scalekit's or your own
Setup
Install the SDK
Terminal window npm install @scalekit-sdk/node dotenvTerminal window pip install scalekit-sdk-python python-dotenvSet your credentials
Add your Scalekit credentials to your
.envfile. Find values in app.scalekit.com > Developers > API Credentials..env SCALEKIT_ENVIRONMENT_URL=<your-environment-url>SCALEKIT_CLIENT_ID=<your-client-id>SCALEKIT_CLIENT_SECRET=<your-client-secret>Create the Fathom MCP connection
In AgentKit > Connections, create a Fathom MCP connection. The name you give it is the
connection_nameyour code passes. See Configure connections.Scalekit credentials are available for Fathom, so you don't need to register an OAuth app.
Authorize a user and make your first call
quickstart.mts import { ScalekitClient } from '@scalekit-sdk/node'import 'dotenv/config'import { createInterface } from 'node:readline/promises'const scalekit = new ScalekitClient(process.env.SCALEKIT_ENVIRONMENT_URL,process.env.SCALEKIT_CLIENT_ID,process.env.SCALEKIT_CLIENT_SECRET,)const actions = scalekit.actionsconst connector = 'fathommcp'const identifier = 'user_123'// Generate an authorization link for the userconst { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })console.log('Authorize Fathom MCP:', link)const rl = createInterface({ input: process.stdin, output: process.stdout })await rl.question('Press Enter after authorizing...')rl.close()// Make your first callconst result = await actions.executeTool({connector,identifier,toolName: 'fathommcp_get_identity',toolInput: {},})console.log(result)Terminal window npx tsx quickstart.mtsquickstart.py import osfrom scalekit import ScalekitClientfrom dotenv import load_dotenvload_dotenv()scalekit_client = ScalekitClient(env_url=os.getenv("SCALEKIT_ENVIRONMENT_URL"),client_id=os.getenv("SCALEKIT_CLIENT_ID"),client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),)actions = scalekit_client.actionsconnection_name = "fathommcp"identifier = "user_123"# Generate an authorization link for the userlink_response = actions.get_authorization_link(connection_name=connection_name,identifier=identifier,)print("Authorize Fathom MCP:", link_response.link)input("Press Enter after authorizing...")# Make your first callresult = actions.execute_tool(tool_input={},tool_name="fathommcp_get_identity",connection_name=connection_name,identifier=identifier,)print(result)Terminal window python quickstart.pyEach user signs in once. See Authorize a user for the full flow and statuses.
Tools
Pass the exact name toexecute_toolfathommcp_find_personFind a person by name across meeting speakers, then return contact info and compact summaries for matched meetings.Read-onlyFathom Find Person
Find a person by name across meeting speakers, then return contact info and compact summaries for matched meetings. Searches the speaker index directly. Use recorded_by = user email for own recordings, "anyone" for org-wide lookups.
Inputs
namestringrequired- The person's name to search for.
recorded_bystringrequired- Filter by recorder. Use the authenticated user's email for own recordings or 'anyone' for org-wide search.
created_afterstring- ISO 8601 date string. Only search meetings created after this date.
fathommcp_find_relevant_meetingsTargeted ranked retrieval for specific facts, decisions, quotes, named projects, companies, products, people-plus-topic questions, or locating the best matching meetings.Read-onlyFind Relevant Meetings
Targeted ranked retrieval for specific facts, decisions, quotes, named projects, companies, products, people-plus-topic questions, or locating the best matching meetings. Searches meeting titles, participant names, and full transcripts, returning the strongest matches first. Do not use for broad themes, frequencies, trends, or synthesis across many meetings; use scan_meeting_summaries for those. Use distinctive terms people would actually have said. Complementary parallel calls are allowed for different targeted phrasings. Rate every query word from 0 to 10 in word_weights. Use title_only=true for a named recurring meeting series. recorded_by is required; prefer 'anyone' when scope is ambiguous. Pass user_question as the user's complete original request verbatim; it is used to write the per-meeting relevant extracts. This starts the search and returns a search_id to pass to get_relevant_meetings_result.
Inputs
recorded_bystringrequired- Recorder email, or 'anyone' for all accessible meetings.
user_questionstringrequired- The user's complete original request, verbatim.
date_fromstring- Earliest meeting date, YYYY-MM-DD.
date_tostring- Latest meeting date, YYYY-MM-DD.
limitinteger- Maximum ranked candidates to consider; default 20. At most 20 meetings are enriched and returned.default
20 querystring- Distinctive keyword terms for targeted ranked retrieval.
title_onlyboolean- Search meeting titles only, newest first, for named series.default
false word_weightsobject- Every query word rated 0-10 for distinctiveness.
fathommcp_get_identityReturns the authenticated user's name and email address.Read-onlyFathom Get Identity
Returns the authenticated user's name and email address. Call this once per session to determine who the authenticated user is. The email is needed only for queries explicitly scoped to the user's own recordings (recorded_by filter), not for every tool call.
Inputs
This tool takes no inputs.
fathommcp_get_meeting_summaryReturns the AI summary of a specific Fathom meeting.Read-onlyFathom Get Meeting Summary
Returns the AI summary of a specific Fathom meeting. Required: recording_id (from list_meetings). When presenting, cite with a working link using the meeting url field.
Inputs
recording_idintegerrequired- The recording ID from list_meetings.
fathommcp_get_meeting_transcriptReturns the full transcript of a specific Fathom meeting.Read-onlyFathom Get Meeting Transcript
Returns the full transcript of a specific Fathom meeting. Required: recording_id (from list_meetings). Pass url to get timestamped deep links. Fetch at most 3 transcripts per query — they are large.
Inputs
recording_idintegerrequired- The recording ID from list_meetings.
urlstring- The meeting URL from list_meetings for timestamped deep links.
fathommcp_get_recording_by_call_idResolve a Fathom call ID to a recording_id plus title, date, and url.Read-onlyFathom Get Recording By Call Id
Resolve a Fathom call ID to a recording_id plus title, date, and url. Use when the user pastes or types a numeric call ID. Pass the returned recording_id to get_meeting_summary, get_meeting_transcript, etc.
Inputs
call_idintegerrequired- The numeric Fathom call ID.
fathommcp_get_recording_by_urlResolve a Fathom URL to a recording_id plus title, date, and url.Read-onlyFathom Get Recording By Url
Resolve a Fathom URL to a recording_id plus title, date, and url. Accepts direct call URLs (/calls/:id) and share links. Use when the user pastes any Fathom link.
Inputs
urlstringrequired- A Fathom call URL or share link.
fathommcp_get_relevant_meetings_resultReturns the find_relevant_meetings result for a search_id.Read-onlyGet Relevant Meetings Result
Returns the find_relevant_meetings result for a search_id. While the search is still running it says so; searches usually finish in 15-30 seconds and can take up to 3 minutes, so keep calling this tool with the same search_id until the meetings are returned. Do not answer from other tools while it runs.
Inputs
search_idstringrequired- The search_id returned by find_relevant_meetings.
fathommcp_list_meetingsList Fathom meetings with filters.Read-onlyFathom List Meetings
List Fathom meetings with filters. Returns recording_id, title, url, recorded_by, calendar_invitees. For team queries call list_teams first. Does NOT scan meeting content — for finding meetings with a specific person use find_person, for topic searches use search_meetings.
Inputs
created_afterstring- ISO 8601 date string. Only return meetings created after this date.
created_beforestring- ISO 8601 date string. Only return meetings created before this date.
cursorstring- Pagination cursor from a previous response.
include_action_itemsboolean- Include action items in results.
include_summaryboolean- Include AI summary in results.
max_pagesinteger- Maximum number of pages to fetch.
recorded_byarray- Filter by recorder email addresses.
teamsarray- Filter by team names (use list_teams to get valid names).
fathommcp_list_teamsList all Fathom teams the current user belongs to.Read-onlyFathom List Teams
List all Fathom teams the current user belongs to. Returns team names. Use the returned names for the teams filter in list_meetings. Call list_teams first if you need team names — do not guess them.
Inputs
This tool takes no inputs.
fathommcp_search_meetingsSearch meeting summaries and titles by topic or keyword (AND logic).Read-onlyFathom Search Meetings
Search meeting summaries and titles by topic or keyword (AND logic). Use for finding specific topics, discussions, ideas, or decisions. Use recorded_by = user email for own recordings, "anyone" for org-wide searches.
Inputs
querystringrequired- Search query. Multiple words use AND logic.
recorded_bystringrequired- Filter by recorder. Use the authenticated user's email for own recordings or 'anyone' for org-wide search.
created_afterstring- ISO 8601 date string. Only search meetings created after this date.
max_pagesinteger- Maximum number of pages to fetch.
fathommcp_scan_meeting_summariesBroad chronological scan for themes, patterns, frequency, change over time, comparisons, or synthesis across many meetings.WriteScan Meeting Summaries
Broad chronological scan for themes, patterns, frequency, change over time, comparisons, or synthesis across many meetings. Scans about 25 meetings per page, newest first, and matches titles plus summaries using AND logic: every query word must appear. Use a few broad keywords and raise max_pages for broad or historical scopes. Retry with fewer words or synonyms if results are too narrow. Do not use for a precise fact or locating the best single meeting; use find_relevant_meetings for those. recorded_by is required; prefer 'anyone' when scope is ambiguous.
Inputs
querystringrequired- One or more keywords to search for. All words must appear in the meeting title or summary (AND logic). Example: "voiceprint script" finds meetings mentioning both "voiceprint" and "script".
recorded_bystringrequired- Email of the person whose recordings to search, or "anyone" to search across all accessible meetings. Use the current user's email only when the user explicitly asks for their own recordings. Use "anyone" for general topic searches and org-wide queries.
created_afterstring- ISO datetime. Only scan meetings after this date.
max_pagesinteger- Pages to scan (~25/page). Default 10 = ~250 meetings.
No tools match.