Skip to main content
Glama

get_transcript

Extract meeting transcripts from recordings, with options to retrieve full content or specific time segments for efficient analysis.

Instructions

Get the transcript for a meeting recording. Returns plaintext lines.

For long meetings, use start_time/end_time to fetch a specific window. First call without time params to get metadata (duration, line count), then request specific chunks as needed.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
recording_idYesThe recording ID (from list_meetings).
start_timeNoStart of time window in HH:MM:SS format (e.g. "00:10:00").
end_timeNoEnd of time window in HH:MM:SS format (e.g. "00:20:00").

Implementation Reference

  • The actual client method that fetches transcript data from the Fathom API.
    async getTranscript(recordingId: number): Promise<Record<string, unknown>> {
      return this._get(`/recordings/${recordingId}/transcript`);
    }
  • src/server.ts:365-388 (registration)
    MCP tool registration for get_transcript, including schema definition and description.
      server.registerTool(
        'get_transcript',
        {
          description: `Get the transcript for a meeting recording. Returns plaintext lines.
    
    For long meetings, use start_time/end_time to fetch a specific window.
    First call without time params to get metadata (duration, line count),
    then request specific chunks as needed.`,
          inputSchema: {
            recording_id: z
              .number()
              .int()
              .positive()
              .describe('The recording ID (from list_meetings).'),
            start_time: z
              .string()
              .optional()
              .describe('Start of time window in HH:MM:SS format (e.g. "00:10:00").'),
            end_time: z
              .string()
              .optional()
              .describe('End of time window in HH:MM:SS format (e.g. "00:20:00").'),
          },
        },
  • The MCP tool handler in src/server.ts, which includes caching logic and calls the fathom client.
    async args => {
      const client = getClient();
      const cached = _transcriptCache.get(args.recording_id);
      const isExpired = cached !== undefined && Date.now() - cached.fetchedAt > CACHE_TTL_MS;
      if (!cached || isExpired) {
        try {
          const result = await client.getTranscript(args.recording_id);
          const transcript = (result.transcript as Record<string, unknown>[]) ?? [];
          _transcriptCache.set(args.recording_id, { items: transcript, fetchedAt: Date.now() });
        } catch (err) {
          const msg = err instanceof Error ? err.message : String(err);
          return { content: [{ type: 'text', text: `Error fetching transcript: ${msg}` }] };
        }
      }
      let items = [..._transcriptCache.get(args.recording_id)!.items];
    
      if (items.length === 0) {
        return { content: [{ type: 'text', text: 'No transcript available.' }] };
      }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/jerichosequitin/fathom-ai-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server