Skip to content
Scalekit Docs
Talk to an Engineer Dashboard

FellowAI MCP connector

OAuth 2.1/DCRProductivityProject Management

Connect to Fellow.ai MCP to manage meeting notes, action items, agendas, and team collaboration workflows directly from your AI agent.

FellowAI MCP connector

  1. Terminal window
    npm install @scalekit-sdk/node

    Full SDK reference: Node.js | Python

  2. Add your Scalekit credentials to your .env file. 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>
  3. Register your FellowAI MCP credentials with Scalekit so it handles the token lifecycle. You do this once per environment.

    Dashboard setup steps

    FellowAI MCP uses Dynamic Client Registration (DCR) — no client ID or secret is required. The only step is creating a connection in Scalekit and authorizing your Fellow.ai account.

    1. Create a connection in Scalekit

      • In the Scalekit dashboard, go to AgentKitConnectionsCreate Connection.
      • Search for FellowAI MCP and click Create.
      • Note the Connection name — use this as connection_name in your code (e.g., fellowaimcp).
    2. Authorize your Fellow.ai account

      Generate an authorization link and open it in a browser to complete the Fellow.ai OAuth flow.

      The user is redirected to Fellow.ai to sign in and grant access. Scalekit stores the token and injects it automatically into every tool call — no further configuration is needed.

  4. quickstart.ts
    import { ScalekitClient } from '@scalekit-sdk/node'
    import 'dotenv/config'
    const scalekit = new ScalekitClient(
    process.env.SCALEKIT_ENV_URL,
    process.env.SCALEKIT_CLIENT_ID,
    process.env.SCALEKIT_CLIENT_SECRET,
    )
    const actions = scalekit.actions
    const connector = 'fellowaimcp'
    const identifier = 'user_123'
    // Generate an authorization link for the user
    const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
    console.log('Authorize FellowAI MCP:', link)
    process.stdout.write('Press Enter after authorizing...')
    await new Promise(r => process.stdin.once('data', r))
    // Make your first call
    const result = await actions.executeTool({
    connector,
    identifier,
    toolName: 'fellowaimcp_get_action_items',
    toolInput: {},
    })
    console.log(result)

Connect this agent connector to let your agent:

  • Search meetings — Search for meetings across calendar events and notes, with filters for participants, date range, content, and summary
  • List channels — List all available channels in the workspace, optionally filtered by name or type
  • Get meeting transcript, meeting summary, meeting participants — Retrieve the transcript of a meeting

Search for recent meetings

Use fellowaimcp_search_meetings to find meetings by title, date range, participants, or content. Set user_has_calendar_event: true to search only the current user’s own meetings.

const meetings = await actions.executeTool({
connectionName: 'fellowaimcp',
identifier: 'user_123',
toolName: 'fellowaimcp_search_meetings',
toolInput: {
from_date: '2024-01-01',
to_date: '2024-01-31',
user_has_calendar_event: true,
has_summary: true,
},
});
console.log(meetings);

Get a meeting summary

Use fellowaimcp_get_meeting_summary to retrieve AI-generated summaries for one or more meetings, including key points, decisions, and action items.

const summary = await actions.executeTool({
connectionName: 'fellowaimcp',
identifier: 'user_123',
toolName: 'fellowaimcp_get_meeting_summary',
toolInput: {
meeting_ids: ['meeting_abc123'],
},
});
console.log(summary);

Fetch overdue action items

Use fellowaimcp_get_action_items to retrieve action items assigned to the user, filtered by status or date range.

const actionItems = await actions.executeTool({
connectionName: 'fellowaimcp',
identifier: 'user_123',
toolName: 'fellowaimcp_get_action_items',
toolInput: {
is_overdue: true,
},
});
console.log(actionItems);

Use the exact tool names from the Tool list below when you call execute_tool. If you’re not sure which name to use, list the tools available for the current user first.

fellowaimcp_get_action_items#Fetch action items assigned to the user, filtered by date range or status (overdue, completed, or ongoing).10 params

Fetch action items assigned to the user, filtered by date range or status (overdue, completed, or ongoing).

NameTypeRequiredDescription
check_for_team_action_itemsstringoptionalSet this value to true if user wants to check for action items assigned to the user's team. Only works if user is a manager. Optional
from_datestringoptionalThe start date of the range to get the action items from. Must be a valid ISO 8601 date string. Optional Field, if not provided, it will be ignored.
is_overduestringoptionalSet this value to true if user wants only overdue action items. Optional
meeting_idsstringoptionalList of meeting IDs to filter action items by. Must be provided as an array/list, for example: ['meeting_id_1', 'meeting_id_2']. Optional.
note_idstringoptionalThe ID of the note to filter action items by. Optional
notestream_idstringoptionalThe ID of the notestream to filter action items by. Optional
only_completed_action_itemsstringoptionalSet this value to true if user wants only completed/done action items. Optional
only_ongoing_action_itemsstringoptionalSet this value to true, if user only wants to get ongoing action items. Optional
to_datestringoptionalThe end date of the range to get the action items from. Must be a valid ISO 8601 date string. Optional Field, if not provided, it will be ignored.
topicstringoptionalThe topic of the action items to get. Optional
fellowaimcp_get_channel_details#Retrieve detailed information about a specific channel by its ID.1 param

Retrieve detailed information about a specific channel by its ID.

NameTypeRequiredDescription
channel_idintegerrequiredThe ID of the channel to get details for. Use list_channels to find channel IDs.
fellowaimcp_get_meeting_participants#Retrieve all participants of a meeting, including calendar attendees and note users.2 params

Retrieve all participants of a meeting, including calendar attendees and note users.

NameTypeRequiredDescription
meeting_idstringoptionalThe ID of the meeting to get the participants for. Optional
note_idstringoptionalThe ID of the note to get the participants for. Optional
fellowaimcp_get_meeting_summary#Fetch summaries for one or more meetings, including key points, decisions, and action items.2 params

Fetch summaries for one or more meetings, including key points, decisions, and action items.

NameTypeRequiredDescription
meeting_idsstringoptionalList of meeting IDs to get summaries for. Must be provided as an array/list, for example: ['meeting_id_1', 'meeting_id_2']. Optional.
note_idstringoptionalThe ID of the note to get the summary for. Optional
fellowaimcp_get_meeting_transcript#Retrieve the transcript of a meeting. For meetings 15+ minutes, use start_time and end_time to fetch a specific segment.5 params

Retrieve the transcript of a meeting. For meetings 15+ minutes, use start_time and end_time to fetch a specific segment.

NameTypeRequiredDescription
end_timestringoptionalEnd time from beginning of recording (seconds, MM:SS, or HH:MM:SS format). If specified, minimum time range of 300s (5 minutes) is required.
meeting_idstringoptionalThe ID of the meeting to get the transcript for. Optional
note_idstringoptionalThe ID of the note to get the transcript for. Optional
recording_idstringoptionalThe ID of a specific recording/part to get. Optional. Use this for multi-part meetings when you need a specific part's transcript.
start_timestringoptionalStart time from beginning of recording (seconds, MM:SS, or HH:MM:SS format). If specified, minimum time range of 300s (5 minutes) is required.
fellowaimcp_list_channels#List all available channels in the workspace, optionally filtered by name or type.2 params

List all available channels in the workspace, optionally filtered by name or type.

NameTypeRequiredDescription
namestringoptionalOptional filter: channel name (case-insensitive partial match)
typestringoptionalOptional filter: channel type (public or private)
fellowaimcp_search_meetings#Search for meetings across calendar events and notes, with filters for participants, date range, content, and summary.16 params

Search for meetings across calendar events and notes, with filters for participants, date range, content, and summary.

NameTypeRequiredDescription
channel_idstringoptionalThe ID of the channel to filter the meetings by. This is used to limit the search to a subset of all possible meetings the user has access to. Optional.
from_datestringoptionalThe start date of the range to get meetings from (inclusive). ISO 8601 date string format. Used to filter meetings by start date. Optional but its use it's highly recommended.
has_external_participantsstringoptionalWhether to filter meetings that have external participants. Optional.
has_summarystringoptionalWhether to filter meetings that have a summary or not. If you are trying to answer a question that depends on meeting content, most of the time you will want to use this since most meetings without summary are not useful. If you don't get the results you expect, you can try again without this parameter but using 'note'. Optional.
notestringoptionalA search query to match against meeting notes content. Used to search in meeting notes content. Optional but recommended.
note_idstringoptionalThe ID of the note to filter the meetings by. Optional.
note_summarystringoptionalA semantic search query to search within meeting note summaries. This should be used specifically for searching past meetings with generated summaries. For best results, include the core of the user's question or prompt here rather than just keywords, as the semantic search works better with full context. If the question include things covered by other parameter like attendees, meeting title, etc, rephrase the question to NOT include those. Ideally this should be used in conjunction with the keyword based search of 'note' since some notes may have the relevant information but have no summaries. If no results are found with 'note_summary' or 'has_external_participants', use 'note'. Optional but recommended.
notestream_idstringoptionalThe ID of the note stream to filter the meetings by. Optional.
participant_email_domainsstringoptionalList of email domains to filter meetings by participant domains (AND match). Must be provided as an array/list, for example: ['company.com', 'partner.com']. Optional.
participant_emailsstringoptionalList of email addresses to filter meetings by participants (AND match). Must be provided as an array/list, for example: ['user1@company.com', 'user2@company.com']. Optional.
participant_full_namesstringoptionalList of full names to filter meetings by participants (AND match). Must be provided as an array/list, for example: ['John Smith', 'Jane Doe']. Optional.
titlestringoptionalA simple keyword based search query to match against meeting titles. Used to search in meeting titles across all sources. Optional.
to_datestringoptionalThe end date of the range to get meetings from (inclusive). ISO 8601 date string format. Used to filter meetings by end date. If it's obvious that the thing we are looking for is in the past, do set this field to the current date. Optional but its use it's highly recommended.
transcriptstringoptionalA search query to match against meeting transcripts. Used to perform semantic search in meeting transcripts quotes. This does not include the speaker. Optional.
transcript_speakerstringoptionalThe speaker to filter the transcripts by. It could be someone who is mentioning somebody or something. Use this parameter to filter transcripts by a specific speaker's name. This is particularly useful when searching for statements or mentions made by a particular person. Optional.
user_has_calendar_eventstringoptionalIMPORTANT: Set this to True when the user asks about their OWN meetings. This includes phrases like: 'my meetings', 'meetings I had', 'meetings I attended', 'meetings on my calendar', 'my calls', 'meetings I was in', or any query that implies the user wants meetings they personally participated in (not just meetings they have access to). When True, results are filtered to only include meetings where the user was an invited attendee.