Fellow.ai MCP logo

Integrate Fellow.ai MCP with your AI CRM

Fellow.ai MCP lets agents access authorized meeting notes, transcripts, calendar events, channels, action items, and agenda workflows.

Explore Triggers and Actions

Apply agenda template

Put a saved agenda template's content into one meeting's agenda. This replaces that agenda's current contents and affects only that one note — it does not change the template, and it does not change what future meetings in the series look like (use set_default_agenda_template for that). Identify the agenda by note_id or meeting_id, and the template by template_id from search_agenda_templates.

ActionTry it

Create agenda template

Create a new saved agenda template from Fellow Markdown. Agenda templates are the named templates in the Fellow template library that a user picks from when starting a meeting note; this does not create an AI note/recap template, and it does not change any existing agenda. Creates a personal template unless the user explicitly asks for a workspace-wide one. Read fellow://docs/fellow-markdown-syntax before composing the markdown content. How to write a good agenda template. A template is the reusable skeleton of a meeting, not a filled-in agenda. Anything that is only true of one occurrence of the meeting belongs in that meeting's agenda instead, so keep it out of the template. - Sections are headings, and the heading carries the guidance. Give the section a short name (one to three words) and put the question it answers on the same heading block after `<br>`, for example `# Blockers<br>What is in the way right now?`. Most sections in Fellow's built-in templates carry that second line and about half phrase it as a question; it is what tells whoever runs the meeting what to put there. - Leave the placeholders empty. Under each section put ONE empty talking point (`- ( )`) and nothing else, so there is a spot to type into. Do not pre-write talking points about a particular project, person, week, or number. - Do not write out action items. When a meeting always ends with next steps, the convention is a closing `# Action Items` section holding one empty `- [ ]`. The tasks themselves get captured live in the agenda while the meeting happens. - No assignees, due dates, mentions, or calendar dates anywhere in a template. The same template is reused every time the meeting runs, so nothing in it can point at one person or one occurrence. - Keep it short. Four to six sections is normal and a finished template runs about a dozen blocks. A template that reads like a completed agenda has too much in it. - The one exception is a standing question list: questions asked word for word every time the template is used, such as an onboarding interview or a recurring checklist. Those can be written out as talking points, because the wording does not change between occurrences. A typical template looks like this in full: ``` # Wins<br>What went well since we last met? - ( ) # Blockers<br>What is in the way right now? - ( ) # Action Items<br>What came out of this meeting? - [ ] ```

ActionTry it

Delete agenda template

Permanently delete a saved agenda template. This cannot be undone: the template is removed from the library, and every series that used it as their default template is left with none, so new notes there start blank until another template is set. Confirm with the user before calling this, and say how many series will be affected if you know. Agendas the template was already applied to keep their content. Only the template's own owner (or a workspace admin, for a workspace template) can delete it, and Fellow's built-in templates cannot be deleted. Takes a template_id from search_agenda_templates, never a note or meeting: deleting 'the template this meeting uses' would remove a template other series may also point at.

ActionTry it

Edit agenda

Apply one targeted edit to an existing Fellow agenda using its markdown representation, without rewriting the whole agenda. Modes: - append: Add content at the end of the agenda. - prepend: Add content at the beginning of the agenda. Append and prepend add whole blocks: the content starts its own block, so do not add a leading or trailing newline to separate it from the neighbouring block. A leading or trailing blank line renders as an empty paragraph, so include one only when you deliberately want an empty paragraph there. - replace_lines: Replace lines start_line..end_line (inclusive) from the base_version returned by read_agenda with content. Content is split into lines: a final newline ends the last line rather than adding a blank one, and empty content ("") means zero lines, deleting the selected lines outright. Write only the replacement text with no leading blank lines: a leading blank line renders as an empty paragraph in the agenda, so include one only when you deliberately want an empty paragraph there. When deleting a block that has a blank line between it and its neighbor, include one of those blank lines in the range so the agenda is not left with a doubled blank gap, which renders as an empty paragraph. - find_replace: Replace the sole occurrence of `find` with content. Use find_replace when exact unique text anchors the change. Use replace_lines for positional or structural edits and pass the base_version from read_agenda. Call read_agenda first, then count the 1-indexed lines of the agenda body yourself (read_agenda returns raw markdown without line numbers). Read fellow://docs/fellow-markdown-syntax before writing new Fellow Markdown content.

ActionTry it

Edit agenda template

Update a saved agenda template. `content` replaces the whole template body, so call get_agenda_template first and send back the full text with your changes applied; title, summary, tags and visibility are changed only when supplied. Editing a template does not change any agenda it was previously applied to. Fellow's built-in (GLOBAL) templates cannot be edited. When you add a section to an existing template, match the shape of the sections already in it rather than imposing a new one. Read fellow://docs/fellow-markdown-syntax before composing the markdown content. How to write a good agenda template. A template is the reusable skeleton of a meeting, not a filled-in agenda. Anything that is only true of one occurrence of the meeting belongs in that meeting's agenda instead, so keep it out of the template. - Sections are headings, and the heading carries the guidance. Give the section a short name (one to three words) and put the question it answers on the same heading block after `<br>`, for example `# Blockers<br>What is in the way right now?`. Most sections in Fellow's built-in templates carry that second line and about half phrase it as a question; it is what tells whoever runs the meeting what to put there. - Leave the placeholders empty. Under each section put ONE empty talking point (`- ( )`) and nothing else, so there is a spot to type into. Do not pre-write talking points about a particular project, person, week, or number. - Do not write out action items. When a meeting always ends with next steps, the convention is a closing `# Action Items` section holding one empty `- [ ]`. The tasks themselves get captured live in the agenda while the meeting happens. - No assignees, due dates, mentions, or calendar dates anywhere in a template. The same template is reused every time the meeting runs, so nothing in it can point at one person or one occurrence. - Keep it short. Four to six sections is normal and a finished template runs about a dozen blocks. A template that reads like a completed agenda has too much in it. - The one exception is a standing question list: questions asked word for word every time the template is used, such as an onboarding interview or a recurring checklist. Those can be written out as talking points, because the wording does not change between occurrences. A typical template looks like this in full: ``` # Wins<br>What went well since we last met? - ( ) # Blockers<br>What is in the way right now? - ( ) # Action Items<br>What came out of this meeting? - [ ] ```

ActionTry it

Get action items

Get action items. By default returns only action items assigned to the requesting user. When meeting_ids are provided, defaults to returning ALL action items from those meetings (not just the ones assigned to the user) — pass only_mine=true to override this. Can also filter by date range, status, topic, or assignee scope.

ActionTry it

Get agenda template

Read one saved agenda template: its title, visibility, tags, summary, and its body as Fellow Markdown. Agenda templates are the named, reusable templates in the Fellow template library, not AI note/recap templates. Address the template by template_id (from search_agenda_templates) or, to read the template a series starts each of its notes from, by note_id, meeting_id, or stream_id. That template is an ordinary saved template the series points at, and other series may point at the same one. For syntax details about the returned markdown, read fellow://docs/fellow-markdown-syntax.

ActionTry it

Get channel details

Get detailed information about a specific channel. Returns channel information including: - Channel name, description, and type (public/private) - Member list (up to 20 members) - Member count - Creator information - Latest post/activity Use list_channels first to find the channel_id if you don't know it.

ActionTry it

Get meeting participants

Get all participants of a specific meeting, including both calendar event attendees and note users. This will help identify who is both an attendee and a note user, as well as who is only one or the other. No other tool will return the participants or attendees of a meeting.

ActionTry it

Get meeting summary

Get summaries of specific meetings. Use this when summaries including key points, action items, decisions, etc. of specific meetings are needed to answer the user's query. Summaries may include generated action items and these are not the same as real action items that could be retrieved using the get_action_items tool.

ActionTry it

Get meeting transcript

Get the transcript of a specific meeting. For meetings >= 15 minutes, consider specify start_time and end_time to retrieve only the relevant portion + some padding to be safe. Don't request the entire transcript unless: - The meeting is sufficiently short, OR - The user explicitly asks for the full transcript, OR - You need to search the entire meeting for a specific topic If specifying start/end times, make sure to grab enough context to answer the user's question in full with no gaps. MINIMUM TIME RANGE: 300s (5 minutes) MAXIMUM TIME RANGE: 3600s (60 minutes) Multi-part meetings: Some meetings have multiple recording parts (e.g., bot rejoined). Each part has its own timestamps starting at 0:00. Use recording_id from get_meeting_summary to target a specific part. Without recording_id, all parts are returned. Examples: - User asks "what did John say about the budget?" → Request transcript around the timestamp where budget was likely discussed based on summary/context (e.g. 4 min before, 6 min after). - User asks "summarize the meeting" → While you _can_ request the full 60-minute transcript at once, it is recommended to request transcript in 15-30 minute chunks, summarize each, and combine. Parameters: - meeting_id or note_id: Identifies the meeting - recording_id: Target a specific recording part (optional, use for multi-part meetings) - start_time: Start time in seconds from beginning of recording (optional but recommended) - end_time: End time in seconds from beginning of recording (optional but recommended)

ActionTry it

List channels

List available channels in the workspace. Use this tool to discover channels that can be used with the search_meetings tool's channel_id parameter. You can filter channels by name (partial match) or type (public/private). When you need to filter meeting searches by a specific channel, use this tool to find the channel_id, which can then be passed to search_meetings.

ActionTry it

Read agenda

Read an agenda as Fellow Markdown, with its base version. For syntax details about the returned markdown, read fellow://docs/fellow-markdown-syntax.

ActionTry it

Read resource

Fetch the contents of a Fellow MCP resource by its fellow:// URI. Other Fellow tool descriptions may reference resources by URI. If you have a built-in tool or mechanism for reading MCP resources, use that instead of this tool. Only use this tool if you have no other way to fetch an MCP resource.

ActionTry it

Rename agenda

Rename a Fellow agenda by setting a new title. This only changes the title; it does not modify the agenda body. Identify the agenda by note_id or by meeting_id (its calendar event).

ActionTry it

Search agenda templates

Find saved agenda templates by title. These are the named, reusable templates in the Fellow template library that a user picks from when starting a meeting note, not AI note/recap templates. Matching is a plain case-insensitive title substring, not a semantic search. Covers the caller's own templates, their workspace's, and Fellow's built-ins. Returns id, title, visibility, tags and summary. To read the template a particular series uses, call get_agenda_template with that meeting's note_id / meeting_id instead.

ActionTry it

Search meetings

Search for meetings. This tool searches across multiple data sources and combines the results: 1. Meeting Transcripts: Searches in the actual meeting recordings and their transcripts 2. Meeting Notes: Searches in the notes associated with meetings 3. Calendar Events: Searches in the calendar event titles and metadata 4. Database Events: Falls back to direct database queries when no specific search terms are provided For the from_date and to_date fields, unless the query requires specific values, in general you should default to a recent time range of a two month or so. If nothing is found, you can try again with a wider range. If the search result includes quotes with a start timestamp, whenever possible use that timestamp. 1. Meeting Transcripts: - title: Used for title matching. Optional. - transcript: Used for semantic search in transcript content. Optional. Meaning that you cannot search for transcripts without a query. For example, you can't search for quote from a speaker without a query. - transcript_speaker: Used to filter by speaker. Optional. - participant_emails: Used to filter by specific participants. Optional. - participant_email_domains: Used to filter by participant domains. Optional. - participant_full_names: Used to filter by specific participants. Optional. - has_external_participants: Used to filter external participants. Optional. - from_date: Used to filter by start date. Optional. - to_date: Used to filter by end date. Optional. 2. Past meeting summaries: - note_summary: Used for semantic search in meeting note summaries. Much more effective than using 'note' for finding relevant content in past meetings with summaries. Always use the user's full question/query for best results. Optional. - participant_emails: Used to filter by specific participants. Optional. - participant_email_domains: Used to filter by participant domains. Optional. - participant_full_names: Used to filter by specific participants. Optional. - has_external_participants: Used to filter external participants. Optional. - from_date: Used to filter by start date. Optional. - to_date: Used to filter by end date. Optional. 3. Meeting Notes: - title + note: Combined for full-text search. Optional. - participant_emails: Used to filter by specific participants. Optional. - participant_email_domains: Used to filter by participant domains. Optional. - participant_full_names: Used to filter by specific participants. Optional. - has_external_participants: Used to filter external participants. Optional. - from_date: Used to filter by start date. Optional. - to_date: Used to filter by end date. Optional. - has_summary: Used to filter notes that have a summary or not. Optional. - user_has_calendar_event: Used to filter notes corresponding or not to an event in user's calendar. Optional. 4. Calendar Events: - title: Used for title matching. Required. - from_date: Used to filter by start date. Optional. - to_date: Used to filter by end date. Optional. 5. Database Events: - Only used when no specific search terms are provided - Returns events within the date range without additional filtering - from_date: Used to filter by start date. Required. - to_date: Used to filter by end date. Required. If the note_id is provided, the search will be performed on the note with the given ID. This means that using all other parameters except 'transcript' and 'transcript_speaker' irrelevant. There is no point in filtering by meeting title for example if a note_id is provided. If the notestream_id or channel_id are provided this limits meetings a subset of all possible meetings the user has access to, but in this case using other parameters does make sense. The information you require to answer the user's query might be found in any of these sources. The results from all sources are combined and returned in descending order of relevance. You should strongly prefer to use the parameters 'note_summary', 'note', and 'transcript' all at once when searching for meetings, as this will give you more comprehensive results. They are used to retrieve data from different sources and combining them will give you a more complete picture of the meetings. They are NOT used to find meetings that meet all filters at the same time. Only use a single parameter if you have a specific reason to limit your search to one particular data source (e.g., when looking for a specific speaker's comments in transcripts). If you can't find relevant results after searching in using 'note_summary', 'note', and 'transcript', expand the time range to include more meetings. As a last resort, if 'has_summary' was set to True and didn't return relevant results, before replying to the user mentioning no results do perform another search with 'has_summary' set to False. It's very important for you to know that this will not return more than 32 results, even if more than 32 meetings match the query. Meaning that if the user asks for all upcoming meetings and you get 32 results, it doesn't mean that there are only 32 upcoming meetings, there could be more. Be proactive about explaining this to the user if you reach the limit of 32 results. Each result includes the meeting's ID, ID of the previous meeting in the series if applicable, title, start time, end time, note, meeting link, and summary. Summaries may include generated action items and these are not the same as real action items that could be retrieved using the get_action_items tool.

ActionTry it

Set default agenda template

Make a saved agenda template the default for a whole series, so every future note in that series starts from it. Existing agendas are left untouched. This has a wider blast radius than apply_agenda_template, which sets up one meeting only — prefer that one unless the user asks for the change to apply going forward. Identify the series by note_id, meeting_id, or stream_id.

ActionTry it

Write agenda

Write a Fellow agenda from markdown: overwrite an existing agenda's contents, or create the agenda for a calendar event if it does not exist yet. Preferred note format: when creating a note or writing into an empty agenda, structure it with top-level H1/H2 headings for sections, talking points (`- ( )`) for the discussion points under each section, and nested bullets (`- `) for the supporting detail beneath each talking point. This default applies ONLY to an empty agenda. If the agenda already has material content, do NOT impose it: mirror the note's existing structure, reusing the same heading style (or absence of headings), the same bullet/talking-point markers, and the same section pattern already present. Read fellow://docs/fellow-markdown-syntax before composing the markdown content.

ActionTry it

How the Fellow.ai MCP integration works

The Fellow.ai MCP integration connects your Dench AI CRM directly to Fellow.ai MCP, so agents can read and act on your Fellow.ai MCP data as part of everyday work — answering questions in chat, keeping your CRM in sync, and running automations without anyone copying data between tools.

19 actions are available for agents to invoke on your behalf. Every call runs through Fellow.ai MCP's own authorization, scoped to the account you connect.

Set up Fellow.ai MCP in Dench

  1. 1

    Sign in to your Dench workspace and open Integrations.

  2. 2

    Find Fellow.ai MCP and click Connect — you'll authorize access through Fellow.ai MCP's own sign-in flow. No API keys or code required.

  3. 3

    Ask an agent to use Fellow.ai MCP in chat, or call it from an automation.

  4. 4

    Manage or disconnect the connection any time from workspace settings.

Frequently asked questions

How does the Fellow.ai MCP integration work with Dench?

The Dench Fellow.ai MCP integration connects your AI CRM to Fellow.ai MCP, so AI agents can work with your Fellow.ai MCP data as part of chats, automations, and CRM workflows. You connect your account once, and every agent in your workspace can use it — governed by your workspace permissions.

What actions can AI agents perform with Fellow.ai MCP via Dench?

The Fellow.ai MCP integration currently exposes 19 actions, including Apply agenda template, Create agenda template, Delete agenda template, Edit agenda, Edit agenda template, and Get action items. Agents invoke them on your behalf from chat or from automations.

Do I need to write code to connect Fellow.ai MCP to Dench?

No. You connect Fellow.ai MCP from your Dench workspace using Fellow.ai MCP's own sign-in and authorization flow — no API keys to copy, no glue code to maintain.

Is the Fellow.ai MCP integration secure?

Connections are authorized through Fellow.ai MCP's own authentication flow, and Dench stores only the authorization needed to act on your behalf. You can review and disconnect the Fellow.ai MCP connection from your workspace settings at any time.

Fellow.ai MCP | Dench AI CRM