Skip to main content
Glama

create_webhook

Set up automated webhook notifications for Fathom meeting recordings. Configure which recordings trigger events and customize payload content like transcripts, summaries, and action items.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
destination_urlYesURL to receive webhook events
include_transcriptNoInclude transcript in webhook payload
include_summaryNoInclude summary in webhook payload
include_action_itemsNoInclude action items in webhook payload
include_crm_matchesNoInclude CRM matches in webhook payload
triggered_forNoWhich recordings trigger the webhook

Implementation Reference

  • MCP tool handler for 'create_webhook' that invokes FathomClient.createWebhook and formats a markdown response with webhook details including ID, URL, and secret.
    async ({ destination_url, include_transcript, include_summary, include_action_items, include_crm_matches, triggered_for }) => { console.error(`Creating webhook for ${destination_url}...`); const webhook = await fathom.createWebhook({ destination_url, include_transcript, include_summary, include_action_items, include_crm_matches, triggered_for, }); const markdown = `# Webhook Created Successfully\n\n| Field | Value |\n|-------|-------|\n| **ID** | ${webhook.id} |\n| **URL** | ${webhook.url} |\n| **Secret** | \`${webhook.secret}\` |\n| **Include Transcript** | ${webhook.include_transcript} |\n| **Include Summary** | ${webhook.include_summary} |\n| **Include Action Items** | ${webhook.include_action_items} |\n| **Include CRM Matches** | ${webhook.include_crm_matches} |\n| **Triggered For** | ${webhook.triggered_for.join(', ')} |\n\n**Important:** Save the webhook secret securely - you'll need it to verify incoming webhooks.`; console.error(`Webhook created: ${webhook.id}`); return { content: [{ type: 'text', text: markdown }], }; }
  • Zod input schema defining parameters for the 'create_webhook' MCP tool.
    { destination_url: z.string().describe('URL to receive webhook events'), include_transcript: z.boolean().optional().describe('Include transcript in webhook payload'), include_summary: z.boolean().optional().describe('Include summary in webhook payload'), include_action_items: z.boolean().optional().describe('Include action items in webhook payload'), include_crm_matches: z.boolean().optional().describe('Include CRM matches in webhook payload'), triggered_for: z.array(z.enum(['my_recordings', 'shared_external_recordings', 'my_shared_with_team_recordings', 'shared_team_recordings'])).optional().describe('Which recordings trigger the webhook'), },
  • src/index.ts:388-417 (registration)
    Registration of the 'create_webhook' tool using McpServer.tool() with name, input schema, and handler function.
    server.tool( 'create_webhook', { destination_url: z.string().describe('URL to receive webhook events'), include_transcript: z.boolean().optional().describe('Include transcript in webhook payload'), include_summary: z.boolean().optional().describe('Include summary in webhook payload'), include_action_items: z.boolean().optional().describe('Include action items in webhook payload'), include_crm_matches: z.boolean().optional().describe('Include CRM matches in webhook payload'), triggered_for: z.array(z.enum(['my_recordings', 'shared_external_recordings', 'my_shared_with_team_recordings', 'shared_team_recordings'])).optional().describe('Which recordings trigger the webhook'), }, async ({ destination_url, include_transcript, include_summary, include_action_items, include_crm_matches, triggered_for }) => { console.error(`Creating webhook for ${destination_url}...`); const webhook = await fathom.createWebhook({ destination_url, include_transcript, include_summary, include_action_items, include_crm_matches, triggered_for, }); const markdown = `# Webhook Created Successfully\n\n| Field | Value |\n|-------|-------|\n| **ID** | ${webhook.id} |\n| **URL** | ${webhook.url} |\n| **Secret** | \`${webhook.secret}\` |\n| **Include Transcript** | ${webhook.include_transcript} |\n| **Include Summary** | ${webhook.include_summary} |\n| **Include Action Items** | ${webhook.include_action_items} |\n| **Include CRM Matches** | ${webhook.include_crm_matches} |\n| **Triggered For** | ${webhook.triggered_for.join(', ')} |\n\n**Important:** Save the webhook secret securely - you'll need it to verify incoming webhooks.`; console.error(`Webhook created: ${webhook.id}`); return { content: [{ type: 'text', text: markdown }], }; } );
  • FathomClient helper method that sends POST request to Fathom API to create a webhook.
    async createWebhook(params: CreateWebhookParams): Promise<Webhook> { return this.request<Webhook>('/webhooks', { method: 'POST', body: JSON.stringify(params), }); }
  • TypeScript interface defining parameters for FathomClient.createWebhook method.
    export interface CreateWebhookParams { destination_url: string; include_transcript?: boolean; include_summary?: boolean; include_action_items?: boolean; include_crm_matches?: boolean; triggered_for?: ('my_recordings' | 'shared_external_recordings' | 'my_shared_with_team_recordings' | 'shared_team_recordings')[]; }

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/matthewbergvinson/fathom-mcp'

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