Fellow.ai MCP

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

19 actions Integration catalog
Request access
Connect Fellow.ai MCP once you're in Boring.
01 · WHAT THE AGENT CAN DO

Actions

Every capability is a discrete, logged action the agent calls by name — scoped to what you authorize and recorded in the run trace.

Apply agenda templateFELLOW_AI_MCP_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.
Create agenda templateFELLOW_AI_MCP_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? - [ ] ```
Delete agenda templateFELLOW_AI_MCP_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.
Edit agendaFELLOW_AI_MCP_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.
Edit agenda templateFELLOW_AI_MCP_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? - [ ] ```
Get action itemsFELLOW_AI_MCP_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.
Get agenda templateFELLOW_AI_MCP_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.
Get channel detailsFELLOW_AI_MCP_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.
Get meeting participantsFELLOW_AI_MCP_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.
Get meeting summaryFELLOW_AI_MCP_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.
Get meeting transcriptFELLOW_AI_MCP_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)
List channelsFELLOW_AI_MCP_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.
Read agendaFELLOW_AI_MCP_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.
Read resourceFELLOW_AI_MCP_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.
Rename agendaFELLOW_AI_MCP_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).
Search agenda templatesFELLOW_AI_MCP_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.
Search meetingsFELLOW_AI_MCP_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.
Set default agenda templateFELLOW_AI_MCP_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.
Write agendaFELLOW_AI_MCP_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.