Skip to content
Scalekit Docs
Talk to an Engineer Dashboard

FellowAI MCP connector

OAuth 2.1/DCR ProductivityProject 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).

Name Type Required Description
check_for_team_action_items string optional Set 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_date string optional The 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_overdue string optional Set this value to true if user wants only overdue action items. Optional
meeting_ids string optional List 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_id string optional The ID of the note to filter action items by. Optional
notestream_id string optional The ID of the notestream to filter action items by. Optional
only_completed_action_items string optional Set this value to true if user wants only completed/done action items. Optional
only_ongoing_action_items string optional Set this value to true, if user only wants to get ongoing action items. Optional
to_date string optional The 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.
topic string optional The 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.

Name Type Required Description
channel_id integer required The 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.

Name Type Required Description
meeting_id string optional The ID of the meeting to get the participants for. Optional
note_id string optional The 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.

Name Type Required Description
meeting_ids string optional List of meeting IDs to get summaries for. Must be provided as an array/list, for example: ['meeting_id_1', 'meeting_id_2']. Optional.
note_id string optional The 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.

Name Type Required Description
end_time string optional End 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_id string optional The ID of the meeting to get the transcript for. Optional
note_id string optional The ID of the note to get the transcript for. Optional
recording_id string optional The ID of a specific recording/part to get. Optional. Use this for multi-part meetings when you need a specific part's transcript.
start_time string optional Start 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.

Name Type Required Description
name string optional Optional filter: channel name (case-insensitive partial match)
type string optional Optional 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.

Name Type Required Description
channel_id string optional The 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_date string optional The 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_participants string optional Whether to filter meetings that have external participants. Optional.
has_summary string optional Whether 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.
note string optional A search query to match against meeting notes content. Used to search in meeting notes content. Optional but recommended.
note_id string optional The ID of the note to filter the meetings by. Optional.
note_summary string optional A 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_id string optional The ID of the note stream to filter the meetings by. Optional.
participant_email_domains string optional List 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_emails string optional List 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_names string optional List of full names to filter meetings by participants (AND match). Must be provided as an array/list, for example: ['John Smith', 'Jane Doe']. Optional.
title string optional A simple keyword based search query to match against meeting titles. Used to search in meeting titles across all sources. Optional.
to_date string optional The 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.
transcript string optional A search query to match against meeting transcripts. Used to perform semantic search in meeting transcripts quotes. This does not include the speaker. Optional.
transcript_speaker string optional The 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_event string optional IMPORTANT: 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.